7-2 DDL | DML | DCL
DDL (Data Definition Language) _ 데이터 정의어
데이터를 담는 그릇을 정의하는 언어.
테이블과 같은 데이터 구조를 정의하는 데 사용되는 명령어들로 특정 구조를 생성, 변경, 삭제, 이름을 바꾸는 데이터 구조와 관련된 명령어들.
DDL 대상
도메인 / 스키마 / 테이블 / 뷰 / 인덱스
** 스키마
- 외부 스키마 : 사용자 및 개발자의 관점. 사용자 뷰. 서브 스키마
- 개념 스키마 : DB 전체적인 논리적 구조. 전체적인 뷰. 개체간의 관계, 제약 조건, 접근 권한, 무결성, 보안에 대한 정의.
- 내부 스키마 : 물리적 저장장치의 관점. 실제 DB에 저장될 레코드 형식 정의. 저장 데이터 항목의 표현 방법 및 내부 레코드의 물리적 순서 등 표현.
DDL 명령어
- 생성 : CREATE
- 수정 : ALTER
- 삭제 : DROP / TRUNCATE
DML (Data Manipulation Language) _ 데이터 조작어
DB에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어.
DML 명령어
- 조회 : SELECT
- 삽입 : INSERT
- 갱신 : UPDATE
- 삭제 : DELETE
DCL (Data Control Language) _ 데이터 제어어
DBA가 데이터 보안, 무결성 유지, 병행 제어, 회복을 위해 사용하는 제어용 언어.
DCL 명령어
- 사용 권한 부여 : GRANT (GRANT 권한 ON 테이블 TO 사용자;)
- 사용 권한 취소 : REVOKE (REVOKE 권한 ON 테이블 FROM 사용자;)
도메인
하나의 속성이 가질 수 있는 원자값들의 집합. 속성의 데이터 타입과 크기, 제약조건 등의 정보.
스키마
DB의 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조
테이블
데이터를 저장하는 항목인 필드들로 구성된 데이터의 집합체.
뷰
논리 테이블로서 사용자에게 테이블과 동일.
- 논리적 데이터 독립성 제공 : DB에 영향을 주지 않고 애플리케이션이 원하는 형태로 데이터에 접근 가능.
- 데이터 조작 연산 간소화 : 애플리케이션이 원하는 형태의 논리적 구조를 형성하여 데이터 조작 연산 간소화.
- 보안 기능(접근제어) 제공
- 뷰 변경 불가
인덱스
검색 연산의 최적화를 위해 DB 내 값에 대한 주소 정보로 구성된 데이터 구조.
데이터를 빠르게 찾을 수 있는 수단이자 테이블에 대한 조회 속도를 높여주는 자료 구조.
테이블의 특정 레코드 위치를 알려주는 용도로 사용.
PK컬럼은 자동으로 인덱스 생성.
인덱스가 없을 경우, 테이블 풀 스캔을 함.
인덱스 생성 시, 데이터를 빠르게 찾을 수 있음.
- 순서 인덱스 : 데이터가 정렬된 순서로 생성되는 인덱스. B-Tree 알고리즘 활용.
- 해시 인덱스 : 해시 함수에 의해 직접 데이터에 키 값으로 접근하는 인덱스. 데이터 접근 비용이 균일, 튜플 양에 무관.
- 비트맵 인덱스 : 각 컬럼에 적은 개수 값이 저장된 경우 선택하는 인덱스. 수정 변경이 적을 경우 유용.
- 함수기반 인덱스 : 수식이나 함수를 적용하여 만든 인덱스.
- 단일 인덱스 : 하나의 컬럼으로만 구성한 인덱스. 주 사용 컬럼이 하나일 경우 사용.
- 결합 인덱스 : 두 개 이상의 컬럼으로 구성한 인덱스. Where 조건으로 사용하는 빈도가 높은 경우 사용.
- 클러스터드 인덱스 : PK 기분으로 레코드를 묶어 저장하는 인덱스. 저장 데이터의 물리적 순서에 따라 인덱스 생성. 특정 범위 검색 시 유리.
- 인덱스 범위 스캔 : 인덱스 루트 블록에서 리프블록까지 수직적으로 탐색한 후 리프 블록을 필요한 범위만 스캔하는 방식
- 인덱스 전체 스캔 : 수직적 탐색 없이 인덱스 리프 블록을 처음부터 끝까지 수평적으로 탐색하는 방식
- 인덱스 단일 스캔 : 수직적 탐색만으로 데이터를 찾는 스캔 방식
- 인덱스 생략 스캔 : 선두 컬럼이 조건 절에 빠졌어도 인덱스를 활용하는 스캔 방식
조인
- Inner Join
- Outer Join
> Left Outer Join
> Right Outer Join
> Full Outer Join
- Cross Join
- Self Join
집합 연산자
- UNION : 중복 행이 제거된 쿼리 결과를 반환하는 집합 연산자.
- UNION ALL : 중복 행이 제거되지 않은 쿼리 결과를 반환하는 집합 연산자. 중복 허용.
- INTERSECT : 두 쿼리 결과에 공통적으로 존재하는 결과를 반환하는 집합 연산자.
- MINUS : 첫 쿼리에 있고 두 번째 쿼리에는 없는 결과를 반환하는 집합 연산자.