1. DDL의 개요
- DB 구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어
- 번역한 결과가 데이터 사전이라는 특별한 파일에 여러 개의 테이블로서 저장
- DDL의 종류 : CREATE SCHEMA, CREATE DOMAIN, CREATE TABLE, CREATE VIEW, CREATE INDEX, ALTER TABLE, DROP 등
2. CREATE SCHEMA
CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_ID;
- 스키마를 정의하는 명령문
- 스키마의 식별을 위해 스키지마 이름과 소유권자나 허가권자를 정의
3. CREATE DOMAIN
CREATE DOMAIN 도메인명 [AS] 데이터_타입
[DEFAULT 기본값]
[CONSTRAINT 제약조건명 CHECK (범위값)];
(*SQL문에서 [대괄호]로 묶은 명령어들은 생략이 가능하다는 의미)
- 도메인을 정의하는 명령문
- 임의의 속성에서 취할 수 있는 값의 범위가 SQL에서 지원하는 전체 데이터 타입의 값이 아니고 일부분일 때, 사용자는 그 값의 범위를 도메인으로 정의할 수 있음
- 정의된 도메인 명은 일반적인 데이터 타입처럼 사용
<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
<CHAR과 VARCHAR의 차이>
- CHAR : 항상 지정된 크기만큼 기억 장소가 확보
- VARCHAR : 기억 장소의 크기가 지정되어도 필드에 저장된 데이터만큼만 기억 장소가 확보
4. CREATE TABLE
CREATE TABLE 테이블명
(속성명 데이터_타입 [DEFAULT 기본값] [NOT NULL], ...
[, PRIMARY KEY(기본키_속성명, ...)]
[, UNIQUE(대체키_속성명, ...)]
[, FOREIGN KEY(외래키_속성명, ...)]
[REFERENCES 참조테이블(기본키_속성명, ...)]
[ON DELETE 옵션]
[ON UPDATE 옵션]
[, CONSTRAINT 제약조건명] [CHECK (조건식)]);
- 테이블을 정의하는 명령문
- 기본 테이블에 포함될 모든 속성에 대하여 속성명과 그 속성의 데이터 타입, 기본값, NOT NULL 여부를 지정
- CREATE TABLE 명령어의 종류
- PRIMARY KEY : 기본키로 사용할 속성, 속성의 집합을 지정
- UNIQUE : 대체키로 사용할 속성, 속성의 집합을 지정하는 것으로 UNIQUE로 지정한 속성은 중복된 값을 가질 수 없음
- FOREIGN KEY ~ REFERENCES ~
- 참조할 다른 테이블과 그 테이블을 참조할 때 사용할 외래키 속성을 지정
- 외래키가 지정되면 참조 무결성의 CASCADE 법칙이 적용
- ON DELETE / UPDATE
- ON DELETE 옵션 : 참조 테이블의 튜플이 삭제되었을 때 기본 테이블에 취해야할 사항을 지정
- ON UPDATE 옵션 : 참조 테이블의 참조 속성 값이 변경되었을 때 기본 테이블에 취해야할 사항을 지정
- ON DELETE / UPDATE 의 하위 옵션
- NO ACTION : 참조 테이블에 변화가 있어도 기본 테이블에는 아무런 조취를 취하지 않음
- CASCADE : 참조 테이블의 튜플이 삭제되면 기본 테이블의 관련 튜플도 모두 삭제되고, 속성이 변경되면 관련 튜플의 속성 값도 모두 변경
- SET NULL : 참조 테이블에 변화가 있으면 기본 테이블의 관련 튜플의 속성 값을 NULL로 변경
- SET DEFAULT : 참조 테이블에 변화가 있으면 기본 테이블의 관련 튜플의 속성 값을 기본값으로 변경
- CONSTRAINT : 제약 조건의 이름을 지정, 이름을 지정할 필요가 없을 경우 CHECK절만 사용하여 속성 값에 대한 제약 조건을 명시
- CHECK : 속성 값에 대한 제약 조건을 정의
- 다른 테이블을 이용한 테이블의 정의
CREATE TABLE 신규테이블명 AS SELECT 속성명[, 속성명, ...] FROM 기존테이블명;
- 기존 테이블에서 신규 테이블에 그대로 적용되는 유형
- 추출되는 속성의 데이터 타입과 길이
- NOT NULL의 정의
- 기존 테이블에서 신규 테이블에 적용되지 않는 유형
- 제약 조건 : 신규 테이블에 적용되지 않으므로 신규 테이블을 정의한 후 ALTER TABLE 명령을 이용해 제약 조건을 추가
- 기존 테이블의 일부 속성만 신규 테이블로 생성할 수 있음 : 기존 테이블의 모든 속성을 신규 테이블로 생성할 때는 속성명 부분에 '*'를 입력
5. CREATE VIEW
CREATE VIEW 뷰명[(속성명[, 속성명, ...])]
AS SELECT문;
- 뷰 (View)를 정의하는 명령문
- 뷰 : 하나 이상의 기본 테이블로부터 유도되는 이름을 갖는 가상 테이블(Virtual Table)
- 테이블은 물리적으로 구현되어 실제로 데이터가 저장되지만, 뷰는 물리적으로 구현되지 않음
- 뷰를 생성하면 뷰 정의가 시스템 내에 저장되었다가 SQL 내에서 뷰 이름을 사용하면 실행 시간에 뷰 정의가 대체되어 수행
- SELECT 문을 서브 쿼리로 사용하여 SELECT문의 결과로서 뷰를 생성
- 서브 쿼리인 SELECT문에는 UNION이나 ORDER BY절을 사용할 수 없음
- 속성명을 기술하지 않으면 SELECT문의 속성명이 자동으로 사용
6. CREATE INDEX
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명(속성명 [ASC | DESC] [, 속성명 [ASC | DESC]])
[CLUSTER];
- 인덱스를 정의하는 명령문
- UNIQUE
- 사용된 경우 : 중복 값이 없는 속성으로 인덱스를 생성
- 생략된 경우 : 중복 값을 허용하는 속성으로 인덱스를 생성
- 정렬 여부 지정
- ASC : 오름차순 정렬
- DESC : 내림차순 정렬
- 생략된 경우 : 오름차순으로 정렬
- CLUSTER : 사용하면 인덱스가 클러스터드 인덱스로 설정됨
7. ALTER TABLE
ALTER TABLE 테이블명 ADD 속성명 데이터_타입 [DEFAULT '기본값'];
ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값'];
ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];
- 테이블에 대한 정의를 변경하는 명령문
- ADD : 새로운 속성(열)을 추가할 때 사용
- ALTER : 특정 속성의 Default 값을 변경할 때 사용
- DROP COLUMN : 특정 속성을 삭제할 때 사용
8. DROP
DROP SCHEMA 스키마명 [CASCADE | RESTRICT];
DROP DOMAIN 도메인명 [CASCADE | RESTRICT];
DROP TABLE 테이블명 [CASCADE | RESTRICT];
DROP VIEW 뷰명 [CASCADE | RESTRICT];
DROP INDEX 인덱스명 [CASCADE | RESTRICT];
DROP CONSTRAINT 제약조건명;
- 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 제약 조건 등을 제거하는 명령문
- DROP SCHEMA : 스키마를 제거
- DROP DOMAIN : 도메인을 제거
- DROP TABLE : 테이블을 제거
- DROP VIEW : 뷰를 제거
- DROP INDEX : 인덱스를 제거
- DROP CONSTRAINT : 제약 조건을 제거
- CASCADE : 제거할 요소를 참조하는 다른 모든 개체를 함께 제거, 주 테이블의 데이터 제거 시 각 외래키와 관계를 맺고 있는 모든 데이터를 제거하는 참조 무결성 제약 조건을 설정하기 위해 사용
- RESTRICT : 다른 개체가 제거할 요소를 참조중일 때는 제거를 취소
'Study > EIP' 카테고리의 다른 글
[정보처리기사 필기] SQL 응용 - 082. DML 데이터 조작어 (0) | 2025.01.14 |
---|---|
[정보처리기사 필기] SQL 응용 - 081. DCL 데이터 제어어 (0) | 2025.01.14 |
[정보처리기사 필기] SQL 응용 - 079. SQL의 개념 (0) | 2025.01.14 |
[정보처리기사 필기] 물리 데이터베이스 설계 - 078. 스토리지 Storage (0) | 2025.01.14 |
[정보처리기사 필기] 인터페이스 구현 - 059. 인터페이스 구현 검증 (0) | 2025.01.13 |