본문 바로가기
  • 실행력이 모든걸 결정한다
DB/DB Concept

SQL(2) - DDL

by 김코더 김주역 2022. 1. 30.
반응형

1. DDL VS DML

1) DDL(Data Definition Language)

- 데이터 정의 언어

- 데이터베이스에 있는 정보의 구조를 표현

 

2) DML(Data Manipulation Language)

- 데이터 조작 언어

- 질의와 변경

 

 

2. 주요 데이터 타입

- INT, INTEGER, SHORTINT

- FLOAT, REAL, DOUBLE PRECISION, DECIMAL(n, d) (n자리중 오른쪽 d자리가 소수점), NUMBERIC (DECIMAL과 유사)

- CHAR(n) (고정 길이), VARCHAR(n) (가변 길이, 공간은 절약 되지만 시간이 오래 걸림)

- BIT(n) (고정 길이), BIT VARYING(n) (가변 길이)

- BOOLEAN [TRUE, FALSE, UNKNOWN]

- DATE, TIME

 

 

3. CREATE, DROP, ALTER

CREATE TABLE MOVIESTAR( NAME CHAR(30), ADDRESS VARCHAR(255), GENDER CHAR(1), BIRTHDATE DATE );
DROP TABLE MOVIESTAR;
ALTER TABLE MOVIESTAR ADD PHONE CHAR(16); ALTER TABLE MOVIESTAR DROP BIRTHDATE;

* 필드명을 변경하는 전용 명령어는 없고 삭제 후 다시 생성해야 함

 

 

4. 기본값(DEFAULT) 설정 예시

GENDER CHAR(1) DEFAULT 'M'; //테이블 생성 시
BIRTHDATE DATE DEFAULT DATE '0000-00-00' //테이블 생성 시
ALTER TABLE MOVIESTAR ADD PHONE CHAR(16) DEFAULT 'UNLISTED'

 

 

5. 도메인

- 어떤 데이터 타입을 나타내는 새로운 이름

 

도메인 정의 예시

CREATE DOMAIN MOVIEDOMAIN AS VARCHAR(50) DEFAULT 'unknown';

 

도메인 사용 예시 - 도메인을 Attribute의 타입으로 사용

title MOVIEDOMAIN //테이블 생성 시

 

도메인에 지정된 Default값 변경 예시

ALTER DOMAIN MOVIEDOMAIN SET DEFAULT 'no such title'

 

도메인 삭제 예시

DROP DOMAIN MOVIEDOMAIN

 

 

6. INDEX(색인)

- Attribute에 특정값을 가지는 튜플들을 효과적으로 찾을 수 있도록 지원하는 자료구조 - 예) B+ 테이블, 해쉬 테이블

- 색인은 SQL 표준에 포함되어 있지 않지만, 대부분의 상용 DBMS가 색인을 지원함

- 질의 처리 속도는 빨라지지만, 변경(삽입, 삭제, 갱신) 속도가 저하된다.

 

색인 생성 예시

CREATE INDEX YEARINDEX ON MOVIE(year);
CREATE INDEX KEYINDEX ON MOVIE(title, year);

 

색인 삭제 예시

DROP INDEX YEARINDEX

 

 

 

7. VIEW

1) VIEW 사용

- 물리적으로 존재하지 않는 가상의 릴레이션

※ 기본(stored) 테이블은 튜플들이 물리적으로 존재함

※ 임시 릴레이션은 질의 처리 도중에 임시로 생성되는 릴레이션으로, VIEW와는 달리 직접 사용할 수는 없음

- 자주 참조하는 데이터들에 적용할 때 유리함

- VIEW는 여러 릴레이션들로 정의될 수 있음

- 기본 릴레이션과 VIEW를 질의에 같이 표현할 수도 있음

 

VIEW 선언 예시 (이후의 예제에서 VIEW를 통해 삽입도 가능하도록 개선될 것)

CREATE VIEW PARAMOUNTMOVIE AS
	SELECT title, year FROM MOVIE WHERE studioName = 'Paramount'

 

VIEW의 Attribute 이름 변경 예시

 

 

2) VIEW의 변경 가능 조건

(1) SELECT 절에는 충분한 Attribute들이 있어야 함

- Key Attribute들은 NULL이 아니어야 한다. 아래 예시에서는 View에 삽입되는 튜플이 Join의 기준 attribute인 producerC#, cert#을 포함하지 않기 때문에 문제가 발생한다.

- VIEW를 통해 삽입되는 튜플은 그 VIEW를 통해 볼 수 있어야 한다. 아래 예시에서는 삽입된 튜플이 VIEW의 WHERE 조건에 걸리기 때문에, 삽입된 튜플을 VIEW를 통해서 볼 수 없게 된다.

 

(2) WHERE 절에 있는 부질의는 릴레이션 R을 포함해서는 안됨

- 일반적으로 하나의 릴레이션 R로부터 정의된 VIEW에 대해서만 변경을 허용한다.

 

 

3) VIEW 삭제 예시

DROP VIEW PARAMOUNTMOVIE

 

반응형

'DB > DB Concept' 카테고리의 다른 글

함수적 종속과 정규화  (0) 2022.01.31
제약 조건과 트리거  (0) 2022.01.29
SQL(1) - DML  (1) 2022.01.28
Algebraic(대수) Query Language  (0) 2022.01.27
E/R Model  (0) 2022.01.26

댓글