본문 바로가기
공부 및 교육/정보처리기사 실기 이론

SQL - DDL

by whooops 2023. 2. 25.
반응형

SQL - DDL

SQL의 종류
SQL 종류

 

◆DDL (Data Define Language, 데이터 정의어)

- DDL은 DB구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어입니다.

- 번역한 결과가 데이터 사전(Data Dictionary)이라는 특별한 파일에 여러 개의 테이블로 저장됩니다.

- DDL 유형

  1. CREATE : SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의함
  2. ALTER : TABLE에 대한 정의를 변경하는 데 사용함
  3. DROP : SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제

*ISO/IEC 9075 : ISO/IEC 9075는 국제 표준화 기구(ISO)와 미국 표준 협회(ANS)의 관계 데이터베이스 시스템에 대한 SQL문법을 통합하고 개정한 것으로, SQL에 대한 국제 표준으로 널리 활용되고 있습니다.

 

 

◇CREATE ~

▶CREATE SCHEMA는 스키마를 정의하는 명령입니다.


CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_id;


[예제] 소유권자의 사용자 ID가 '홍길동'인 스키마 '대학교'를 정의하는 SQL문은 다음과 같다.

CREATE SCHEMA 대학교 AUTHORIZATION 홍길동;

*스키마(SCHEMA) : 스키마는 데이터 베이스의 구조와 제약 조건에 관한 전반적인 명세(Specification)를 기술한 것으로 데이터 개체, 속성, 관계 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의합니다.

 

 

 

▶CREATE DOMAIN은 도메인을 정의하는 명령문입니다.


CREATE DOMAIN 도메인명 [AS] 데이터_타입

               [DEFAULT 기본값]

               [ CONSTRANINT 제약조건명 CHECK (범위값)];


*데이터 타입 : SQL에서 지원하는 데이터 타입

*기본값 : 데이터를 입력하지 않았을 때 자동으로 입력되는 값

[예제] '성별'을 '남' 또는 '여'와 같이 정해진 1개의 문자로 표현되는 도메인 SEX를 정의하는 SQL문은 다음과 같다.

CREATE DOMAIN SEX CHAR(1)

     DEFAULT '남'

     CONSTRAINT VALID-SEX CHECK(VALUE IN ('남', '여'));

 

[풀이] 정의된 도메인은 이름이 'SEX'이며, 문자형이고 크기는 1자이다.

도메인 SEX를 지정한 속성의 기본값은 '남'이다.

SEX를 지정한 속성에는 '남', '여' 중 하나의 값 만을 저장할 수 있다.

 

*도메인(DOMAIN) : 도메인이랑 하나의 속성이 취할 수 있는 동일한 유형의 원자값들의 집합을 의미합니다.

 

 

 

▶CREATE TABLE은 테이블을 정의하는 명령문입니다.


CREATE TABLE 테이블명

                (속성명 데이터_타입 [DEFAULT 기본값] [NOT NULL], ...

                [, PRIMARY KEY(기본키_속성명,...)]

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

                [, FOREIGN KEY (외래키_속성명,...)]

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

                             [ ON DELETE 옵션]

                             [ ON UPDATE 옵션]

                [, CONSTRAINT 제약조건명] [CHECK (조건식)]);


 

▶CREATE VIEW는 뷰를 정의하는 명령문입니다.


CREATE VIEW 뷰명[(속성명[, 속성명,...])]

AS SELECT문;


 

▶CREATE INDEX는 인덱스를 정의하는 명령문입니다.


CREATE [UNIQUE] INDEX 인덱스명

ON 테이블명 (속성명 [ASC/DESC] [, 속성명 [ASC/DESC]])

[CLUSTER];


*인덱스(INDEX)는 검색 시간을 단축하기 위해 만든 보조적인 데이터 구조입니다.

 

◇ ALTER TABLE

ALTER TABLE은 테이블에 대한 정의를 변경하는 명령문입니다.


ALTER TABLE 테이블명 ADD 속성명 데이터_타입 [DEFAULT '기본값'];

ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값'];

ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];


 

 

◇ DROP

DROP은 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 제약 조건 등을 제거하는 명령문입니다.

함께 쓰는 CASCADE, RESTRICT의 의미를 기억해야 합니다.

- CASCADE : 제거할 요소를 참조하는 다른 모든 개체를 함께 제거합니다.

- RESTRICT : 다른 개체가 제거할 요소를 참조중일 경우 제거를 취소합니다.

 

 

 

 

*SQL에서 [AS]처럼 대괄호로 묶은 명령어들은 생략이 가능하다는 의미입니다.

*UNIQUE가 사용된 경우는 중복 값이 없는 속성으로 테이블이나 인덱스 등을 생성합니다.

 

반응형

댓글