흥미진진한 개발

[SQL] 데이터베이스 CREATE문 / 테이블 정의, 스키마 정의, 도메인 정의, 인덱스 정의, 뷰 정의 본문

Database

[SQL] 데이터베이스 CREATE문 / 테이블 정의, 스키마 정의, 도메인 정의, 인덱스 정의, 뷰 정의

흥미진진 2021. 6. 16. 23:09

안녕하세요 흥미진진입니다~

오늘은 SQL 정의어(DDL) 중에서 CREATE문을 알아보는 시간을 가져보려고 합니다!

 

CREATE 명령어는 테이블, 스키마, 도메인, 인덱스, 뷰 등을 정의하기 위해 사용하는 명령문입니다.

 

 

 

 ① 테이블 정의

CREATE TABLE 테이블이름
   ({속성이름 데이터타입 [NOT NULL],}
    [PRIMARY KEY(속성이름),]
    [UNIQUE(속성이름),]
    [FOREIGN KEY(속성이름) REFERENCES 참조테이블(속성이름)]
      [ON DELETE CASCADE | SET NULL | SET DEFAULT | NO ACTION]
      [ON UPDATE CASCADE | SET NULL | SET DEFAULT | NO ACTION],
    [CONSTRAINT 제약조건이름 CHECK(속성이름=범위값)]
   );

 

뭐가 많이 길죠? 하나하나 문장을 분석해보겠습니다.

 

우선 이 구문에서 표현된 {}는 반복, []는 생략 가능, |는 선택을 의미합니다.

 

CREATE TABLE 테이블이름

=> '테이블이름' 테이블을 만들겠다는 의미입니다.

 

{속성이름 데이터타입 [NOT NULL]}

=> 테이블을 구성할 속성을 지정할 때 사용합니다. 이때 {}가 반복의 의미이므로 속성 수만큼 반복합니다.

     NOT NULL은 특정 속성값에 NULL이 없도록 지정할 때 사용하고, 생략 가능합니다.

 

PRIMARY KEY(속성이름)

=> 테이블에서 기본키 속성을 지정할 때 사용합니다.

 

UNIQUE(속성이름)

=> 특정 속성값에 중복이 없도록 할 때 사용합니다.

 

FOREIGN KEY(속성이름) REFERENCES 참조테이블(속성이름)

=> 외래키를 지정할 때 사용합니다.

 

CONSTRAINT 제약조건이름 CHECK(속성이름=범위값)

=> 특정 속성에 대해 속성값의 범위를 지정할 때 사용합니다.

 

 

 

② 스키마 정의

CREATE SCHEMA 스키마이름 AUTHORIZATION 사용자;

 

테이블 정의 명령어에 비해서 매우 간결하죠?

 

해석하자면, '사용자'에게 스키마를 정의하고 사용할 수 있도록  '스키마이름' 스키마를 만든 것입니다. 

 

 

 

③ 도메인 정의

CREATE DOMAIN 도메인이름 데이터타입
   [DEFAULT 기본값]
   [CONSTRAINT 제약조건이름 CHECK(VALUE IN(범위값))];

한 속성값의 범위를 지정하기 위한 도메인을 생성하는 구문입니다.

 

 

 

④인덱스 정의

CREATE [UNIQUE] INDEX 인덱스이름
   ON 테이블이름(속성이름 [ASC | DESC])
   [CLUSTER];

인덱스를 활용하면 데이터베이스 내의 자료를 효율적으로 검색할 수 있습니다.

 

이 구문도 해석을 해보자면

 

UNIQUE

=> 인덱스의 중복을 허용하지 않을 때 사용합니다. 생략 시 중복이 허용됩니다.

 

ON 테이블이름(속성이름 [ASC | DESC])

=> '테이블이름' 테이블의 속성으로 인덱스를 만듭니다.

     ASC는 오름차순으로 인덱스로 사용될 속성값을 정렬하고, DESC는 내림차순으로 정렬합니다.

 

CLUSTER

=> 인접된 튜플들을 물리적인 그룹으로 묶어 저장할 때 사용합니다.

 

 

 

⑤뷰 정의

CREATE VIEW 뷰이름
   AS SELECT 필드명
   FROM 테이블이름
   [WHERE 조건];

'테이블이름' 테이블의 '필드명' 속성들을 '뷰이름' 뷰로 묶어 생성하는 것입니다.

 

 

 

 

지금까지 여러 CREATE문을 알아봤는데요, 도움이 되셨다면 좋겠습니다!

 

SMALL

 

LIST

'Database' 카테고리의 다른 글

[SQL] 데이터베이스 ALTER문 / 테이블 속성 추가, 변경, 삭제  (1) 2021.07.15
MySQL WHERE문  (0) 2021.04.25