http://blog.naver.com/wlsgkr91/220907703817
1.DDL - Data Define Language
-스키마, 도메인, 테이블, 뷰, 인덱스를 정의하거나 변경 또는 삭제할 때 사용하는 명령문이다.
-DDL로 정의된 내용은 메타데이터가 되며 시스템 카탈로그에 저장한다
메타 데이터: 데이터 관리를 위한, 즉 데이터를 위한 데이터
시스템 카탈로그: 시스템 그 자체에 관련이 있는 다양한 객체들에 관한 정보를 포함하는 시스템 데이터베이스 테이블
데이터 정의문에서 사용하는 테이블 종류는 세가지가 있다.
기본테이블은 이름을 가지고 있으며 독자적으로 존재한다. 뷰테이블은 독자적으로 존재하지 못하고, 기본테이블로부터 유도된 이름을 가진 가상 테이블이다.
임시테이블은 질의문 처리 결과로 만들어진 테이블로서, 이름을 가지지 않는다.
2.CREATE SCHEMA
-스키마를 정의하는 명령문이다.
-스키마의 식별을 위해 스키마 이름과 소유권자나 허가권자를 정의한다.
표기형식
CREATE SCHEMA 스키마 이름 AUTHORIZATION 사용자;
소유권자의 사용자 ID가 홍길동인 스키마 대학교의 정의문
CREATE SCHEMA 대학교 AUTHORIZATION 홍길동;
3.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)
//정의된 도메인은 이름이 SEX이며 문지형이고 크기는 1이다.
DEFAULT '여'
//자료형으로 SEX를 지정한 속성의 기본값으로 '여'를 취한다.
CONSTRAINT VALID-SEX CHECK(VALUE IN
('남', '여' , '?'));
//자료형으로 SEX를 지정한 속성은 남,여,?중에 하나의 값만
취할 수 있다.
SQL에서 지원하는 기본 data_type
정수INT,실수FLOAT,REAL,DOUBLE PRECISION,형식화된숫자DEC,고정길이 문자CHAR, 가변길이 문자VARCHAR, 고정길이 비트열BIT, 가변길이 비트열VARBIT, 날짜DATE, 시간TIME.
4.CREATE TABLE
-기본테이블을 정의하는 명령문이다.
표기형식
CREATE TABLE 기본테이블_이름
(속성명 date_type [NOT NULL],....,
PRIMARY KEY(기본키_속성명);
UNIQUE(대체키_속성명,...),
FOREIGN KEY(외래키_속성명,...),
REFERENCES 참조테이블(기본키_속성명),
CONSTRAINT 제약조건명 CHECK(조건식);
속성명:기본 테이블에 포함될 모든 속성에 대하여 속성명과 그 속성의 data_type, NOT NULL 여부를 지정한다.
PRIMARY KEY: 기본키 속성을 지정한다.
UNIQUE:대체키로 사용할 속성명들을 지정한다.
FOREIGN KEY~REFERENCES~
-참조할 다른 테이블과 그 테이블을 참조할 때 사용할 외래키
속성을 지정한다.
-외래키가 지정되면 참조 무결성의 CASCADE법칙이 적용.
CASCADE법칙
-참조 무결성 제약이 설정된 기본테이블의 어떤 데이터를 삭제하는 경우, 그 데이터와 밀접하게 연관 되어 있는 다른 테이블의 데이터들도 도미노처럼 자동으로 삭제됩니다. 이러한 법칙을 계단식,연속성, 이라는 사전적의미를 가진 CASCADE 법칙 이라 합니다.
이름, 학번, 전공, 성별, 생년월일로 구성된 '학생'테이블 정의
CREATE TABLE 학생
//학생테이블 생성
이름 VACHAR(15) NOT NULL,
//이름 속성은 가변길이문자 15자로 NULL 값을 갖지 않는다.
학번 VACHAR(15) NOT NULL,
//학번 속성은 가변길이 문자 15자로 NULL 값을 갖지 않는다.
전공 VACHAR(20) NOT NULL,
//전공 속성은 문자 20자로 NULL 값을 갖지 않는다.
성별 SEX,
//성별 속성은 자료형으로 'SEX'도메인을 사용한다.
생년월일 DATE,
//생년월일 속성은 DATE 자료형을 갖는다.
PRIMARY KEY(학번),
//학번을 기본키로 정의한다.
FOREIGN KEY(전공)
//전공은 학과 테이블의 학과코드 속성을 참조하는 외래키.
REFERENCES 학과(학과코드),
CONSTRAINT 성별제약
성별 속성의 값으로 '남'만 저장할 수 있게 지정한 제약조건이름은 성별제약이다.
CHECK(성별='남');
5.CREATE INDEX
CREATE INDEX는 인덱스를 정의하는 명령문
표기형식
CREATE [UNIQUE] INDEX 인덱스_이름
ON 기본테이블_이름({속성_이름[ASC|DESC],})
[CLUSTER];
UNIQUE 옵션
-사용하는 경우: 기본키나 대체키 같은 중복되는 값이 없는 속성으로 인덱스를 생성할 때
-생략하는 경우: 중복 값을 허용하는 속성으로 인덱스를 생성할때
정렬여부 지정
-ASC:오름차순 정렬, DESC:내림차순 정렬
-생략하면 오름차순으로 정렬된다.
CLUSTER 옵션:동일 인덱스 값을 갖는 튜플들을 그룹으로 묶을 때 사용한다.
고객 테이블의 기본키인 고객번호 속성에 대해 오름차순 정렬하여 고객번호_INX라는 이름으로 인덱스를 구성하라.
CREATE UNIQUE INDEX 고객번호_INX
ON 고객(고객번호 ASC);
6.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);
7.DROP
-스키마,도메인,기본테이블,뷰테이블,인덱스 등을 삭제하는 명령문이다.
표기형식
DROP SCHEMA 스키마_이름 [CASCADE | RESTRICITED];
DROP DOMAIN 도메인_이름 [CASCADE | RESTRICITED];
DROP TABLE 기본테이블이름 [CASCADE |RESTRICITED];
DROP VIEW 뷰_이름 [CASCADE | RESTRICITED];
DROP INDEX 인덱스_이름 ;
DROP SCHEMA-스키마를 삭제한다.
DROP DOMAIN:도메인을 삭제한다.
DROP TABLE-기본 테이블을 삭제한다.
DROP VIEW-뷰 테이블을 삭제한다.
DROP INDEX-인덱스를 삭제한다.
CASCADE 옵션:삭제할 요소를 참조하는 다른 모든 개체를
함께 삭제한다. 즉 Main Table의 데이터 삭제시 각 외래키에 대해 부합되는 모든 데이터를 삭제하는 참조 무결성의 법칙을
설정한다.
RESTRICTED옵션:삭제할 요소를 다른 개체가 참조중 일때는
삭제를 취소한다.
'프로그래밍 > 정보처리기사' 카테고리의 다른 글
정보처리기사 1과목 데이터베이스 DML (0) | 2017.01.11 |
---|---|
정보처리기사 1과목 데이터베이스 DML-SELECT (0) | 2017.01.10 |
정보처리기사 1과목 데이터베이스 SQL의 개념 (0) | 2017.01.10 |
정보처리기사 1과목 데이터베이스 정규화 (0) | 2017.01.09 |
정보처리기사 1과목 데이터베이스 관계대수 및 관계해석 (0) | 2017.01.06 |