SQL에는 테이블 생성, 변경, 제거와 같이 데이터를 정의하는 DDL (Data Definition Language), 테이블에 데이터를 입력/조회/수정/삭제와 같은 데이터 조작 기능을 수행하는 DML (Data Manipulation Language), 그리고 사용자들의 권한을 관리하는 DCL (Data Control Language)로 구분할 수 있다.
명령어 분류 | 명령어 | 설명 |
DDL (Data Definition Language) 데이터 정의어 |
CREATE | 테이블을 생성한다. |
ALTER | 테이블을 변경한다. | |
DROP | 테이블을 제거한다. | |
TRUNCATE | 테이블 안의 모든 데이터를 삭제한다. | |
DML (Data Manipulation Language) 데이터 조작어 |
INSERT | 데이터를 입력한다. |
UPDATE | 데이터를 수정한다. | |
DELETE | 데이터를 삭제한다. | |
SELECT | 데이터를 조회한다. | |
DCL (Data Control Language) 데이터 제어어 |
GRANT | 사용자에게 권한을 부여한다. |
REVOKE | 사용자에게 주었던 권한을 취소한다. |
실습
테이블 생성
CREATE TABLE 테이블명
(
속성1 데이터타입 제약조건,
속성2 데이터타입 제약조건,
…
제약조건 지정
);
ex. 고객ID, 고객명, 성별, 생년월일, 고객전화번호, 고객주소를 속성으로 갖는 고객정보 테이블을 생성하라. 단, 고객ID는 기본 키로 널값을 허용하지 않게 지정. (생년월일 속성은 DATE로 지정하고, 나머지 속성은 VARCHAR2(60) 데이터 타입으로 지정.)
CREATE TABLE 고객정보
(
고객ID VARCHAR2(60) NOT NULL,
고객명 VARCHAR2(60),
성별 VARCHAR2(60),
생년월일 DATE,
고객전화번호 VARCHAR2(60),
고객주소 VARCHAR2(60),
CONSTRAINT 고객_PK PRIMARY KEY (고객ID)
);
테이블 컬럼 추가
ALTER TABLE 테이블명
ADD(추가하려는 컬럼 이름 데이터 타입 널 여부);
ex. 고객정보 테이블에 ‘멤버십등급’ 컬럼을 추가하라. (데이터 타입은 VARCHAR2(60)로 지정하라.)
ALTER TABLE 고객정보
ADD(멤버십등급 VARCHAR2(60));
데이터 타입 수정
ALTER TABLE 테이블명
MODIFY(변경하고자 하는 컬럼명 또는 데이터 타입);
ex. 고객정보 테이블에 ‘성별’ 컬럼의 데이터 타입을 CHAR(3)으로 바꾸어라.
ALTER TABLE 고객정보
MODIFY(성별 CHAR(3));
테이블 컬럼 삭제
ALTER TABLE 테이블명
DROP(컬럼명);
ex. 고객정보 테이블에서 멤버십 등급 컬럼을 삭제하라.
ALTER TABLE 고객정보
DROP(멤버십등급);
테이블 컬럼 이름 변경
ALTER TABLE 테이블명
RENAME COLUMN 기존 컬럼명 TO 변경 컬럼명;
ex. 고객정보 테이블의 ‘고객ID’ 컬럼을 ‘고객코드’로 컬럼 이름을 변경하라.
ALTER TABLE 고객정보
RENAME COLUMN 고객ID TO 고객코드;
데이터 입력
INSERT INTO 테이블명(컬럼1, 컬럼2, 컬럼3 …)
VALUES(‘컬럼1 데이터’, ‘컬럼2 데이터’, ‘컬럼3 데이터’ …);
ex. 고객정보, 상품정보, 구매정보, 구매상품구성정보 테이블에 대해 각각 데이터를 입력하라. 입력 데이터는 아래 SQL 문의 내용을 참조하라.
[고객정보]
INSERT INTO 고객정보(고객ID, 고객명, 성별, 생년월일, 고객전화번호, 고객주소) VALUES('C0001', '최정민', '0', '1994-05-25', '010-3893-9294', '서울시 강동구 명일동');
INSERT INTO 고객정보(고객ID, 고객명, 성별, 생년월일, 고객전화번호, 고객주소) VALUES('C0002', '김수미', '1', '1964-09-15', '010-5039-3042', '서울시 강남구 역삼동');
INSERT INTO 고객정보(고객ID, 고객명, 성별, 생년월일, 고객전화번호, 고객주소) VALUES('C0003', '박성철', '0', '1984-11-30', '010-0921-4212', '서울시 은평구 불광동');
[상품정보]
INSERT INTO 상품정보(상품코드, 상품명, 상품카테고리, 상품정가) VALUES('1_T', '티셔츠', '의류', 36000);
INSERT INTO 상품정보(상품코드, 상품명, 상품카테고리, 상품정가) VALUES('2_J', '장갑', '잡화', 145000);
INSERT INTO 상품정보(상품코드, 상품명, 상품카테고리, 상품정가) VALUES('3_D', '선크림', '화장품', 25000);
INSERT INTO 상품정보(상품코드, 상품명, 상품카테고리, 상품정가) VALUES('4_D', 'TV', '가전제품', 3140000);
INSERT INTO 상품정보(상품코드, 상품명, 상품카테고리, 상품정가) VALUES('5_C', '휴지', '생활용품', 9800);
[구매정보]
INSERT INTO 구매정보(구매코드, 고객ID, 지점코드, 구매일, 총구매가격)
VALUES('P0001', 'C0001', 'B08','2016-05-08', 59800);
INSERT INTO 구매정보(구매코드, 고객ID, 지점코드, 구매일, 총구매가격)
VALUES('P0002', 'C0002', 'B01','2016-12-21', 181000);
INSERT INTO 구매정보(구매코드, 고객ID, 지점코드, 구매일, 총구매가격)
VALUES('P0003', 'C0003', 'B03','2016-07-11', 3140000);
[구매상품구성정보]
INSERT INTO 구매상품구성정보(구매상품구성코드, 구매코드, 상품코드, 수량, 소계금액)
VALUES('PL001', 'P0001', '3_D', 2, 50000);
INSERT INTO 구매상품구성정보(구매상품구성코드, 구매코드, 상품코드, 수량, 소계금액)
VALUES('PL002', 'P0001', '5_C', 1, 9800);
INSERT INTO 구매상품구성정보(구매상품구성코드, 구매코드, 상품코드, 수량, 소계금액)
VALUES('PL003', 'P0002', '2_J', 1, 145000);
INSERT INTO 구매상품구성정보(구매상품구성코드, 구매코드, 상품코드, 수량, 소계금액)
VALUES('PL004', 'P0002', '1_T', 1, 36000);
INSERT INTO 구매상품구성정보(구매상품구성코드, 구매코드, 상품코드, 수량, 소계금액)
VALUES('PL005', 'P0003', '4_D', 1, 3140000);
데이터 조회
SELECT 컬럼명
FROM 테이블명
WHERE 조건
ex. 고객정보 테이블에서 고객ID, 성별, 생년월일을 추출하라.
SELECT 고객ID, 성별, 생년월일
FROM 고객정보;
데이터 수정
UPDATE 테이블명
SET 컬럼 = ‘수정 값’
WHERE 조건;
ex.고객정보 테이블에서 ‘최정민’ 고객의 전화번호를 ‘010-2013-4327’로 수정하라.
UPDATE 고객정보
SET 고객전화번호 = '010-2013-4327'
WHERE 고객명 = '최정민';
데이터 삭제
ALTER TABLE 테이블명 DROP CONSTRAINT {기본 키 이름/외부 키 이름};
ex. 기본 키 및 외부 키의 조건을 제거해라
[외부 키 삭제]
ALTER TABLE 구매정보 DROP CONSTRAINT 구매_고객_FK;
ALTER TABLE 구매상품구성정보 DROP CONSTRAINT 구매상품_구매_FK;
ALTER TABLE 구매상품구성정보 DROP CONSTRAINT 구매상품_상품_FK;
[기본 키 삭제]
ALTER TABLE 고객정보 DROP CONSTRAINT 고객_PK;
ALTER TABLE 상품정보 DROP CONSTRAINT 상품_PK;
ALTER TABLE 구매정보 DROP CONSTRAINT 구매_PK;
ALTER TABLE 구매상품구성정보 DROP CONSTRAINT 구매상품구성_PK;
조건에 맞는 데이터 삭제
DELETE FROM 테이블명
WHERE 조건;
테이블의 모든 데이터 삭제
TRUNCATE TABLE 테이블명;
테이블 제거
DROP TABLE 테이블명;
This post was written based on what I read and studied the book below.
댓글