SQL - 복습 및 추가(DDL)

2020-05-23

해당 Post는 DDL에 대해 정리한 파일입니다.


DDL (Data Define Language)

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

  • 번역한 결과가 데이터 사전이라는 특별한 파일에 여러개의 테이블로 저장됨

  • 크게 CREATE(생성), ALTER(수정), DROP(삭제)로 구분

CREATE SCHEMA

스키마 : 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것, (개체, 속성, 관계등) 스키마를 정의하는 명령문입니다.

  • 스키마의 식별을 위해 스키마 이름과 소유권자나 허가권자를 정의합니다.
    CREATE SCHEMA 스키마명 AUTHORIZTAION 사용자ID;
    

    FOR EXAMPLE : 소유권자의 사용자 ID가 ‘홍길동’인 스키마 ‘대학교’를 정의하는 문장

    CREATE SCHEMA 대학교 AUTHORIZTAION 홍길동;
    

    CREATE DOMAIN

    도메인 : 하나의 속성이 취할 수 있는 동일한 유형의 원자값들의 집합 도메인을 정의하는 명령문입니다.

  • 임의의 속성에서 취할 수 있는 값의 범위가 SQL에서 지원하는 전체 데이터의 값이 아니고 일부분일 때, 사용자는 그 값의 범위를 도메인으로 지정
CREATE DOMAIN 도메인 명[AS] 데이터타입
       [DEFAULT 기본값]
       [CONSTRAINT 제약조건 명 CHECK (범위)];

FOR EXAMPLE : ‘성별’을 남, 녀 와 같이 정해진 1개의 문자로 표현되는 도메인 VALID-SEX를 정의하는 SQL문을 정의하는 문장

CREATE DOMAIN SEX CHAR(1)
  DEFAULT '남'
  CONSTRAINT VALID-SEX CHECK(VALUE IN('남','여');

CREATE TABLE

테이블 : 데이터베이스의 설계 단계에서는 주로 릴레이션이라 부르고, 조작이나 검색 시에는 테이블이라 부름 테이블을 정의하는 명령문입니다.

CREATE TABLE 테이블 명
      (속성명 데이터타입[DEFAULT 기본값] [NOT NULL], ...
       [,PRIMARY KEY(기본키,...)]
       [,UNIQUE(대체키,...)]
       [,FOREIGN KEY(외래키,...)]
            REFERENCES 참조테이블(기본키,...)]
       [CONSTRAINT 제약조건 명][CHECK (범위)];

FOR EXAMPLE : 이름, 학번, 전공, 성별, 생년월일 로 구성된 학생테이블을 SQL문을 작성

  • 이름은 NULL이 올수없고, 학번은 기본키
  • 전공은 학과테이블의 학과코드를 참조하는 외래키로 사용
  • 학과테이블에서 삭제가 일어나면 관련된 튜플들의 전공 값을 NULL로 만든다
  • 학과 테이블에서 학과코드가 변경되면 전공 값도 같은 값으로 변경
  • 생년월일은 1980-01-01이후 데이터만 저장
  • 제약 조건의 이름은 ‘생년월일제약’으로
  • 각 속성의 데이터 타입은 적당하게 지정한다. 단 성별은 도메인 SEX를 사용한다
    CREATE TABLE 학생
    (이름 VARCHAR(15) NOT NULL, //이름은 최대 15글자,NULL값을 가지지 않는다.
    학번 CHAR(8),
    전공 CHAR(5),
    성별 SEX,
    생년월일 DATE,
    PRIMARY KEY (학번),
    FOREIGN KEY(전공)REFERENCES 학과(학과코드)
        ON DELETE SET NULL// 학과테이블에서 튜플이 삭제되면 관련 모든 튜플의 전공 속성 값을 NULL로
        ON UPDATE CASCADE,//학과테이블에서 학과코드가 변경되면 관련된 모든 튜플의 전공 속성의 값도 같은 값으로 변경
        CONSDTRAINT 생년월일제약
              CHECK(생년월일>='1980-01-01'));
    

CREATE VIEW

뷰 : 물리적으로 구현되지 않습니다. 뷰를 정의하는 명령문입니다.

  • SELECT 문을 서브 쿼리로 사용하여 SELECT문의 결과로서 뷰를 생성
  • 서브쿼리인 SELECT문에는 UNION이나 ORDER BY 절을 사용할 수 없다.
    CREATE VIEW 뷰명[(속성명)]
    AS SELECT문;
    

    FOR EXAMPLE : 고객 테이블에서 주소가 안산시인 고객들의 성명과 전화번호를 안산 고객이라는 뷰로 정의

    CREATE VIEW 안산고객(성명, 전화번호)
    AS SELECT 성명, 전화번호
    FROM 고객
    WHERE 주소 = '안산시';
    

ALTER TABLE

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

  • ADD : 새로운 속성을 추가할 때 사용
  • ALTER : 특정 속성의 DEFAULT 값을 변경할 때 사용
  • DROP COLUMN : 특정 속성을 삭제할 때 사용

FOR EXAMPLE : 학생 테이블에 최대 3문자로 구성되는 학년 속성을 추가하시오

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

FOR EXAMPLE : 학생 테이블의 학번 필드의 데이터 타입과 크기를 VARCHAR(10)으로 하고 NULL 값이 입력되지 않도록 변경

ALTER TABLE 학생 ALTER 학번 VARCHAR(10) NOT NULL;

DROP

스키마, 도메인 등등을 제거하는 명령문

FOR EXAMPLE : 학생 테이블을 제거하되, 학생 테이블을 참조하는 모든 데이터를 함께 제거하시오

DROP TABLE 학생 CASCADE;