[SQL] DDL의 모든 것
DDL은 Data Definition Language의 약자로, 데이터를 정의하는 명령어이다. DDL은 CREATE, ALTER, DROP, RENAME, TRUNCATE가 있다.
Aug 27, 2024
DDL은 Data Definition Language의 약자로, 데이터를 정의하는 명령어이다. DDL은
CREATE
, ALTER
, DROP
, RENAME
, TRUNCATE
가 있다.✅ 1. CREATE☑️ 1) 사용법☑️ 2) 테이블 생성 법칙☑️ 3) 제약 조건✅ 2. ALTER☑️ 1) ADD COLUMN☑️ 2) DROP COLUMN☑️ 3) MODIFY COLUMN☑️ 4) RENAME COLUMN☑️ 5) ADD CONSTRAINT✅ 3. DROP TABLE✅ 4. RENAME TABLE✅ 5. TRUNCATE TABLE
✅ 1. CREATE
☑️ 1) 사용법
CREATE TABLE 테이블명 ( 컬럼명1 데이터타입 제약조건, ... );
- 컬럼명: 테이블의 컬럼 이름을 지정한다.
- 데이터타입: 해당 컬럼의 데이터 유형을 지정한다.
- 제약조건: default 값, null 허용 여부 등의 제약조건을 지정한다.
☑️ 2) 테이블 생성 법칙
테이블 생성 시 지켜야 하는 규칙 7가지
- 테이블명은 고유해야 한다.
- 한 테이블 내에서 컬럼명은 고유해야 한다.
- 컬럼명 뒤에 데이터 유형과 데이터 크기가 명시되어야 한다.
- 컬럼에 대한 정의는
()
안에 기술한다.
- 각 컬럼들은
,
로 구분된다.
- 테이블명과 컬럼명은 숫자로 시작될 수 없다.
- 마지막은
;
로 끝난다.
☑️ 3) 제약 조건
PRIMARY KEY(기본키) | 테이블에 저장된 각 행에 대한 고유성을 보장한다. 한 테이블에 1개만 설정 가능하고 NULL 값이 입력될 수 없다. |
UNIQUE KEY(고유키) | PRIMARY KEY와 유사하지만, NULL 값이 입력될 수 있다는 차이가 있다. |
FOREIGN KEY(외래키) | 한 테이블이 다른 테이블을 참조할 때 사용한다. |
NOT NULL | 해당 컬럼에 NULL 값이 입력될 수 없도록 설정한다. |
CHECK | 해당 컬럼에 저장될 수 있는 값의 범위를 제한한다. |
FOREIGN KEY 주의점
EMP
테이블의 deptno
컬럼이 DEPT
테이블의 deptno
컬럼을 참조하고 있을 때, EMP
테이블의 deptno
값은 DEPT
테이블의 deptno
에 반드시 존재해야 한다. 이와 관련된 참조 무결성 제약 옵션은 아래와 같이 선택 가능하다.
CASCADE | Parent 값 삭제 시 Child 값도 같이 삭제 |
SET NULL | Parent 값 삭제 시 Child의 해당 컬럼 값으로 NULL 삽입 |
SET DEFAULT | Parent 값 삭제 시 Child의 해당 컬럼을 Default 값으로 설정 |
RESTRICT | Child 테이블에 해당 데이터가 PK로 존재하지 않는 경우에만 Parent 값 삭제 및 수정 가능 |
NO ACTION | 참조 무결성 제약이 걸려있는 경우 삭제 및 수정 불가능 |
✅ 2. ALTER
테이블의 구조를 변경할 때 사용하는 명령어이다.
보통, 한 번 생성된 테이블의 구조는 변경하지 않는 것이 일반적이지만, 불가피하게 변경을 해야 하는 경우가 발생할 수 있다.
기존 우편번호는 000-000 형식이었기 때문에 CODE1, CODE2 이렇게 두 개의 컬럼으로 나누어 저장하는 방식이 많았지만, 이제는 하나의 컬럼으로 통합하여 사용하는 추세이다.
☑️ 1) ADD COLUMN
새로운 컬럼을 추가할 때 쓰는 명령어이다. 추가된 컬럼의 위치는 항상 맨 끝이며, 위치를 지정할 수 없다.
ALTER TABLE 테이블명 ADD 컬럼명 데이터유형;
☑️ 2) DROP COLUMN
기존에 있던 컬럼이 필요 없어졌을 때 삭제하는 명령어이다. 한 번 삭제한 컬럼은 복구할 수 없으므로 주의하자!
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
☑️ 3) MODIFY COLUMN
기존에 있던 컬럼을 변경할 때 사용한다.
변경할 때 주의할 점
- 데이터 유형, DEFAULT 값, NOT NULL 제약조건 등에 대한 변경이 가능하다.
- 컬럼에 저장된 모든 데이터의 크기가 줄이고자 하는 컬럼의 크기보다 작은 경우에만 줄일 수 있다.
- 컬럼에 저장된 데이터가 없는 경우에만 데이터 유형을 변경할 수 있다.
- DEFAULT 값 변경 시 변경 이후 저장되는 데이터에만 적용된다.
- 현재 NULL 값이 저장되어 있지 않은 컬럼에만 NOT NULL 제약 조건 추가가 가능하다.
- 데이터 크기를 늘리는 것은 데이터와 상관없이 가능하다!
ALTER TABLE 테이블명 MODIFY (컬럼명1 데이터유형[DEFAULT 값] [NOT NULL], 컬럼명2, 데이터유형, ...);
☑️ 4) RENAME COLUMN
기존에 있던 컬럼의 이름을 변경하고 싶을 때 사용한다.
ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 변경할컬럼명;
☑️ 5) ADD CONSTRAINT
제약조건을 추가하고 싶을 때 사용하는 명령어이다.
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건 (컬럼명);
✅ 3. DROP TABLE
테이블을 삭제할 때 사용하는 명령어이다.
만약, 해당 테이블을 참조하고 있는 다른 테이블이 존재하는 경우
CASCADE
옵션을 명시하지 않으면 삭제되지 않는다. CASCADE CONSTRAINT
는 참조 제약조건도 함께 삭제한다는 의미이다. DROP TABLE 테이블명 [CASCADE CONSTRAINT]
✅ 4. RENAME TABLE
테이블명을 변경할 때 사용하는 명령어이다.
RENAME 기존테이블명 TO 변경할 테이블명;
✅ 5. TRUNCATE TABLE
테이블에 저장되어 있는 데이터를 모두 제거하는 명령어이다.
DELETE
명령어와 유사하지만, 저장 공간이 재사용되도록 초기화한다는 차이점이 있고 ROLLBACK
이 불가능하다. → DDL로 분류TRUNCATE TABLE 테이블명;
Share article