1) DDL
Data Definition Language
테이블 CREATE, ALTER, DROP
자동 COMMIT됨
2) DDL 종류
CTRATE
ALTER
DROP
RENAME
3) CREATE(테이블 생성)
방법 1.
CREATE TABLE 테이블명(
col1 type [DEFAULT val CONSTRAINT 조건]
...
);
DEFAULT: 해당 컬럼의 기본값을 설정한다. 생략시 NULL
CONSTRAINT: 제약조건을 설정한다.
제약조건의 종류
NOT NULL: NULL이 들어갈 수 없다
UNIQUE: 컬럼 내 유일한 값이어야 한다(중복X)
PRIMARY KEY: 고유키. 한 행을 유일하게 식별가능할 수 있게 하는 값(UNIQUE+ NOT NULL)
REFERENCES 부모테이블명(컬럼명): FK. 참조키
CHECK(조건식): 조건에 해당하는 값만 INSERT할 수 있다.
방법 2.
CREATE TABLE 테이블명)
col1 typr [DEFAULT val]
...
[CONSTRAINT 제약조건명]
);
제약조건명의 종류
PRIMARY KEY(col): 해당 col을 PK로 설정
FOREIGN KEY(col) REFERENCES 부모테이블명(col): 해당 col을 FK로 설정
UNIQUE(col): 해당 col을 unique로 설정
CHECK(col 조건식): 해당 컬럼을 조건에 맞는 값만 삽입할 수 있게 설정
FOREIGN KEY 추가옵션:
CONSTRAINT 제약조건명 REFERENCES 테이블명(col)
ON DELETE CASCADE
-> 부모 테이블의 행이 삭제되명 자식 테이블의 참조행도 함께 삭제
CONSTRAINT 제약조건명 REFERENCES 테이블명(col)
ON DELETE SET NULL
-> 부모 테이블의 행이 삭제되명 자식 테이블의 참조행은 NULL로 변경
CONSTRAINT 제약조건명 REFERENCES 테이블명(col)
ON DELETE SET DEFAULT
-> 부모 테이블의 행이 삭제되명 자식 테이블의 참조행은 DEFAULT값으로 변경
CONSTRAINT 제약조건명 REFERENCES 테이블명(col)
ON DELETE RESTRICT
-> 자식 테이블에 참조행이 남아있을 경우 부모테이블 행 삭제 불가
방법 3.
CTAS
이미 존재하는 테이블에서 테이블 구조만 가져옴(제약조건, 기본값은 가져오지 않음)
CREATE TABLE 테이블명 [col1, col2, ...]
AS
SELECT *
FROM 기존 테이블명
WHERE 1= 2;
1=2는 항상 FALSE이기 때문에 테이블의 데이터를 가져오지 않는다.
4) DROP(테이블 삭제)
DROP TABLE 테이블명 [CASCADE CONSTRAINTS];
CASCADE CONSTRAINTS: 제약조건까지 함께 삭제
-> 자식 테이블 유지
5) ALTER(테이블 변경)
(1) 컬럼 추가
ALTER TABLE 테이블명
ADD(
col1 type
...
);
기본값은 NULL
(2) 기존컬럼 타입, 크기, DEFAULT값 변경
ALTER TABLE 테이블명
MODIFY(
col1 type [DEFAULT val]
...
);
* 축소, 타입변경은 해당 값이 모두 NULL이거나 행이 없을 때만 가능
(3) 컬럼삭제
ALTER TABLE 테이블명
DROP(
col1
...
);
값의 존재 여부는 상관없음
(4) 제약조건 추가
ALTER TABLE 테이블명
ADD [CONSTRAINT 제약조건명] 제약조건
제약조건의 종류
PRIMARY KEY (col)
UNIQUE
CHECK(조건식)
FOREIGN KEY
* NOT NULL은 불가하다.
NOT NULL 추가방법
ALTER TABLE 테이블명
MODIFY(
col1 type [DEFAULT val CONSTRAINT 제약조건명] NOT NULL
);
(5) 제약조건 삭제
ALTER TABELE 테이블명
DROP(제약조건);
제약조건의 종류
PRIMARY KEY (col)
UNIQUE
CONSTRAINT 제약조건명 [CASCADE]
제약조건명에 NOT NULL, CHECK, FOREIGN KEY의 제약조건명을 넣는다.
CASCADE는 제약조건이 PRIMARY KEY, FOREIGN KEY일 때 사용
(6) 제약조건 활성화/비활성화
ALTER TABLE 테이블명
DISABLE | ENABLE CONSTRAINT 제약조건명 [CASCADE];
(7) 컬럼명 변경
ALTER TABLE 테이블명
RENAME COLUMN 기존컬럼명 TO 새컬럼명;
6) RENAME(테이블명 변경)
RENAME 기존테이블명 TO 새테이블명;
'데이터분석 > SQL' 카테고리의 다른 글
Join- ANSI Join (0) | 2020.09.02 |
---|---|
Join- ORACLE Join (0) | 2020.09.02 |
DCL (0) | 2020.09.02 |
TCL (0) | 2020.09.02 |
DML (0) | 2020.09.02 |