공부 일지/정보처리산업기사

[정보처리산업기사] DDL(Data Define Language, 데이터 정의어)

배똥회장 2022. 4. 14. 17:14
728x90

 

 

 

1. 정의

  • DB 구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어
  • 번역한 결과가 데이터 사전(Data Dictionary)이라는 특별한 파일에 여러 개의 테이블로서 저장됨
  • CREATE SCHEMA, CREATE DOMAIN, CREATE TABLE, CREATE VIEW, CREATE INDEX, ALTER TABLE, DROP 등이 있음

 

 

 

 

2. CREATE SCHEMA

  • 스키마를 정의하는 명령문
  • 스키마의 식별을 위해 스키마 이름과 소유권자나 허가권자를 정의
  • 표기 형식 : CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_id;

 

 

 

 

3. CREATE DOMAIN

  • 도메인을 정의하는 명령문
  • 임의의 속성에서 취할 수 있는 값의 범위가 SQL에서 지원하는 전체 데이터 타입의 값이 아니고 일부분일 때, 사용자는 그 값의 범위를 도메인으로 정의할 수 있음
  • 정의된 도메인명은 일반적인 데이터 타입처럼 사용
  • 표기 형식 : CREATE COMAIN 도메인명 [AS] 데이터 타입 [DEFAULT 기본값] [CONSTRAINT 제약조건명 CHECK (범위값)];

 

 

 

 

4. SQL에서 지원하는 기본 데이터 타입

  • 정수(Integer) : INTEGER(4Byte 정수), SMALLINT(2Byte 정수)
  • 실수(Float) : FLOAT, REAL, DOUBLE PRECISION
  • 형식화된 숫자 : DEC(i, j), 단 i : 전체 자릿수, j : 소수부 자릿수
  • 고정길이 문자 : CHAR(n), CHARACTER(n), 단 n : 문자수
  • 가변길이 문자 : VARCHAR(n), CHARACTER VARYING(n), 단 n : 최대 문자수
  • 고정길이 비트열(Bit String) : BIT(n)
  • 가변길이 비트열 : VARBIT(n)
  • 날짜 : DATE
  • 시간 : TIME

 

 

 

 

5. CREATE TABLE

  • 테이블을 정의하는 명령문
  • 표기 형식 : 
CREATE TABLE 테이블명
(속성명 데이터_타입 [DEFAULT 기본값] [NOT NULL], ··· 
[, PRIMARY KEY(기본키_속성명, ···)]
[, UNIQUE(대체키_속성명, ···)]
[, FOREIGN KEY(외래키_속성명, ···)]
	[REPERENCES 참조테이블(기본키_속성명, ···)]
    [ON DELETE 옵션]
    [ON UPDATE 옵션]
[, CONSTRAINT 제약조건명] [CHECK (조건식)]);
  • 기본 테이블에 포함될 모든 속성에 대하여 속성명과 그 속성의 데이터 타입, 기본값, NOT NULL 여부를 지정
  • PRIMARY KEY : 기본키로 사용할 속성 또는 속성의 집합을 지정
  • UNIQUE : 대체키로 사용할 속성 또는 속성의 집합을 지정하는 것으로 UNIQUE로 지정한 속성은 중복된 값을 가질 수 없음
  • FOREIGN KEY ~ REFERENCES ~ : 참조할 다른 테이블과 그 테이블을 참조할 때 사용할 외래키 속성을 지정하며, 외래키가 지정되면 참조 무결성의 CASCADE 법칙이 적용됨
  • ON DELETE 옵션 : 참조 테이블의 튜플이 삭제되었을 때 기본 테이블이 취해야 할 사항을 지정하며, 옵션에는 NO ACTION, CASCADE, SET NULL, SET DEFAULT가 있음
  • ON UPDATE 옵션 : 참조 테이블의 참조 속성 값이 변경되었을 때 기본 테이블이 취해야 할 사항을 지정하며, 옵션에는 NO ACTION, CASCADE, SET NULL, SET DEFAULT가 있음
  • NO ACTION : 참조 테이블에 변화가 있어도 기본 테이블에는 아무런 조취를 취하지 않음
  • CASCADE : 참조 테이블의 튜플이 삭제되면 기본 테이블의 관련 튜플도 모두 삭제되고, 속성이 변경되면 관련 튜플의 속성 값도 모두 변경됨
  • SET NULL : 참조 테이블에 변화가 있으면 기본 테이블의 관련 튜플의 속성 값을 NULL로 변경
  • SET DEFAULT : 참조 테이블에 변화가 있으면 기본 테이블의 관련 튜플의 속성 값을 기본값으로 변경
  • CONSTRAINT : 제약 조건의 이름을 지정하며 이름을 지정할 필요가 없으면 CHECK절만 사용하여 속성 값에 대한 제약 조건을 명시
  • CHECK : 속성 값에 대한 제약 조건을 정의

 

 

 

 

6. 다른 테이블을 이용한 테이블 정의

  • 기본 테이블의 정보를 이용해 새로운 테이블을 정의
  • 표기 형식 : CREATE TABLE 신규테이블명 AS SELECT 속성명[, 속성명, ···] FROM 기존테이블명;
  • 기존 테이블에서 추출되는 속성의 데이터 타입과 길이는 신규 테이블에 그대로 적용
  • 기존 테이블의 제약 조건은 신규 테이블에 적용되지 않으므로 신규 테이블을 정의한 후 ALTER TABLE 명령을 이용해 제약 조건을 추가해야 함

 

 

 

 

7. CREATE VIEW

  • 뷰(View)를 정의하는 명령문
  • 표기 형식 : CREATE VIEW 뷰명[(속성명[, 속성명, ···])] AS SELECT문;
  • SELECT문을 서브 쿼리로 사용하여 SELECT문의 결과로 뷰를 생성
  • 서브 쿼리인 SELECT문에는 UNION이나 ORDER BY절을 사용할 수 없음
  • 속성명을 기술하지 않으면 SELECT문의 속성명이 자동으로 사용됨

 

 

 

 

8. CREATE INDEX

  • 인덱스를 정의하는 명령문
  • 표기 형식 : CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(속성명 [ASC | DESC] [, 속성명 [ASC | DESC]]) [CLUSTER];
  • UNIQUE : 중복 값을 허용할지를 지정하는 속성으로 인덱스를 생성
  • ASC : 오름차순 정렬 (기본값)
  • DESC : 내림차순 정렬
  • CLUSTER : 사용하면 인덱스가 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식인 클러스터드 인덱스로 설정됨

 

 

 

 

9. ALTER TABLE

  • 테이블에 대한 정의를 변경하는 명령문
  • 표기 형식 : 
ALTER TABLE 테이블명 ADD 속성명 데이터_타입 [DEFAULT 기본값];
ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT 기본값];
ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];
  • ADD : 새로운 속성(열)을 추가할 때 사용
  • ALTER : 특정 속성의 Default 값을 변경할 때 사용
  • DROP COLUMN : 특정 속성을 삭제할 때 사용

 

 

 

 

10. DROP

  • 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 제약 조건 등을 제거하는 명령문
  • 표기 형식 : 
DROP SCHEMA 스키마명 [CASCADE | RESTRICT];
DROP DOMAIN 도메인명 [CASCADE | RESTRICT];
DROP TABLE 테이블명 [CASCADE | RESTRICT];
DROP VIEW 뷰명 [CASCADE | RESTRICT];
DROP INDEX 인덱스명 [CASCADE | RESTRICT];
DROP CONSTRAINT 제약조건명;
  • CASCADE : 제거할 요소를 참조하는 다른 모든 개체를 함께 제거. 즉 주 테이블의 데이터 제거 시 각 외래키와 관계를 맺고 있는 모든 데이터를 제거하는 참조 무결성 제약 조건을 설정하기 위해 사용됨
  • RESTRICT : 다른 개체가 제거할 요소를 참조중일 때는 제거를 취소

 

 

 

 

 

728x90