본문 바로가기
  • Always Awake
정보처리기사/3과목

[정보처리기사 필기] DDL 구문 정리

by NerdyBoy 2022. 2. 18.

개요

DDL(데이터 정의어)는 DB구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어이다.

명령어는 크게 CREATE, ALTER, DROP 으로, 이에 대해 알아본다.

 

 

CREATE


1. CREATE SCHEMA

스키마를 정의하는 명령문

CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_id;

 

 

2. CREATE DOMAIN

도메인을 정의하는 명령문

  • 임의의 속성에서 취할 수 있는 값의 범위가 SQL에서 지원하는 전체 데이터 타입의 값이 아니고 일부분일 때, 그 값의 범위를 도메인으로 지정 가능
CREATE DOMAIN 도메인명 [AS] 데이터_타입
       [DEFAULT 기본값]
       [CONSTRAINT 제약조건명 CHECK (범위값)];

*SQL문에서 [] 처럼 대괄호로 둘러쌓인 명령어는 생략 가능하다는 의미

  • 데이터 타입 : SQL에서 지원하는 데이터 타입
  • 기본값 : 데이터를 입력하지 않았을 때 자동으로 입력되는 값

 

예시) 성별이 '남' 또는 '여' 와같이 정해진 1개의 문자로 표현되는 도메인 SEX의 정의

CREATE DOMAIN SEX CHAR(1)   #문자형 크기 1자
       DEFAULT '남'
       CONSTRAINT VALID-SEX CHECK (VALUE IN ('남', '여'))];  # 남 여 중 하나 만 결정

 

 

3. CREATE TABLE

테이블을 정의하는 명령문

 

CREATE TABLE 테이블명
       (속성명 데이터_타입 [DEFAULT 기본값][NOT NULL], ...
       [, PRIMARY KEY(기본키_속성명, ...)]
       [, UNIQUE(대체키_속성명, ...)]
       [, FOREIGN KEY(왜래키_속성명, ...)]
              [REFERENCES 참조테이블(기본키_속성명, ...)]
              [ON DELETE 옵션]
              [ON UPDATE 옵션]
       [, CONSTRAINT 제약조건명][CHECK (조건식)]);

 

예시) <학생> 테이블 정의

CREATE TABLE 학생
       (이름 VARCHAR(15) NOT NULL,
       학번 CHAR(8),
       생년월일 DATE,
       ...
       ...
       PRIMARY KEY(학번),    #기본키는 학번
       FOREIGN KEY(전공) REFERENCES 학과(학과코드)    #왜래키는 학과코드 속성 참조
       
           ON DELETE SET NULL    #삭제시 null
           
           ON UPDATE CASCADE,    #학과코드 변경 시 모든 튜플 '전공' 속성 값도 같은 값으로
           
       CONSTRAINT 생년월일제약
           CHECK(생년월일>='1980-01-01'));

 

 

4. CREATE VIEW

뷰(View) 정의하는 명령문

CREATE VIEW 뷰명[(속성명[, 속성명, ...])]
AS SELECT문;
  • SELECT의 결과로서 뷰 생성

예) <고객>테이블에서 '주소'가 '안산시' 인 고객들의 '성명'과 '전화번호'를 '안산고객'  이라는 뷰로 정의

CREATE VIEW 안산고객(성명, 전화번호)
AS SELECT 성명, 전화번호
FROM 고객
WHERE 주소 = '안산시'

 

 

5. CREATE INDEX

인덱스를 정의하는 명령문

CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명(속성명 [ASC | DESC] [,속성명 [ASC | DESC]])
[CLUSTER];
  • UNIQUE : 중복 값이 없는 속성으로 인덱스 생성. 없으면 중복값 허용
  • 정렬 여부 지정
    • ASC : 오름차순
    • DESC : 내림차순
    • 생략 : 오름차순
  • CLUSTER : 사용하면 인덱스가 클러스터드 인덱스로 설정

예시) <고객> 테이블에서 UNIQUE한 특성을 갖는 '고객번호' 속성에 대해 내림차순으로 정렬하여 '고객번호_idx' 라는 이름으로 인덱스를 정의하시오

CREATE UNIQUE INDEX 고객번호_idx
ON 고객(고객번호 DESC)

 

 

ALTER


ALTER TABLE

테이블에 대한 정의를 변경하는 명령문

ALTER TABLE 테이블명 ADD 속성명 데이터_타입 [DEFAULT '기본값'];
ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값'];
ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];
  • ADD : 새로운 속성(열) 추가
  • ALTER : 특정 속성 Default 값 변경에 사용
  • DROP COLUMN : 특정 속성 삭제에 사용

 

DROP


DROP

스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 제약 조건 등을 제거하는 명령문이다.

DROP SCHEMA 스키마명 [CASCADE | RESTRICT];
DROP DOMAIN 도메인명 [CASCADE | RESTRICT];
DROP TABLE 테이블명 [CASCADE | RESTRICT];
DROP VIEW 뷰명 [CASCADE | RESTRICT];
DROP INDEX 인덱스명 [CASCADE | RESTRICT];
DROP CONSTRAINT 제약조건명;
  • CASCADE : 제거할 요소를 참조하는 다른 모든 개체 함께 제거
  • RESTRICT : 다른 개체가 제거할 요소를 참조 중일때는 제거 취소

 


 

출처

자료 참고: 

시나공 정보처리기사 필기 2022를 참고하여 작성되었습니다

표지

댓글