[데이터베이스] 데이터 정의어(DDL) - CREATE, ALTER, DROP

데이터 정의어(DDL: data definition language)


☾ 데이터 정의어

테이블이나 관계의 구조를 생성하는 데 사용

CREATE, ALTER DROP문 등

 

 

 

 CREATE

테이블 생성

속성과 속성에 관한 제약 정의

기본키 및 외래키 정의

CREATE TABLE 테이블이름 (
속성이름  데이터타입 [NULL | NOT NULL | UNIQUE | DEFAULT 기본값 | CHECK 체크조건]
[PRIMARY KEY 속성이름]
[FOREIGN KEY 속성이름 REFERENCES 테이블이름(속성이름) [ON DELETE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}]]
);

 

  • AUTO_INCREMENT : 데이터가 삽입될 때 고유번호가 자동으로 생성됨(기본적으로 매 데이터마다 1씩 증가)
CREATE TABLE Constructors (
id bigint AUTO_INCREMENT
);

 

  • NOT NULL : NULL 값을 가질 수 없음
CREATE TABLE Constructors (
engine VARCHAR(50) NOT NULL
);

 

  • UNIQUE : 같은 값이 존재할 수 없음
CREATE TABLE Constructors (
engine VARCHAR(50) UNIQUE
);

 

  • DEFAULT : 기본값 지정
CREATE TABLE Constructors (
engine VARCHAR(50) DEFAULT 10000
);

 

  • CHECK
CREATE TABLE Constructors (
engine VARCHAR(50) CHECK(engine >= 1000)
);

 

  • PRIMARY KEY : 기본키를 정할 때 사용

기본키는 NOT NULL 속성만 가능하다.

CREATE TABLE Constructors (
constructor  VARCHAR(50) PRIMARY KEY
);

 

다음과 같이 작성할 수 있다.

CREATE TABLE Constructors (
constructor  VARCHAR(50),
PRIMARY KEY constructor
);

 

두 개 이상의 속성이 기본키가 된다면 괄호를 사용하여 복합키를 지정할 수 있다.

CREATE TABLE Results (
race VARCHAR(50),
driver VARCHAR(50),
race_rank VARCHAR(50),
PRIMARY KEY (race, driver)
);

 

  • FOREIGN KEY : 외래키를 지정할 때 사용
    • ON DELETE NO ACTION : 투플을 삭제하지 못하게 함
    • ON DELETE CASCADE : 관련 투플을 함께 삭제함
    • ON DELETE SET NULL : 관련 투플의 외래키 값을 NULL로 변경함
    • ON DELETE SET DEFAULT : 관련 투플의 외래키 값을 미리 지정한 기본 값으로 변경함

외래키 제약조건을 명시할 때는 반드시 참조되는 테이블(부모 릴레이션)이 존재해야 하며 참조되는 테이블의 기본키여야 함

CREATE TABLE Results (
race VARCHAR(50),
driver VARCHAR(50),
race_rank VARCHAR(50),
PRIMARY KEY (race, driver),
FOREIGN KEY (race) REFERENCES Races(name) ON DELETE NO ACTION,
FOREIGN KEY (driver) REFERENCES Drivers(name) ON DELETE NO ACTION
);

 

 

 

 ALTER

생성된 테이블의 속성, 속성에 관한 제약, 기본키, 외래키를 변경

ALTER TABLE 테이블이름 [ADD 속성이름 데이터타입]
		    [DROP 속성이름 데이터타입]
		    [MODIFY 속성이름 데이터타입];

 

  • ADD : 속성 추가
ALTER TABLE Results ADD name VARCHAR(50);

 

  • DROP : 속성 제거
ALTER TABLE Results DROP COLUMN name;

 

  • MODIFY : 속성의 기본값을 설정하거나 삭제
ALTER TABLE Results MODIFY race VARCHAR(50) NOT NULL;

 

 

 

 DROP

테이블 삭제

테이블의 구조와 데이터 모두 삭제

삭제하려는 테이블의 기본키를 다른 테이블에서 참조하고 있다면 삭제가 거절됨

DROP TABLE 테이블이름;
DROP TABLE Results;