0
 45   5   1
  View Articles

Name  
   손병목  (2002-05-07 23:47:45, Hit : 14751, Vote : 1612)
Homepage  
   http://www.itmembers.net
Subject  
   DDL(Data Definition Language) - CREATE TABLE(上)
이번 시간부터는 데이터 정의어에 대해 알아보겠습니다.
데이터 정의어(DDL)는 테이블을 생성하는 CREATE, 테이블의 구조를 변경하는 ALTER, 테이블을 삭제하는 DROP 명령 등이 있습니다.
두 시간에 걸쳐 CREATE에 대해 살펴보겠습니다.


CREATE 명령은 구체적으로 설명한 적은 없지만 지금까지 꽤 많이 실습을 해왔습니다.
예제 테이블을 만들기 위해 CREATE 문을 사용했습니다. 다만 구체적으로 설명만 안했을 뿐이죠.

CREATE 문은 어떻게 구성되어 있는지 한번 살펴볼까요?

  1. CREATE 문 형식

    CREATE TABLE table_name
    (column_one data_type [constraint, DEFAULT expression],
    column_two data_type [constraint, DEFAULT expression],
    …,
    CONSTRAINT constraint_name UNIQUE(column),
    CONSTRAINT constraint_name PRIMARY KEY(column),
    CONSTRAINT constraint_name FOREIGN KEY(column1)
                  REFERENCES table_name(column2),
    CONSTRAINT constraint_name CHECK(column expr),
    );

    우선 눈에 띄는 것들이 몇 개 보이죠?
    CONSTRAINT, UNIQUE, PRIMARY KEY, FOREIGN KEY, REFERENCES, CHECK 등

    먼저 CONSTRAINT는 데이터의 무결성(Integrity)을 유지하기 위하여 사용자가 지정하는 제약 조건을 의미합니다.
    무결성에 대해서는 이미 2, 3, 12, 14강에서 두루 언급되었던 내용이니 여기서는 따로 설명하지 않겠습니다.

    CONSTRAINT를 정의하는 방법은 두 가지가 있습니다.
    컬럼별로 제약 조건을 지정하는 것이 있고, Composite 컬럼에 대해 제약 조건을 정의할 수 있습니다.(Composite 컬럼에 대해서는 제13강에서 설명하였습니다.)
    • 컬럼별로 제약 조건을 지정할 때는 어떠한 제약 조건도 사용 가능합니다.
    • 그러나 Composite 컬럼에 대해서는 NOT NULL을 사용할 수 없습니다.


    그럼, 구체적으로 제약 조건(CONSTRAINT)에는 어떤 것들이 있을까요?
    이미 많이 보아온 것들이 그리 낯설지는 않을 것입니다.

  2. CONSTRAINT의 종류

    이미 이 강좌 앞 부분에서 많이 언급된 것들이라 의미는 대부분 이해하셨을 거라 믿고 주요한 몇 가지만 짚고 넘어가겠습니다.

    • NOT NULL
      NOT NULL Constraint가 지정된 컬럼은 NULL 값을 가질 수 없습니다.
      그리고 컬럼 단위로 Constraint를 지정할 때만 사용할 수 있습니다.(Composite 컬럼에는 사용할 수 없습니다.)

    • UNIQUE
      예전에 ERD 설명하면서 언급한 적이 있죠? Unique는 말 그대로 중복되지 않아야 한다는 속성입니다.
      단일 컬럼이나 Composite 컬럼에 Unique 속성을 부여할 때 사용하고, Unique로 지정되면 Unique Index가 자동으로 생성됩니다.(인덱스는 나중에 다룹니다.)
      UNIQUE 컬럼에는 NULL 값이 반드시 없어야될 것 같지만, Composite 컬럼 중의 일부 컬럼에는 NULL 값이 들어갈 수 있는 경우도 있습니다.

    • PRIMARY KEY
      테이블에서 PRIMARY KEY는 단 하나만 있어야 합니다.
      그리고 당연히 NULL 값은  허용하지 않습니다.
      UNIQUE로 지정했을 때와 마찬가지로 Unique Index가 자동으로 생성됩니다.

    • FOREIGN KEY
      Primary Key, Foreign Key에 대해서는 제13강 관계형 데이터베이스(2)-Table Keys에서 자세히 다루고 있습니다.
      자식 테이블(Child Table)에서 정의하는 Constraint이고, 부모 테이블(Parent Table)의 값과 일치하거나 NULL 값이어야 합니다.
      FOREIGN KEY로 참조하고자 하는 테이블이 먼저 생성되어 있어야 합니다.
      ON DELETE CASCADE Option을 주면 Cascade Delete RI를 적용할 수 있습니다.(Cascade Delete RI에 대한 설명은 제14강 관계형 데이터베이스(3)-참조무결성에서 자세히 설명하고 있습니다.)

    • CHECK
      각 행의 컬럼이 만족해야 하는 구체적인 조건을 정의하는 곳입니다.

    • DEFAULT expression
      테이블에 데이터를 입력할 때 특정 값을 지정하지 않은 경우 기본적으로 입력되는 값을 지정합니다. 예를 들어 현재의 날짜를 자동으로 삽입하려면 SYSDATE를 사용할 수 있겠죠.


이번 시간은 여기까지 설명하고,
계속해서 테이블을 직접 만들어 보기로 하겠습니다.

이상 동주 아빠 손병목이었습니다.

Prev
   DDL(Data Definition Language) - CREATE TABLE(下)

손병목
Next
   트랜잭션(Transaction) Control Language - COMMIT, ROLLBACK, SAVEPOINT

손병목


Copyright 1999-2021 Zeroboard / skin by Zetyx