DDL :: 데이터 정의어

이주희·2022년 10월 6일
0

CS

목록 보기
55/66

1. SQL

데이터베이스를 접근하고 조작하는 데 필요한 표준 언어를 활용할 수 있게 해주는 규칙

SQL 문법의 분류 🌟🌟🌟

(1) DDL 데이터 정의어

  • 데이터를 정의하는 언어
  • 테이블이나 관계의 구조를 생성하는 데 사용
    CREATE, ALTER, DROP, TRUNCATE

(2) DML 데이터 조작어

  • 데이터베이스에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어
  • SELECT문은 질의어(Query)라고 부름
    SELECT, INSERT, UPDATE, DELETE

(3) DCL 데이터 제어어

  • 데이터베이스 관리자가 데이터 보안, 무결성 유지, 병행 제어, 회복을 위해 DBA가 사용하는 제어용 언어
    GRANT, REVOKE

2. DDL :: 데이터 정의어

데이터를 정의하는 언어로서 데이터를 담는 그릇을 정의하는 언어

2-1. DDL의 대상 🌟🌟🌟

(1) 도메인

  • 하나의 속성이 가질 수 있는 원자값들의 집합

(2) 스키마 🌟🌟🌟

  • 데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조

    외부 스키마

    • 사용자나 개발자의 관점에서 필요로 하는 데이터베이스의 논리적 구조
    • 사용자 뷰를 나타냄

    개념 스키마

    • 데이터베이스의 전체적인 논리적 구조
    • 전체적인 뷰를 나타냄
    • 개체 간의 관계, 제약 조건, 접근 권한, 무결성, 보안에 대해 정의

    내부 스키마

    • 물리적 저장 장치의 관점에서 보는 데이터베이스 구조
    • 실제로 데이터베이스에 저장될 레코드의 형식을 정의하고 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 표현

(3) 테이블

  • 데이터 저장 공간

(4) 뷰

  • 하나 이상의 물리 테이블에서 유도되는 가상의 테이블

(5) 인덱스

  • 검색 연산의 최적화를 위해 데이터베이스 내 값에 대한 주소 정보로 구성된 데이터 구조
  • <킷값, 주소> 형태의 자료구조

3. 테이블 = Relation = Entity

  • 데이터를 저장하는 항목인 필드들로 구성된 데이터의 집합체
용어설명
튜플/행테이블 내의 행을 의미하며 레코드라고도 함, 튜플은 테이블에서 같은 값을 가질 수 없음
애트리뷰트/열테이블 내의 열을 의미, 열의 개수를 디그리라고 함
식별자여러 개의 집합체를 담고 있는 관계형 데이터베이스에서 각각의 구분할 수 있는 논리적인 개념
카디널리티튜플의 개수
차수애트리뷰트의 개수
도메인하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자값들의 집합

4. 뷰

  • 뷰는 논리 테이블로서 사용자에게(생성 관점 아닌 사용 관점에서) 테이블과 동일하다.

  • 논리적 데이터 독립성 제공

  • 데이터 조작 연산 간소화

  • 보안 기능(접근 제어) 제공

  • 뷰의 정의는 변경이 불가하다. (삭제 했다가 다시 만들어야 함)

    뷰의 이름이나 쿼리문은 변경할 수 없다.

    뷰를 통해 접근 가능한 데이터는 변경 가능!
    (👆🏻 모든 경우에 가능한 것은 아니고 일부 제약이 존재한다.
    ex) 기본키에 해당하는 컬럼이 뷰에 정의되어 있지 않은 경우 INSERT 불가능)


4-1. 뷰의 목적

  • 뷰를 사용하는 주된 이유는 단순 질의어를 편리하게 사용할 수 있기 때문이다.

  • FROM절에 있는 하나의 뷰를 통해 뷰를 구성하는 복수의 테이블을 대체한다.

  • 테이블의 중요 데이터 일부만을 제공할 수 있는 장단점이 있다.


5. 인덱스

  • 검색 연산의 최적화를 위해 데이터베이스 내 값에 대한 주소 정보로 구성된 데이터 구조
  • <킷값, 주소> 형태의 자료구조

5-1. 데이터베이스 파일 구조

(1) 순차 방법

  • 레코드들의 물리적 순서가 레코드들의 논리적 순서와 같게 순차적으로 저장하는 방법

(2) 인덱스 방법 🌟🌟🌟

  • 인덱스가 가리키는 주소를 따라 원하는 레코드에 접근할 수 있도록 하는 방법 <킷값, 주소>의 쌍으로 구성

(3) 해싱 방법

  • 킷값을 해시 함수에 대입시켜 계산한 결과를 주소로 사용하여 레코드에 접근하게 하는 방법

5-2. 인덱스 종류

(1) 순서 인덱스

  • 데이터가 정렬된 순서로 생성되는 인덱스

(2) 해시 인덱스

  • 해시 함수에 의해 직접 데이터에 키 값으로 접근하는 인덱스

(3) 비트맵 인덱스

  • 각 컬럼에 적은 개수의 값이 저장된 경우 선택하는 인덱스

(4) 함수 기반 인덱스

  • 수식이나 함수를 적용하여 만든 인덱스

(5) 단일 인덱스

  • 하나의 컬럼으로만 구성한 인덱스

(6) 결합 인덱스

  • 두 개 이상의 컬럼으로 구성한 인덱스

(7) 클러스터드 인덱스

  • 기본 키 기준으로 레코드를 묶어서 저장하는 인덱스

5-3. 인덱스 명령어

  • 생성
    CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명);

  • 삭제
    DROP INDEX 인덱스명;

  • 변경
    ALTER [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명);


5-4. 인덱스 스캔 방식

(1) 인덱스 범위 스캔 Index Range Scan

  • 인덱스 루트 블록에서 리프 블록까지 수직적으로 탐색한 후에 리프 블록을 필요한 범위만 스캔

(2) 인덱스 전체 스캔 Index Full Scan

  • 수직적 탐색 없이 인덱스 리프 블록을 처음부터 끝까지 수평적으로 탐색

(3) 인덱스 단일 스캔 Index Unique Scan

  • 수직적 탐색만으로 데이터를 찾는 스캔

(4) 인덱스 생략 스캔 Index Skip Scan

  • 선두 컬럼이 조건 절에 빠졌어도 인덱스를 활용하는 스캔

6. DDL 명령어

  • CREATE
  • ALTER
  • DROP
  • TRUNCATE
profile
🍓e-juhee.tistory.com 👈🏻 이사중

0개의 댓글