[SQL] CREATE TABLE 테이블 생성, 제약조건(CONSTRAINT), 확인(DESC)[SQL] CREATE TABLE 테이블 생성, 제약조건(CONSTRAINT), 확인(DESC)

Posted at 2014.05.29 15:58 | Posted in == DB ==/SQL



facebook에 글올리기



[SQL] CREATE TABLE 테이블 생성, 제약조건(CONSTRAINT), 확인(DESC)


1. 테이블 생성 구문 형식



CREATE TABLE 테이블 이름 (
        컬럼명1 DATATYPE [DEFAULT 형식],
        컬럼명2 DATATYPE [DEFAULT 형식],
        컬럼명3 DATATYPE [DEFAULT 형식]
);


- 테이블명은 객체를 의미할 수 있는 적절한 이름을 사용한다. 가능한 단수형을 권고한다.

- 테이블 명은 다른 테이블의 이름과 중복되지 않아야 한다.

- 한 테이블 내에서는 컬럼명이 중복되게 지정될 수 없다.

- 테이블 이름을 지정하고 각 컬럼들은 괄호 "( )" 로 묶어 지정한다.

- 각 컬럼들은 콤마 ","로 구분되고, 테이블 생성문의 끝은 항상 세미콜론 ";"로 끝난다.

- 컬럼에 대해서는 다른 테이블까지 고려하여 데이터베이스 내에서는 일관성 있게 사용하는 것이 좋다.

- 컬럼 뒤에 데이터 유형은 꼭 지정되어야 한다.

- 테이블명과 컬럼명은 반드시 문자로 시작해야 하고, 벤더별로 길이에 대한 한계가 있다.

- 벤더에서 사전에 정의한 예약어(Reserved word)는 쓸 수 없다.

- A-Z, a-z, 0-9, _, $, # 문자만 허용된다.


2. CREATE TABLE 예제



CREATE TABLE PLAYER (
       PLAYER_ID                CHAR(7)             NOT NULL,
       PLAYER_NAME        VARCHAR2(20)  NOT NULL,
       TEAM_ID                   CHAR(3)             NOT NULL,
       E_PLAYER_NAME   VARCHAR2(40),
       NICKNAME               VARCHAR2(30),
       JOIN_YYYY               CHAR(4),  
       POSITION                  VARCHAR2(10),
       BACK_NO                 NUMBER(2),
       NATION                     VARCHAR2(20),
       BIRTH_DATE            DATE,
       SOLAR                      CHAR(1),
       HEIGHT                    NUMBER(3),
       WEIGHT                   NUMBER(3),
    
      CONSTRAINT PLAYER_PK PRIMARY KEY (PLAYER_ID),
      CONSTRAINT PLAYER_FK FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID)
    
);


- 테이블 생성시 대/소문자 구분은 하지 않는다. (기본적으로 테이블이나 컬럼명은 대문자로 만들어진다.)

- DATE 유형은 별도로 크기를 지정하지 않는다.

- 문자 데이터 유형은 반드시 가질 수 있는 최대 길이를 표시해야 한다.

- 컬럼과 컬럼의 구분은 콤마로 하되, 마지막 컬럼은 콤마를 찍지 않는다.

- 컬럼에 대한 제약조건이 있으면 CONSTRAINT를 이용하여 추가할 수 있다.


제약조건은 PLAYER_NAME, TEAM_ID 컬럼의 데이터 유형 뒤에 NOT NULL을 정의한 것과 같이 컬럼 LEVEL 방식과,

CONSTRAINT로 테이블 생성 마지막에 모든 제약조건을 기술하는 테이블 LEVEL 방식이 있다.


하나의 SQL 문장내에 두 가지 방식을 혼용해서 사용할 수 있으며, 같은 기능을 가진다.



3. 제약조건 (CONSTRAINT)


제약조건은 사용자가 원하는 조건의 데이터만 유지하기 위한 특정 컬럼에 설정하는 제약이다.

테이블을 생성할 때 제약조건을 반드시 기술할 필요는 없다.


 구분

설명 

 PRIMARY KEY

(기본키)

 - 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 기본키 정의.

 - 하나의 테이블에 하나의 기본키 제약만 정의할 수 있다.

 - 기본키 제약을 정의하면 DBMS는 자동으로 UNIQUE 인덱스를 생성하며, 기본키를 구성하는 컬럼에는 NULL을 입력할 수 없다.

* PRIMARY KEY = UNIQUE KEY & NOT NULL 

 UNIQUE KEY

(고유키)

 - 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 고유키를 정의한다.

단, NULL은 고유키 제약의 대상이 아니므로, NULL 값을 가진 행이 여러 개가 있더라도 고유키 제약 위반이 되지 않는다.

 NOT NULL

 - NULL 값의 입력을 금지한다. 디폴트 상태에서는 모든 컬럼에서 NULL을 허가하고 있지만, 이 제약을 지정함으로써 해당 컬럼은 입력 필수가 된다.

 CHECK

 - 입력할 수 있는 값의 범위 등을 제한한다. CHECK 제약으로는 TRUE or FALSE로 평가할 수 있는 논리식을 지정한다.

 FOREIGN KEY 

 - 관계형 데이터베이스에서 테이블 간의 관계를 정의하기 위해 기본키를 다른 테이블의 외래키로 복사하는 경우 외래키가 생성된다.

- 외래키 지정시 참조 무결성 제약 옵션을 선택할 수 있다.



4. 생성된 테이블 구조 확인 (DESC)


테이블을 생성한 후 테이블의 구조가 제대로 만들어졌는지 확인할 필요가 있다.

Oracle의 경우 DESCRIBE 또는 DESC 로 테이블 정보를 호가인할 수 있다.


DESC PLAYER;



5. SELECT 문장을 통한 테이블 생성


SELECT 문장을 통해 테이블을 생성할 수도 있다.

기존의 테이블을 이용하면 컬럼별로 데이터 유형을 다시 정의하지 않아도 된다.


하지만, 기존 테이블의 제약조건 중 NOT NULL만 새로운 복제 테이블에 적용이 되고, PRIMARY KEY, UNIQUE KEY, FOREIGN KEY, CHECK 등의 다른 제약 조건은 없어 진다.

제약 조건을 추가하기 위해서는 ALTER TABLE 을 사용해야 한다.



CREATE TABLE TEMPPLAYER
   AS SELECT * FROM PLAYER;



저작자 표시 비영리 변경 금지
신고
이웃추가
facebook에 글올리기

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

티스토리 툴바