본문 바로가기
정보처리기사 실기/데이터베이스

SQL - DDL

by 밍구몬 2018. 9. 12.

 

DDL(Data Definition Language)

 

  • DDL 스키마, 도메인, 테이블, , 인덱스의 정의를 변경 또는 제거 사용하는 언어.
  • DDL 정의된 언어는 메타데이터가 되며, 시스템 카탈로그에 저장됨.
  • 종류로는 CREATE, ALTER, DROP 있음

 

명령문

기능

CREATE

스키마, 도메인, 테이블, , 인덱스를 정의한다.

ALTER

데이블에 대한 정의를 변경한다.

DROP

스키마, 도메인, 테이블, , 트리거, 인덱스를 제거한다.

 

CREATE SCHEMA

 

  • 스키마 정의 명령문
  • 하나의 사용자에 속하는 테이블과 기타 구성 요소 등을 그룹 짓기 위한 .
  • 스키마를 식별하기 위한 스키마 이름과 해당 스키마의 소유권자나 허가권자를 정의.
  • CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_ID;

 

CREATE DOMAIN

 

  • 하나의 속성이 취할 있는 동일한 타입의 원자값들의 집합.
  • 임의의 속성에서 취할 있는 값의 범위가 SQL에서 지원하는 전체 데이터 타입의 값이 아니고 일부분일 , 사용자는 값의 범위를 도메인으로 정의할 있음.
  • CREATE DOMAIN 도메인명 데이터_타입
    DEFAULT '기본값'
    CONSTRAINT
    제약조건명 CHECK (범위값)
  • ex)
    CREATE DOMAIN SEX CHAR(1)
    DEFAULT '
    '
    CONSTRAINT sex_value CHECK (VALUE IN('
    ',''));

 

 

CREATE TABLE

 

  • 테이블을 정의하는 명령문.
  • CREATE TABLE member(
    속성명 데이터_타입 [NOT NULL],
    PRIMARY KEY (
    기본키_속성명),
    UNIQUE (
    대체키_속성명),
    FOREIGN KEY (
    외래키_속성명)
         REFERENCES
    참조테이블(기본키_속성명)
         ON DELETE
    옵션
       ON UPDATE 옵션
    CONSTRAINT 제약조건명 check (조건식));

 

  • 기본 테이블에 포함될 모든 속성에 대하여 속성명, 속성의 데이터 타입, NOT NULL 지정
  • PRIMATY KEY : 기본키로 사용할 속성 또는 속성의 집합을 지정.
  • UNIQUE : 대체키로 사용할 속성 또는 속성의 집합을 지정하는 것으로,중복된 값을 가질 없음.
  • FOREIGN KEY ~ REFERENCES : 외래키 속성과 참조 테이블에 취해야 정보를 지정.
    외래키가 지정되면 참조 무결성의 CASCADE법칙이 적용됨.
  • ON DELETE 옵션 : 참조 테이블의 튜플이 삭제되었을 기본 테이블에 취행야 사항을 지정.
    옵션에는 NO ACTION, CASCASE, SET NULL, SET DEFAULT 있음.
  • ON UPDATE 옵션 : 참조 테이블의 참조 속성 값이 변경되었을 기본 테이블에 취해야 사항을 지정.
    • NO ACTION : 참조 테이블에 변화가 있어도 기본 테이블에는 아무런 조치를 취하지 않음
    • CASCASE : 참조 테이블의 튜플이 삭제되면 기본 테이블의 관련 튜플도 모두 삭제되고, 속성이 변경되면 관련 튜플의 속성 값도 모두 변경됨.
    • SET NULL : 참조 테이블에 변화가 있으면 기본 테이블의 관련 튜블의 속성 값을 NULL 변경
    • SET DEFAULT : 참조 테이블에 변화가 있으면 기본 테이블의 관련 튜플의 속성 값을 기본값으로 변경.
  • CONSTRAINT : 제약 조건의 이름을 지정, 이름을 지정할 필요가 없으면 CHECK 절만 사용하여 속성 값에 대한 제약 조건을 명시
  • CHECK : 속성 값에 대한 제약 조건을 지정.

 

CREATE VIEW

 

  • 뷰는 하나 이상의 테이블로부터 유도되는 이름을 갖는 가상 테이블로 CREATE VIEW 정의함.
  • CREATE VIEW 뷰명(속성명[,속성명,])] AS SELECT;
  • Ex)
    CREATE VIEW
    디비(이름, 번호)
    AS SELECT
    이름,번호
    FROM 고객
    WHERE 지역='서울';

 

CREATE INDEX

 

  • 인덱스는 검색을 빠르게 하기 위해 만든 보조적인 데이터 구조이며, CREATE INDEX 인덱스를 정의하는 명령문.
  • CREATE [UNIQUE] INDEX <인덱스명>
    ON
    테이블명({속성명[ASC | DESC] [,속성명 [ASC | DESC]]})
    [CLUSTER];
  • EX)
    CREATE UNIQUE INDEX
    고객번호_idx
    ON
    고객(고객번호 DESC);
  • UNIQUE 생략하면 중복 허용 쓰면 중복 허용 안함
    ASC : 오름 차순
    DESC : 내림 차순
  • CLUSTER : 지정된 키에 따라 튜플들을 그룹으로 지정하기 위해 사용.

 

CREATE TRIGGER

 

  • 트리거는 데이터베이스 시스템에서 데이터의 입력, 갱신, 삭제 등의 이벤트가 발생할 마다 자동적으로 수행되는 사용자 정의 프로시저.
  • SQL 제약조건 방법을 통해 명시할 없는 무결성 제약조건을 구현하고, 관련 데이터를 일치시킬 주로 사용.
  • CREATE TRIGGER 트리거명 [동작시기 옵션][동작 옵션] ON 테이블명
    REDERENCING [NEW | OLD] TABLE AS 테이블명
    FOR EACH ROW
    WHEN
    조건식
    트리거
    BODY
  • 동작시기 : 옵션에는 AFTER BEFORE 있음.
    • AFTER : 테이블이 변경된 후에 트리거가 실행.
    • BEFORE : 테이블이 변경되기 전에 트리거가 실행.
  • 동작 옵션 : 트리거가 실행되게 작업의 종류를 지정. 옵션에는 INSERT, DELETE, UPDATE 있음
    • INSERT : 테이블에 새로운 레코드가 삽입될 트리거가 실행.
    • DELETE : 테이블의 레코드를 삭제할 트리거가 실행.
    • UPDATE : 테이블의 레코드가 수정될 트리거가 실행.
  • 테이블 선택 옵션 : 트리거가 적용될 테이블의 종류를 지정
    • NEW : 새로 추가되거나 변경에 참여할 튜플들의 집합에 트리거가 적용.
    • OLD : 변경된 튜플들의 집합에 트리거가 적용됨.
  • WHEN : 트리거가 실행되면서 지켜야할 조건을 지정..
  • 트리거 BODY : 트리거의 본문 코드를 입력하는 부분
    • BEGIN으로 시작해서 END 끝나는데, 적어도 하나 이상의 SQL문이 있어야 . 그렇지 않으면 오류 발생
    • 변수에 값을 치환할 때는 예약어 SET 사용.
  • EX) 테이블에 새로운 레코드가 삽일될 , 삽입되는 레코드에 학년 정보가 누락됐으면 학년 필드에 "신입생" 치환하는 트리거를 '학년정보_tri'라는 이름으로 정의
  • CREATE TRIGGER 학년정보_tri BEFORE INSERT ON 학생
    REFERENCING NEW TABLE AS new_table
    FOR EACH ROW
    WHEN new_table.
    학년=''
    BEGIN
         SET new_table.
    학년='신입생';
    END;

 

ALTER TABLE

 

  • 테이블에 대한 정의를 변경하는 명령문
  • ALTER TABLE 테이블명 ADD 속성명 데이터_타입 [DEFAULT '기본값'];
    • ADD : 새로운 속성 추가
  • ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값'];
    • ALTER : 속성의 기본값 변경
  • ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];
    • DROP : 속성을 제거.

 

DROP

 

  • 스키마, 도메인, 테이블, , 인덱스, 트리거를 제거하는 명령문
  • DROP {스키마, 도메인, 테이블, , 인덱스, 트리거} [CASCADE | RESTRICT];
  • CASCADE : 제거할 개체를 참조하는 다른 모든 개체를 함께 제거
  • RESTRICT : 다른 개체가 제거할 개체를 참조중일 경우 제거가 취소.

'정보처리기사 실기 > 데이터베이스' 카테고리의 다른 글

SQL - DCL  (0) 2018.09.12
SQL - DML  (0) 2018.09.12
SQL - JOIN  (0) 2018.09.12
SQL - SELECT  (0) 2018.09.12
데이터베이스  (0) 2018.09.10