Computer Science/Database

[Database] SQL - DDL

ooeunz 2019. 10. 9. 17:10
반응형

  • DDL (Data Definition Language)의 개념
  • DDL은 스키마(Schema), 도메인(Domain), 테이블(Table), 뷰(View), 인덱스(Index)를 정의하거나 변경 또는 제거할 때 사용하는 언어이다.
  • DDL로 정의한 내용은 메타데이터(Metadata)가 되며, 시스템 카탈로그(System Catalog)에 저장된다.
  • DDL의 유형
명령문 기능
CREATE 스키마, 도메인, 테이블, 뷰, 인덱스를 정의
ALTER 테이블에 대한 정의를 변경
DROP 스키마, 도메인 테이블, 뷰, 트리거, 인덱스를 제거

 

CREATE SCHEMA

  • 스키마를 정의하는 명령문이다.
  • 스키마는 하나의 사용자에 속하는 테이블과 기타 구성 요소 등을 그룹 짓기 위한 것이다.
  • 스키마의 식별을 위한 스키마 이름고 해당 스키마의 소유권자나 허가권자를 정의한다.
CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_ID;

 

CREATE DOMAIN

  • 도메인을 정의하는 명령문이다.
  • 도메인이란 하나의 속성이 취할 수 있는 동일한 타입의 원자 값들의 집합이다.
  • 정의된 도메인명은 일반적인 데이터 타입처럼 사용한다.
CREATE DOMAIN 도메인명 데이터_타입
	[DEFAULT 기본값]
    	[CONSTRAINT 제약조건명 CHECK (범위 값)];

※ SQL에서 []표시, 즉 대괄호로 묶인 부분은 생략이 가능하다는 표시이다.

 

CREATE TABLE

  • 테이블(릴레이션)을 정의하는 명령문이다.
  • DB설계 단계에서는 테이블을 릴레이션이라고 부르고, 조작이나 검색 시에는 테이블이라고 부름.
CREATE TABLE 테이블명
	(속성명 데이터_타입 [NOT NULL] ...
    	[, PRIMARY KEY (기본키_속성명 ...)]
        	[, UNIQUE (대체키_속성명 ...)]
            	[, FOREIGN KEY(외래키_속성명 ...)]
                		REFERENCES 참조테이블(기본키_속성명 ...)]
                        	[ON DELETE 옵션]
                            	[ON UPDATE 옵션]
                [, CONSTRAINT 제약조건명][CHECK (조건식)];
  • 기본 테이블에 포함될 모든 속성에 대하여 속성명, 속성의 데이터 타입, NOT NULL을 지정한다.
  • NOT NULL이란 모르는 값 또는 적용할 수 없는 값을 의미하는 것으로, NULL 값이 올 수 없음을 의미한다.
  • PRIMARY KEY : 기본키로 사용할 속성 또는 속성의 집합을 지정한다.
  • UNIQUE : 대체키로 사용할 속성 또는 속성의 집합을 지정하는 것으로 UNIQUE로 지정한 속성은 중복된 값을 가질 수 없다.
  • FORIENGN KEY ~ REFERENCES ~ : 외래키 속성과 참조 테이블에 관한 정보를 지정한다.
  • ON DELETE 옵션 : 참조 테이블의 튜플이 삭제되었을 때 기본 테이블에 취해야할 사항을 지정한다.
  • ON UPDATE 옵션 : 참조 테이블의 참조 속성 값이 변경되었을 때 기본 테이블에 취해야할 사항을 지정한다.
    • NO ACTION : 참조 테이블에 변화가 있어도 기본 테이블에는 아무런 조치를 취하지 않는다.
    • CASCADE : 참조 테이블의 튜플이 삭제되면 기본 테이블의 관련 튜플도 모두 삭제되고, 속성이 변경되면 관련 튜플의 속성 값도 모두 변경된다.
    • SET NULL : 참조 테이블에 변화가 있으면 기본 테이블의 관련 튜플의 속성 값을 NULL로 변경한다.
    • SET DEFAULT : 참조 테이블에 변화가 있으면 기본 테이블의 관련 튜플의 속성 값을 기본값으로 변경한다.
  • CONSTRAINT : 제약 조건의 이름을 지정한다. 이름을 지정할 필요가 없으면 CHECK절만 사용하여 속성 값에 대한 제약 조건을 명시한다.
  • CHECK : 속성 값에 대한 제약 조건을 지정한다.

 

CREATE VIEW

  • 뷰는 하나 이상의 기본 테이블로부터 유도되는 이름을 갖는 가상 테이블(Virtual Table)로, CREATE VIEW는 뷰를 정의하는 명령문이다.
CREATE VIEW 뷰명[(속성명 ...)]
AS SELECT문;

 

CREATE INDEX

  • 인덱스는 검색을 빠르게 하기 위해 만든 보조적인 데이터 구조이며, CREATE INDEX는 인덱스를 정의하는 명령문이다.
CREATE [UNIQUE] INDEX <인덱스명>
	ON 테이블명({속성명 [ASC | DESC] [,속성명 [ASC | DESC]]})
	[CLUSTER];
  • UNIQUE가 사용될 경우 중복 값이 없는 속성으로 인덱스를 생성한다.
  • 정렬 여부
    • ASC : 오름차순 정렬
    • DESC : 내림차순 정렬
    • 생략될 경우 : 오름차순 정렬
  • CLUSTER : 지정된 키에 따라 튜플들을 그룹으로 지정하기 위해 사용한다.

 

CREATE TRIGGER

  • 트리거(TRIGGER)는 데이터베이스 시스템에서 데이터의 입력, 갱신, 삭제 등의 이벤트(event)가 발생할 때마다 자동적으로 수행되는 사용자 정의 프로시저이다.
  • 트리거는 SQL의 제약조건 방법을 통해 명시할 수 없는 무결성 제약조건을 구현하고, 관련 테이블의 데이터를 일치시킬 때 주로 사용한다.
CREATE TRIGGER 트리거명 [동작시기 옵션][동작 옵션]ON 테이블명
REFERENCING [NEW | OLD] TABLE AS 테이블명
FOR EACH ROW
WHEN 조건식
트리거 BODY
  • 동작 시기 옵션 : 트리거가 실행될 때를 지정한다. 옵션에는 AFTER와 BEFORE가 있다.
    • AFTER : 테이블이 변경된 후에 트리거가 실행된다.
    • BEFORE : 테이블이 변경되기 전에 트리거가 실행된다.
  • 동작 옵션 : 트리거가 실행되게 할 작업의 종류를 지정한다.
    • INSERT : 테이블에 새로운 레코드가 삽입될 때 트리거가 실행된다.
    • DELETE : 테이블에 레코드를 삭제할 때 트리거가 실행된다.
    • UPDATE : 테이블의 레코드를 수정할 때 트리거가 실행된다.
  • 테이블 선택 옵션 : 트리거가 적용될 테이블의 종류를 지정한다.
    • NEW : 새로 추가되거나 변경에 참여할 튜플들의 집합(테이블)에 트리거가 적용된다.
    • OLD : 변경된 튜플들의 집합(테이블)에 트리거가 적용된다.
  • WHEN : 트리거가 실행되면서 지켜야 할 조건을 지정한다.
  • 트리거 BODY : 트리거의 본문 코드를 입력하는 부분이다.

 

ALTER TABLE

  • 테이블에 대한 정의를 변경하는 명령문이다.
ALTER TABLE 테이블명 ADD 속성명 데이터_타입 [DEFAULT '기본값'];
ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값'];
ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];
  • ADD : 새로운 속성을 추가한다.
  • ALTER : 속성의 기본값(Default)을 변경한다.
  • DROP COLUMN : 속성을 제거한다.

 

DROP

  • 스키마, 도메인, 테이블, 뷰, 인덱스, 트리거를 제거하는 명령문이다.
DROP SCHEMA 스키마명 [CASCADE | RESTRICT];
DROP DOMAIN 도메인명 [CASCADE | RESTRICT];
DROP TABLE 테이블명 [CASCADE | RESTRICT];
DROP VIEW 뷰명 [CASCADE | RESTRICT];
DROP INDEX 인덱스명 [CASCADE | RESTRICT];
DROP TRIGGER 트리거명 [CASCADE | RESTRICT];
DROP CONSTRAINT 제약조건명;
  • CASCADE : 제거할 개체를 참조하는 다른 모든 개체를 함께 제거한다.
  • RESTRICT : 다른 개체가 제거할 개체를 참조 중일 경우 제거가 취소된다.
반응형