DDL의 개념
- DDL은 스키마, 도메인, 테이블 , 뷰, 인덱스를 정의하거나 변경 또는 제거할 때 사용하는 언어이다.
- DDL로 정의된 내용은 메타데이터가 되며, 시스템 카탈로그에 저장한다.
* 메타데이터 : 데이터 관리를 위한, 데이터에 대한 데이터를 의미함. 예를 들어 '학번은 숫자 1자리이며 1~4만 저장할 수 있다'라는 데이터는 실제 데이터가 아니고 데이터를 저장하기 위한 데이터 이므로 메타데이터라고 함.
* 시스템 카탈로그 : 시스템 그 자체에 관련이 있는 다양한 객체들에 관한 정보를 포함하는 시스템 데이터 베이스 테이블임.
* 서브 쿼리(SUB QUERY) : 서브쿼리는 조건절에 주어진 질의로서, 상위 질의에 앞서 실행되며 그 검색 결과는 상위 질의의 조건절의 피연산자로 사용된다.
[
Ÿ DDL의 유형
CREATE TABLE 테이블이름 : 지정한 테이블이름으로 테이블 생성 {속성이름 데이터타입} : 테이블을 구성하는 속성수만큼 속성 이름과 데이터 타입 기록 [NOT NULL] : 테이블 생성 시 특정속성값에 NULL이 없도록 지정할때 사용한다. []에 쌓여있으므로 생략가능하다. PRIMARY KEY(속성이름) : 테이블에서 기본키 속성 지정에 사용 UNIQUE(속성이름 ) : 대체키 지정시 사용, 속성의 모든값이 고유한 값을 가지도록 지정할 때 사용 FOREIGN KEY(속성이름) REFERENCES 참조테이블(참조테이블의속성이름) : 외래키를 지정할 때 사용 CONSTRAINT 제약조건이름 CHECK(속성이름=범위값) : 테이블을 생성할 때 특정 속성에 대해 속성 값의 범우를 지정할 때 사용 외래키 지정 옵션에 사용되는 것 : [ON DELETE CASCADE | SET NULL | SET DEFAULT | NO ACTION] ON DELETE : 참조테이블의 튜플이 삭제되면 기본 테이블은 어떤 형태로 대처할지 선택 ON UPDATE : 참조테이블의 튜플이 변경되면 기본 테이블은 어떤 형태로 대처할지 선택 CASCADE : 참조테이블의 튜플에 삭제,변화가 있는 경우 기본 테이블도 같이 연쇄적으로 삭제,변화가 되도록 할때 사용 SET NULL : 참조테이블의 튜플에 삭제,변화가 있는 경우 기본 테이블의 관련된 속성 값을 NULL로 변경 SET DEFAULT: 참조테이블의 튜플에 삭제,변화가 있는 경우 기본 테이블의 관련된 속성 값을 기본값으로 변경 NO ACTION : SET NULL : 참조테이블의 튜플에 삭제,변화가 있는 경우 기본 테이블에 아무런 변화가 없도록 지정 2. CREATE SCHEMA Ÿ 스키마를 정의하는 명령문 Ÿ 스키마는 하나의 응용(사용자)에 속하는 테이블과 기타 구성 요소 등을 그룹 짓기 위한 것 Ÿ 스키마의 식별을 위한 스키마명과 해당 스키마의 소유권자나 허가권자를 정의 Ÿ 표기 형식
[예제] ID가 홍길동인 사용자의 스키마 대학교를 정의하는 SQL문 CREATE SCHEMA 대학교 AUTHORIZATION 홍길동
3. CREATE DOMAIN Ÿ 도메인을 정의하는 명령문 Ÿ 도메인이란 하나의 속성이 취할 수 있는 동일한 타입의 원자 값들의 집합 Ÿ 표기형식
Ÿ 데이터 타입: SQL에서 지원하는 데이터 타입 Ÿ 기본값: 데이터를 입력하지 않았을 때 자동으로 입력되는 값 [예제] 성별을 ‘남’ 또는 ‘여’와 같은 정해진 한 개의 문자로 표현되는 도메인 SEX를 정의하는 SQL문 CREATE DOMAIN SEX CHAR(1) 정의된 도메인은 문자형이고 크기는 1자이다. DEFAULT ‘남’ 도메인 SEX를 지정한 속성의 기본값은 ‘남’이다. CONSTRAINT VALID-SEX CHECK(VALUE IN(‘남’,’여’)); SEX를 지정한 속성에는 ‘남’,’여’ 중 하나의 값만을 저장할 수 있다.
4. CREATE TABLE Ÿ 테이블을 정의하는 명령문 Ÿ 표기형식
Ÿ 기본 테이블에 포함될 모든 속성에 대하여 속성명, 속성의 데이터 타입, NOT NULL을 지정한다. Ÿ PRIMARY KEY: 기본키를 구성하는 속성 또는 속성의 집합을 지정한다. Ÿ UNIQUE: 대체키로 사용할 속성 또는 속성의 집합을 지정한다. Ÿ FOREIGN KEY ~ REFERENCES~: 외래키 속성과 참조 테이블에 관한 정보를 지정한다. 외래키가 지정되면 참조 무결성의 CASCADE 법칙이 적용된다. Ÿ CHECK: 속성값에 대한 제약 사항을 지정한다.
[예제] 이름, 학번, 전공, 성별, 생년월일로 구성된 <학생> 테이블을 정의하는 SQL 문을 작성해 보자. 단, 이름은 NULL이 올 수 없고, 학번은 기본키로, 전공은 <학과> 테이블의 학과 코드를 참조하는 외래키로 사용되며, 생년월일은 1980-01-01 이후의 데이터만 저장할 수 있다. CREATE TABLE 학생 // (학생) 테이블 생성 (이름 VARCHAR(15) NOT NULL, // 이름속성 최대15자, NULL 안됨. 학번 CHAR(8), // 학번 속성 문자8자 전공 CHAR(5), // 전공 속성 문자5자 성별 GENDER, // 성별 속성은 'GENDER' 도메인을 자료형으로 사용 생년월일 DATE, // 생년월일 속성은 DATE 자료형 PRIMARY KEY(학번), // 학번 속성을 기본키로 정의 FOREIGN KEY(전공) REFERENCES 학과(학과코드) // 전공 속성은 <학과>테이블의 학과코드 속성을 참조하는 외래키 ON DELETE SET NULL // 튜플 삭제시 관련된 모든 튜플의 전공 속성값을 NULL ON UPDATE CASCADE, // <학과> 테이블에서 학과코드가 변경되면 관련된 모든 // 전공 속성의 값도 같은 값으로 변경 CONSTRAINT 생년월일제약 // 제약조건의 명은 '생년월일제약'이고, CHECK(생년월일 >='1900-01-01') ); // 생년월일 속성에는 '1900-01-01'이후 값 허용
| ||||||||||||||||
소단원 2. CREATE/ALTER/DROP | ||||||||||||||||
Side: Create View: 뷰를 정의하는 명령문 Create Index: 인덱스를 정의하는 명령문 Alter Table: 테이블에 대한 정의를 변경하는 명령문
1. CREATE VIEW Ÿ 뷰는 하나 이상의 테이블로부터 유도되는 이름을 갖는 가상 테이블(Virtual Table)로, CREAT VIEW는 뷰를 정의하는 명령문 Ÿ 표기형식
Ÿ SELECT 문을 서브 쿼리로 사용하여 SELECT 문의 결과로서 뷰를 생성한다. Ÿ 속성명을 기술하지 않으면, SELECT 문의 속성 명이 자동으로 사용된다. [예제]고객 테이블에서 주소가 ‘안산시’인 고객들의 성명과 전화번호를 ‘안산고객’이라는 뷰로 정의하시오. CREATE VIEW 안산고객(성명, 전화번호) AS SELECT 성명, 전화번호 FROM 고객 WHERE 주소=’안산시’
2. CREATE INDEX Ÿ 인덱스는 검색을 빠르게 하기 위해 만든 보조적인 데이터 구조이며, CREATE INDEX는 인덱스를 정의하는 명령문이다. Ÿ 표기형식
Ÿ UNIQUE - 사용된 경우: 중복값이 없는 속성으로 인덱스를 생성한다. - 생략된 경우: 중복값을 허용하는 속성으로 인덱스를 생성한다. Ÿ 정렬 여부 지정 - ASC: 오름차순 정렬 - DESC: 내림차순 정렬 - 생략된 경우: 오름차순으로 정렬됨 Ÿ CLUSTER: 지정된 키에 따라 튜플들을 그룹으로 저장하기 위해 사용한다. [예제] <고객> 테이블에서 UNIQUE 한 특성을 갖는 고객번호 속성에 대해 내림차순으로 정렬하여 ‘고객번호_idx’라는 이름으로 인덱스를 정의하시오. CREATE UNIQUE INDEX 고객번호_idx ON 고객(고객번호 DESC);
3. ALTER TABLE Ÿ 테이블에 대한 정의를 변경하는 명령문 Ÿ 표기형식
- ADD: 새로운 속성을 추가한다. - ALTER: 속성의 묵시적(Default) 값을 변경한다. - DROP: 속성을 제거한다. [예제] <학생> 테이블에 최대 3문자로 구성되는 학년 속성을 추가하는 SQL 문은 다음과 같다. ALTER TABLE 학생 ADD 학년 VARCHR(3);
4. DROP Ÿ 스키마, 도메인, 테이블, 뷰, 인덱스를 제거하는 명령문이다. Ÿ 표기형식
- DROP SCHEMA: 스키마를 제거한다. - DROP DOMAIN: 도메인을 제거한다. - DROP TABLE: 테이블을 제거한다. - DROP VIEW: 뷰를 제거한다. - DROP INDEX: 인덱스를 제거한다. - DROP CONSTRAINT : 제약조건을 제거. - CASCADE: 제거를 개체를 참조하는 다른 모든 개체를 함께 제거한다. - RESTRICT: 다른 개체가 제거할 개체를 참조 중일 경우 제거가 취소된다. [예제] <학생> 테이블을 제거하는 SQL 문을 작성하시오. 단, <학생> 테이블을 참조하는 모든 데이터도 함께 제거한다. DROP TABLE 학생 CASCADE; |
'Programming > DataBase' 카테고리의 다른 글
SQL - JOIN (0) | 2013.06.26 |
---|---|
sql - select 문 (0) | 2013.06.26 |
관계대수(Relational Algebra) (0) | 2013.06.26 |
뷰(View)의 개념 (0) | 2013.06.26 |
무결성 (Integrity) (0) | 2013.06.26 |