데이터 정의어(Data Definition Language)는 DB 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 데이터 구조와 관련된 명령어들을 말한다.

 

1. Create문

- 테이블, 뷰, 인덱스 등 객체를 생성하는데 사용

  1-1. 스키마

    - 하나의 사용자에 속하는 테이블과 기타 구성 요소 등을 그룹짓기 위한 것이다.

       ex) Create schema 스키마명 authoriztion 사용자_ID;

  1-2. 도메인

    - 하나의 속성이 취할 수 있는 동일한 타입의 원자값들의 집합이다.

    - 임의의 속성에서 취할 수 있는 값의 범위가 SQL에서 지원하는 전체 데이터

      타입의 값이 아니고 일부분일 때, 사용자는 그 값의 범위를 도메인으로 정의할

      수 있다.

    - 정의된 도메인 명은 일반적인 데이터 타입처럼 사용한다.

       ex) Create DOmain 도메인명 데이터_타입

[Default 기본값]

[Constraint 제약조건명 check (범위 값)];

  1-3. 테이블

    - 기본 테이블에 포함될 모든 속성에 대하여 속성명, 속성의 데이터 타입,

      Not Null을 지정한다.

    - 제약조건

      * PRIMARY KEY (기본키, PK) : 테이블 내의 개별 데이터를 식별하기 위해

        정의된 제약조건이다. 이 조건을 설정한 컬럼의 데이터는 컬럼 내에서 중복

        될 수 없으며 Null값을 허용하지 않는다. 즉 PK는 Unique + Not Null의 제약

        조건을 갖는다.

      * FOREIGN KEY (외래키, FK) : 부모 테이블과 자식 테이블 간의 관계를 정의하기

        위해 부모 테이블의 PK값을 참조하는 자식 테이블의 제약조건이다.

      * UNIQUE KEY (고유키, UK) : 테이블 내의 개별 데이터를 고유하게 식별하기

        위한 제약조건이다.

      * NOT NULL (NN) : 해당 컬럼의 데이터값에 Null을 허용하지 않는

        제약조건이다. 즉 필수입력을 의미한다.

      * CHECK (CK) : 해당 컬럼에 허용할 수 있는 데이터 값의 범위를 제한한다.

      * On Delete 옵션 :  참조 테이블의 튜플이 삭제되었을 떄 기본 테이블에 취해야

        할 사항을 지정한다. 옵션에는 No Action, Cascade, Set Null, Set Default가

        있다.

      * On Update 옵션 : 참조 테이블의 참조 속성 값이 변경되었을 떄 기본 테이블에

        취해야 할 사항을 지정한다. 옵션에는 No Action, Cascade, Set Null, Set

        Default가 있다.

       ex) Create Table 테이블명

(속성명 데이터_타입 [Not Null], ...

[, Primary key (기본키_속성명, ...)]

[, Unique (대체키_속성명, ...)]

[, Foreign Key (외래키_속성명, ...)

References 참조테이블(기본키_속성명, ...)]

[On delete 옵션]

[On update 옵션]

[, Constraint 제약조건명] [Check (조건식)]);

  1-4. 뷰

    - 하나 이상의 기본 테이블로 유도되는 이름을 갖는 가상 테이블이다.

    - Select문을 서브쿼리로 사용하여 Select문의 결과로서 뷰를 생성한다.

    - 서브쿼리인 Select문에는 Union, Order by 절을 사용할 수 없다.

    - 속성명을 기술하지 않으면 Select문의 속성명이 자동으로 사용된다.

       ex) Create View 뷰명[(속성명 [, 속성명, ...])]

      As Select문;

  1-5. 인덱스

    - 검색을 빠르게 하기 위해 만든 보조적인 데이터 도구이다.

    - Unique

      * 사용 : 중복 값이 없는 속성으로 인덱스를 생성

      * 생략 : 중복 값을 허용하는 속성으로 인덱스 생성

    - 정렬 여부 지정

      * Asc : 오름차순

      * Desc : 내림차숨

      * 생략 : 오름차순으로 정렬됨

    - Cluster : 지정된 키에 따라 튜플들을 그룹으로 지정하기 위해 사용한다.

       ex) Create [Unique] Index 인덱스명

On 테이블명(속성명 [Asc | Desc], ...)

[Cluster]

  1-6. 트리거

    - DB시스템에서 데이터의 입력, 갱신, 삭제 등의 이벤트가 발생할 때 마다 자동적

      으로 수행되는 사용자 정의 프로시저다.

    - 동작시기 옵션 : 트리거가 실행될 때를 지정한다. 옵션에는 AFTER와 BEFORE가

      있다.

      * AFTER : 테이블이 변경된 후 트리거 실행

      * BEFORE : 테이블이 변경되기 전에 트리거 실행

    - 동작옵션 : 트리거가 실행되게 할 작업의 종류를 지정한다.

      * INSERT : 테이블에 새로운 레코드를 삽입할 때 트리거 실행

      * DELETE : 테이블의 레코드를 삭제할 때 트리거 실행

      * UPDATE :  테이블의 레코드를 수정할 때 트리거 실행

    - 테이블 선택 옵션 : 트리거가 적용될 테이블의 종류를 지정한다.

      * NEW : 새로 추가되거나 변경에 참여할 튜플들의 테이블에 트리거가 적용

      * OLD : 변경될 튜플들의 테이블에 트리거 적용

    - WHEN : 트리거가 실행되면서 지켜야할 조건을 지정한다.

    - 트리거 BODY : 트리거의 본문 코드를 입력하는 부분이다.

      * BEGIN으로 시작해서 END로 끝나는데 적어도 하나 이상의 SQL문이 있어야

        한다. 그렇지 않으면 오류가 발생한다.

      * 변수에 값을 치환할 때에는 예약어 SET를 사용한다.

       ex) Create Trigger 트리거명 [동작 시기 옵션][동작 옵션] On 테이블명

Referencing [New | Old] Table as 테이블명

for Each Row

When 조건식

트리거 Body

 

2. Alter문

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

     ex) Alter Table 테이블명 Add 속성명 데이터_타입 [Default] '기본값]; : 새로운

         속성 추가

   Alter Table 테이블명 Alter 속성명 [Set Default '기본값']; : 속성의 기본 값을

   변경한다. 

   Alter Table 테이블명 Drop 속성명 [Cascade]; : 속성을 제거한다.

3. Drop문

  - 스키마, 도메인, 테이블, 뷰, 인덱스, 트리거를 제거하는 명령문이다.

  - Drop Constraint : 제약 조건을 제거한다.

  - Cascade : 제거할 개체를 참조하는 다른 모든 개체를 함께 제거한다.

  - Restrict : 다른 개체가 제거할 개체를 참조중일 경우 제거가 취소된다.

     ex) Drop [Constraint] [제거할 것] 제거할 것 이름  [Cascade | Restrict] ;

 

'Web Hacking > 이론적인 내용' 카테고리의 다른 글

DCL(데이터 제어어)란?  (0) 2017.08.11
데이터 조작어(DML)이란?  (0) 2017.08.03
SQL이란?  (0) 2017.07.19
OWASP Top 10 2017  (0) 2017.07.10
쿠키(Cookie)란?  (0) 2017.07.07
블로그 이미지

꼴통보안인

,