본문 바로가기

커맨드 명령

2.3.1 CREATE TABLE


테이블 생성


/* 문법 */
CREATE TABLE table_name
  (column_definition [, column_definition...])
 
/* 파라미터 */
table_name            -- 생성할 테이블 이름
column_definition    -- 열 정의
 
cs


테이블에서 테이블 이름, 열 이름, 형태, 속성을 지정할 때는 『CREATE TABLE』 명령을 사용한다.

테이블에는 복수의 열을 생성할 수 있기 때문에 열을 지정할 때 필요한 수만큼 기술한다.


열 지정의 기본은 열 이름과 형태이다. 열 a,b,c를 가지고 있고, 각각의 형태가 정수, 문자열, 날짜로 된

테이블 foo를 생성하기 위해서는 다음과 같이 실행한다.



/* 사용 예 */
CREATE TABLE foo (
    a NUMBER
    b VARCHAR2 (20)
    c DATE
)
 
cs


열에는 NULL의 허가 여부를 설정할 수 있다. NULL을 허가하지 않는 경우에는 『NOT NULL』을, 

허가하는 경우에는 『NULL』을 열의 형태 다음에 표기한다.


생략한 경우에는 NULL을 허용한다. 예의 foo 테이블 a열의 NOT NULL 을 지정, b,c열에 NULL을

지정하기 위해서는 다음과 같이 실행한다.



/* 사용 예 */
CREATE TABLE foo (
    a NUMBER NOT NULL,
    b VARCHAR2 (20NULL,
    c DATE NULL
)
 
cs

테이블에는 일반적으로 행을 특정할 수 있는 하나 또는 복수의 열이 존재한다.

이것을 기본키 또는 주키라고 말한다. 기본키는 테이블에 하나만 붙일 수 있다.


테이블에 기본키가 존재하지 않아도 상관없지만, 일반적인 상관적 데이터베이스를 사용한

시스템에서는 거의 모든 테이블에 기본키가 있다.(고유한 색인으로 존재하고 있을 수도 있다).

기본키로 지정하려는 열은 NULL값을 포함할 수 없으므로, CREATE TABLE 실행시, NOT NULL을 

지정해야 한다. 또, 기본키로 지정된 열이 똑같은 중복 행을 생성하는 INSERT  또는 UPDATE는 

실행시에 오류가 발생한다. 


기본키는 CREATE TABLE로 실행하여 지정하는 방법이 있다. CREATE TABLE로 실행하기 위해서는

다음과 같이 한다.


/* 사용 예 */
CREATE TABLE foo (
    a NUMBER NOT NULL CONSTRAINT pkey PRIMARY KEY,
    b VARCHAR2 (20NULL,
    c DATE NULL
)
 
cs

a열의 속성으로 『제약(CONSTRAINT』 pkey에 『PRIMARY KEY』라고 기술하여 기본키를 제약하는 

명령을 실행한다. 이 제약 pkey에 의해 a열이 기본키가 되는 테이블 foo가 생성된다. 복수의 열을 

기본키로 지정하기 위해서는 다음과 같이 실행한다.



/* 사용 예 */
CREATE TABLE foo (
    a NUMBER NOT NULL,
    b VARCHAR2 (20NULL,
    c DATE NULL,
    CONSTRAINT pkey PRIMARY KEY (a,b)
)
 
cs

테이블을 생성할 때 기본키를 설정하지 않았을 경우에는 ALTER TABLE을 사용하여 기본키를

붙일 수 있다.



◐ DB(Database)란?

- 어느 한 조직의 여러 응용 시스템들이 공용할 수 있도록 통합, 저장된 운영 데이터의 집합

- 통합된 데이터, 저장된 데이터, 운영 데이터, 공용 데이터

An integrated collection of persistent data representing the information of interest for

various program that compose the computerized information system of an organization

[Atzeni & De Antonellis]


'커맨드 명령' 카테고리의 다른 글

2.3.3 ALTER TABLE  (0) 2018.11.10
2.3.2 DROP TABLE  (0) 2018.11.10
2.3 데이터 정의 언어(DDL)  (0) 2018.11.09
2.2.3 행 단위의 잠금  (0) 2018.11.08
2.2.2 페이지 단위의 잠금  (0) 2018.11.08