Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

subsay

관계 데이터베이스 모델과 언어 - DDL 본문

정보처리 기사

관계 데이터베이스 모델과 언어 - DDL

subsay 2017. 9. 28. 22:27

- DDL(Data Define Language, 데이터 정의 언어)은 SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의 하거나 변경 또는 삭제할 때 사용하는 명령문이다.

 - DDL로 정의된 내용은 Meta-data*가 되며, 시스템 카탈로그*에 저장한다.


*메타 데이터 : 데이터 관리르 위한, 즉 데이터를 위한 데이터

*시스템 카탈로그 : 시스템 그자체에 관련이 있는 다양한 객체들에 관한 정보를 포함하는 시스템 데이터베이스 테이블


*데이터 정의문에서 사용하는 테이블 종류

 - 기본 테이블 : 이름을 가지고 있으며 독자적으로 존재한다.

 - 뷰 테이블 : 독자적으로 존재하지 못하고, 기본 테이블로 부터 유도된 이름을 가진 가상 테이블 이다.

 - 임시 테이블 : 질의문 처리 결과로 만들어진 테이블로서, 이름을 가지지 않는다


1. CREATE SCHEMA

 - 스키마를 정의하는 명령문이다.

 - 스키마의 식별을 위해 이름과 소유권자나 허가권자를 정의한다.

 - 표기형식 - CREATE SCHEMA 스키마_이름 AUTHORIZATION 사용자_id;

 예) 소유권자의 사용자 ID가 홍길동인 스키마 "대학교"의 정의문

 CREATE SCHEMA 대학교 AUTHORIZATION 홍길동;


2. CREATE DOMAIN

 - 도메인을 정의하는 명령문이다.

 - 임의의 애트리뷰트에서 취할 수 있는 원자값의 범위가 SQL에서 지원하는 data_type에 포함되는 전체 값이 아니고 일부분일 때 사용자가 그 값의 범위를 사용자 정의 data_type으로 정의한다.

 - 표기형식

 CREATE DOMAIN 도메인_이름 data_type

[DEFAULT 묵시값_정의]

[CONSTRAINT VALID-도메인_이름 CHECK(범위값)];


 - data_type : SQL에서 지원하는 data_type

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

 - 정의된 도메인_이름은 일반적인 data_type처럼 사용한다.

 예) '남', '여' 또는 '?' 중의 한 문자를 취할수 있는 도메인 SEX의 정의문

 CREATE DOMAIN SEX CHAR(1)

DEFAULT '여'

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


*구문에서 대괄호([ ])의 의미

 - SQL문에서 [DEFAULT 묵시값_정의]처럼 대괄호로 묶은 명령어들은 생략이 가능하다는 의미 입니다.


SQL에서 지원하는 기본 data_type

 - 정수(Integer) : INT(4Byte 정수), SMALLINT(2Byte 정수)

 - 실수(Float) : FLOAT, REAL, DOUBLE PRECISION

 - 형식화된 숫자 : DEC(i, j) 단, i : 전체 자릿수, j : 소수부 자릿수

 - 고정길이 문자 : CHAR(n) 단, n : 문자수

 - 가변길이 문자 : VARCHAR(n) 단, n : 최대 문자수

 - 고정길이 비트열(Bit String) : BIT(n)

 - 가변길이 비트열 : VARBIT(n)

 - 날짜 : DATE, 날짜 데이터는 YYYY-MM-DD의 10자리로 표기

 - 시간 : TIME, 시간 데이터는 HH:MM:SS의 6자리로 표기


3. CREATE TABLE

 CREATE TABLE은 기본 테이블을 정의하는 명령 문이다.

 - 표기 형식

 CREATE TABLE 기본테이블_이름

(속성명 data_type [NOT NULL], ...,

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

UNIQUE(대체키_속성명),

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

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

CONSTRAINT 제약조건명 CHECK(조건식));

- 속성명 : 기본 테이블에 포함될 모든 속성에 대하여 속성명과 그 속성의 data_type, NOT NULL* 여부를 지정한다.

- PRIMARY KEY : 기본키 속성을 지정한다.

- UNIQUE : 대체키로 사용할 속성명들을 지정한다.

- FOREIGN KEY ~ REFERENCES ~

 > 참조할 다른 테이블과 그 테이블을 참조할 때 사용할 외래키 속성을 지정한다.

 > 외래키가 지정되면 참조 무결성의 CASCADE 법칙*이 적용된다.

- CHECK : 제약 조건을 정의한다

예) 이름, 학년, 전공, 성별, 생년월일로 구성된 '학생' 테이블을 정의하라.

CREATE TABLE 학생

(이름 VARCHAR(15) NOT NULL,

학번 VARCHAR(15) NOT NULL,

전공 VARCHAR(20) NOT NULL,

성별 SEX,

생년월일 DATE,

PRIMARY KEY(학번),

FOREIGN KEY(전공)

REFERENCES 학과(학과코드),

CONSTRAINT 성별제약

CHECK(성별='남'));



*NOT NULL

 NULL 이란 모르는 값 또는 적용 할 수 없는 값을 의미하는 것으로, 특정 속성에 데이터 없이 빈칸으로 있어서는 안 된다는 것을 지시할 때 사용합니다.


*참조 무결성의 CASCADE 법칙

 참조 무결성 제약이 설정된 기본 테이블의 어던 데이터를 삭제하는 경우, 그 데이터와 밀접하게 연관되어 있는 다른 테이블의 데이터들도 도미노처럼 자동으로 삭제됩니다. 이러한 법칙을 '계단식', '연속성'이라는 사전적 의미를 가진 CASCADE 법칙이라 합니다.


4. CREATE INDEX

 CREATE INDEX는 인덱스를 정의하는 명령문이다.

 - 표기 형식

 CREATE [UNIQUE] INDEX 인덱스_이름

ON 기본테이블_이름({속성_이름 [ASC | DESC],})

[CLUSTER];


- UNIQUE 옵션

 > 사용하는 경우 : 기본키나 대체키 같은 중복되는 값이 없는 속성으로 인덱스를 생성할 때

 > 생략하는 경우 : 중복값을 허용하는 속성으로 인덱스를 생성할 때

- 정렬 여부 지정

 > ASC : 오름차순 정렬, DESC : 내림차순 정렬

 > 생략하면 오름차순으로 정렬된다.

- CLUSTER 옵션 : 동일 인덱스 값을 갖는 튜플들을 그룹으로 묶을 때 사용한다.

예) '고객' 테이블의 기본키인 '고객번호' 속성에 대해 오름차순 정렬하여 '고객번호_INX'라는 이름으로 인덱스를 구성하라.

CREATE UNIQUE INDEX 고객번호_INX

ON 고객(고객번호 ASC);


5. ALTER TABLE

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

 - 표기 형식

 ALTER TABLE 기본테이블 이름 ADD 속성_이름 data-type [DEFAULT '기본값'];

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

 ALTER TABLE 기본테이블_이름 DROP 속성_이름 [CASCADE];

 - ADD : 새로운 속성(열)을 추가할 때 사용하낟.

 - ALTER : 특정 속성의 Default 값을 변경할 때 사용한다.

 - DROP : 특정 속성을 삭제할 때 사용한다.

 예) '학생' 테이블에 최대 3문자로 구성되는 '학년' 속성 추가

 ALTER TABLE 학생 ADD 학년 VARCHAR(3);


6. DROP

 DROP은 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스 등을 삭제하는 명령문이다.

 - 표기 형식

 DROP SCHEMA 스키마_이름 [CASCADE | RESTRICTED];

 DROP DOMAIN 도메인_이름 [CASCADE | RESTRICTED];

 DROP TABLE 기본테이블_이름 [CASCADE | RESTRICTED];

 DROP VIEW 뷰_이름 [CASCADE | RESTRICTED];

 DROP INDEX 인덱스_이름 ;


 - DROP SCHEMA : 스키마를 삭제한다.

 - DROP DOMAIN : 도메인을 삭제한다.

 - DROP TABLE : 기본 테이블을 삭제한다.

 - DROP VIEW : 뷰 테이블을 삭제 한다

 - DROP INDEX : 인덱스를 삭제한다.

 - CASCADE 옵션 : 삭제할 요소를 참조하는 다른 모든 개체를 함께 삭제한다. 즉, Main Table의 데이터 삭제 시 각 외래키에 대해 부합되는 모든 데이터를 삭제하는 참조 무결성의 법칙을 설정한다.

 - RESTRICTED 옵션 : 삭제할 요소를 다른 개체가 참조중일 때는 삭제를 취소한다.

 예) '학생' 테이블을 삭제하되, '학생' 테이블을 참조하는 모든 테이블 함께 삭제한다.

 DROP TABLE 학생 CASCADE;