SQL Commands
DDL(CREATE, ALTER, DROP, RENAME, TRUNCATE, CONNENT), DML(SELECT, INSERT, UPDATE, DELETE, MERGE, CALL, EXPLAIN PLAN, LOCK TABLE), DCL(GRANT, REVOKE), TCL(COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION)
SQL-DDL
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 : 다른 개체가 제거할 개체를 참조 중일 경우 제거가 취소된다.