DDL 문 정리
DDL 이란 데이터 정의어로 간단히 말하면 테이블을 만들고 (CREATE) 삭제하고 (DROP) 수정하는 (ALTER) 역할을 하는 명령어를 말합니다.
CREATE 명령어
테이블 또는 도메인을 생성하는 명령어입니다.
CREATE TABLE EMPLOYEE -- 테이블 생성
CREATE DOMAIN SSN_TYPE AS CHAR(9) -- 도메인 생성
도메인을 정의하면 동일한 도메인을 갖는다는 것을 좀 더 명시적으로 표현해줄 수 있습니다.
하지만 시스템에 따라서 사용하지 못하는 경우도 있습니다.
[CREATE 명령어 예시]
CREATE TABLE EMPLOYEE
(
Fname VARCHAR(15) NOT NULL,
Minit CHAR,
Lname VARCHAR(15) NOT NULL,
Ssn CHAR(9) NOT NULL,
Bdate DATE,
Address VARCHAR(30),
Sex CHAR,
Salary DECIMAL(10,2),
Super_ssn CHAR(9),
Dno INT NOT NULL,
PRIMARY KEY(Ssn),
UNIQUE (Salary),
FORIGN KEY (Super_ssn) REFERENCES EMPLOYEES(Ssn),
FORIGN KEY (Dno) REFERENCES DEPARTMENRT(Dnumber)
);
제약 조건을 명세하는 방법
1. NOT NULL 선언 : null 허용을 막는다.
2. DEFAULT <value> : null이 들어왔을 때 지정해준 value로 값을 지정한다.
3. CHECK 절 : 값의 범위나 제약 조건을 명세한다. 도메인을 선언할 때 사용할 수도 있다.
[CHECK 절 사용법]
/*도메인 정의*/
CREATE DOMAIN D_num AS INTEGER
CHECK (D_num > 0 AND D_num < 21);
CREATE TABLE
(
create_date DATE,
start_date DATE
...
CHECK(create_date <= start_date)
);
/* CHECK 절을 사용하면 여러 애트리뷰트에 대해 제약조건을 사용할 수 있다. */
키에 대한 제약 조건을 주는 방법
1. PRIMARY KEY 절 : PK를 지정해주며 단일 속성이라면 속성을 선언하면서 옆에 쓰는 것도 가능하다.
2. UNIQUE 절 : 속성에서 중복된 값을 막는다.
3. FOREIGN KEY 절 : FK를 지정하며, 다른 테이블과의 관계성을 표현한다.
4. 제약 조건에 이름을 부여하는 것도 가능하다. 이름을 부여하면 나중에 제약 조건을 수정할 수 있다.
CONSTRAINT EMPSUPERFK
FORIGN KEY (Super_ssn) REFERENCES EMPLOYEE (Ssn)
ON DELETE SET NULL ON UPDATE CASCADE
해석: EMPLOYEE 튜플이 삭제됐을 때 참조하고 있던 튜플의 Super_ssn은 null, 업데이트 됐을 때는 같이 바꾼다.
* 제약 조건이 위배됐을 때 대응하기 위한 액션을 지정할 수 있다. -> referential triggered action
(ON DELETE와 ON UPDATE에 대해서 SET NULL, CASCADE, SET DEFAULT 3가지 옵션이 있다. )
DROP 명령어
테이블이나 스키마를 지우는 명령어입니다. 명령어 뒤에 옵션을 주기도 합니다.
RESTRICT : 다른 테이블에 참조되고 있는 경우에는 지울 수 없다.
CASCADE : 상관없이 지워버린다.
DROP TABLE DEPENDENT CASCADE;
DROP SCHEMA COMPANY CASCADE;
ALTER 명령어
기존 테이블에 컬럼을 추가, 삭제, 정의 변경, 제약조건 추가 또는 변경할 때 사용하는 명령어입니다.
/* 속성 추가 */
ALTER TABLE EMPLOYEE ADD Job VARCHAR(12);
/* 속성 삭제 */
ALTER TABLE EMPLOYEE DROP Address CASCADE;
/* 속성 정의 삭제 */
ALTER TABLE DEPARTMENT ALTER Mgr_ssn DROP DEFAULT;
/* 속성 정의 추가 */
ALTER TABLE DEPARTMENT ALTER Mgr_ssn SET DEFAULT "33333333";
/* 제약 조건을 삭제 */
ALTER TABLE EMPLOYEE DROP CONSTRAINT EMPSUPERFK CASCADE;
'CS > 데이터베이스' 카테고리의 다른 글
데이터베이스 설계와 정규화 (0) | 2024.02.06 |
---|---|
SQL 집단함수와 GROUP BY 절, HAVING 절 정리 (0) | 2024.02.02 |
SQL 중첩 쿼리와 조인 쿼리 (0) | 2024.02.02 |
SQL 기본적인 질의어 정리 (0) | 2024.02.02 |
관계형 데이터 모델 정리 (0) | 2024.02.02 |