본문 바로가기
DBMS/데이터베이스

[데이터베이스] ep4-1) SQL: DDL

by 클레어몬트 2024. 6. 21.

SQL(Structed Query Language): 구조화된 질의 언어

3가지 종류가 있다 DDL, DML, DCL

 

ㅁDDL(Data Definition Language): 데이터 정의어

 

 

① CREATE문: 테이블을 구성하는 속성 타입 지정 및 NULL 값 허용 여부 또는 기본 값 지정 등 정의

CREATE문 이용 TABLE 생성

 

<CREATE문 속성 데이터 타입>

TIMESTAMP: YYYY-MM-DD HH:MM 형식으로 저장되며, 해당 db 서버의 시간대(time zone)에 따라 저장되고 업데이트

 

 

(속성 정의)

- NOT NULL: 속성에 NULL값 허용 x

USER_ID VARCHAR(10) NOT NULL;

(CREATE TABLE문으로 생성되는 테이블을 구성하는 속성은 기본적으로 NULL값을 허용)

 

NOT NULL: 특정 열에 반드시 값이 있어야 하는 경우 e.g. 이름과 같은 필수 정보, 외래 키나 중요한 참조 값

NULL 허용: 특정 열에 값이 없어도 되는 경우(나중에 입력될 가능성이 있는 경우) e.g. 선택적 정보

 

- DEFAULT: 기본값을 명확히 지정

USER_AGE INT DEFAULT 0; -- 디폴트 값을 0으로 설정
STUDENT_GRADE CHAR(2) DEFAULT 'A0'; -- 디폴트 값을 'A0'으로 설정

 

 

(키 지정 키워드)

- PRIMARY KEY: 기본키 지정 키워드

가능한 한 기본키를 지정한다

PRIMARY KEY(USER_ID);
PRIMARY KEY(CUSTOMER_ID, PRODUCT_ID);

(기본키를 지정하는 키워드로 NULL 값은 허용되지 않는다)

 

- UNIQUE KEY: 대체키 지정 키워드

기본키와 같이 각 튜플을 유일하게 식별하는 특성

UNIQUE(필드명);

(기본키와 달리 NULL값 가능)

 

- FOREIGN KEY: 외래키 지정 키워드

다른 테이블의 기본키와 동일

FOREIGN KEY(USER_NUM) REFERENCES USER(NUM); -- 참조되는 테이블과 속성 제시

출처를 분명히 밝히기 위해, REFERENCES 뒤에 참조되는 테이블과 속성을 제시

 

 

데이터 무결성 제약조건 정의: CONSTRAINT 키워드

- 개체 무결성 제약조건: 기본키로 NULL값 X + 테이블 내에 오직 하나의 값만 존재

PRIMARY KEY, NOT NULL 키워드를 통해 제공 가능

 

- 참조 무결성 제약조건: 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 조건

FOREIGN KEY 지정 시 REFERENCE 키워드 사용하여 제공

 

- 도메인 무결성 제약조건: 릴레이션 내 튜플들이 각 속성의 도메인에 지정된 값을 가져야 함

CHECK 키워드 또는 CHECK, CONSTRAINT 키워드와 함께 사용하여 지정

CHECK(PRICE >= 0)
CONSTRAINT CHK_PRICE CHECK(PRICE >= 0)
(NUM) ON DELETE NO ACTION ON UPDATE CASCADE;

 

 

 

CREATE문 예제

 

 

 

 

 

 

② ALTER문: 테이블을 ALTER TABLE문으로 변경 가능

- 속성 추가

ALTER TABLE 테이블 이름
	ADD 속성_이름 데이터_타입 [NOT NULL] -- NULL값 허용 x
    [DEFAULT 기본_값];

 

- 속성 삭제

ALTER TABLE 테이블_이름
DROP COLUMN 속성_이름;

 

- 제약조건 추가

ALTER TABLE 테이블_이름 ADD
CONSTRAINT 제약조건_이름 제약조건_내용;

 

- 제약조건 삭제

ALTER TABLE 테이블_이름
DROP CONSTRAINT 제약조건_이름;

 

 

ALTER문 예제

 

 

 

 

 

 

 

③ DROP문: 테이블을 삭제하는 문

DROP TABLE 테이블_이름;

삭제할 테이블을 다른 테이블이 참조하고 있다면 삭제 수행 불가

-> 삭제하고자 하는 테이블을 참조하는 외래키 제약 조건을 먼저 삭제 필요

 

 

 

 

 

 

 

 

 

 

 

출처 및 참고: 세종대학교 K-MOOC 데이터베이스 보안(김영갑)

'DBMS > 데이터베이스' 카테고리의 다른 글

[데이터베이스] ep4-3) SQL: DCL  (1) 2024.06.30
[데이터베이스] ep4-2) SQL: DML  (0) 2024.06.29
[데이터베이스] ep3) RDB  (2) 2024.06.21
[데이터베이스] ep2) DBMS  (0) 2024.06.20
[데이터베이스] ep1) DB 모델  (0) 2024.05.03