[DB] SQL: DDL, DML, DCL

안녕하·2023년 11월 14일
0

데이터베이스

목록 보기
1/21

데이터 언어

데이터베이스를 구축, 활용, 관리를 위해 DB 관리 시스템에 부탁할 때 사용하는 언어

  • 데이터 언어는 사용 목적에 따라 3가지로 구분된다.

  • 독립적인 언어가 아니라 하나의 데이터 언어를 기능에 따라 구분한 것이다.

    • DDL 데이터 정의어
    • DML 데이터 조작어
    • DCL 데이터 제어어

DDL을 통해 스키마 정의 -> 스키마에 따라 실제 인스턴스 저장 -> DML로 사용자가 실제 인스턴스 활용

  1. DDL: DB와 테이블 생성, 삭제, 수정
  2. DML: 테이블 내 데이터를 활용
  3. DCL: DB 접근 권한 부여 및 박탈, 커밋과 롤백



SQL (Structured Query Language)

관계 데이터베이스를 위한 표준 질의어로 많이 사용되는 언어

  • DBMS에 직접 접근하여 대화식으로 질의 작성하여 사용
  • DB의 데이터를 관리 및 활용하는 데 사용하는 언어
  • 구조적, 집합적, 선언적 질의 언어
    • DB에 질의하면 DBMS가 데이터 집합을 줌
    • 집합적 언어 (C 등 다른 프로그래밍 언어는 절차적 언어)
  • C, C++, Java 등으로 작성한 응용 프로그램에 삽입하여 사용 가능



1. DDL 데이터 정의어 (Data Definition Language)

데이터베이스 스키마를 정의하거나, 기존 스키마의 정의를 삭제하거나 수정하기 위해 사용하는 데이터 언어

  • 새로 만들 DB의 스키마 설명 (CREATE)

  • 이미 정의된 스키마의 구조나 제약조건 등을 삭제 또는 수정 (DROP, ALTER)

  • DB 사전에 생성, 삭제, 수정된 스키마가 저장된다.

DDL 구문

CREATE DB 개체 생성

  • DDL 컴파일러가 테이블을 만들어 데이터 사전에 저장한다
create table instructor(
  ID         char(5)          //무조건 5자
  name       varchar(20)      //var는 변경 가능함을 의미
  dept_name  varchar(20)      //최대 20자까지
  salary     numeric(8,2)    //유효숫자 8개, 소수점 2째 자리까지
)

DROP: 테이블 혹은 DB를 삭제

drop table instructor

ALTER: 테이블 수정

alter table instructor add column salary numeric(8, 2)
alter table instructor drop column salary



2. DML 데이터 조작어 (Data Manipulation Language)

  • 사용자가 데이터의 삽입, 삭제, 수정, 검색 등의 처리할 때 사용한다
  • DB 테이블의 행을 조작한다
  • SELECT, INSERT, UPDATE, DELETE 등

DML 종류

설명 방식에 따라 절자척 DML과 비절차적 DML로 나뉜다.

  1. 절차적 DML
    어떤 데이터를 원하는지, 해당 데이터를 얻으려면 어떻게 처리해야 하는지 구체적으로 설명

  2. 비절차적 DML
    어떤 데이터를 원하는지만 설명
    어떻게 처리하는지는 DBMS에 맡기고 선언만 한다 (선언적 언어라고도 함)


DML 구문

SELECT 데이터 조회

select ID, name, salary/12 as monthly_salary
from instructor

INSERT 데이터 삽입

insert into course
values ('CS-437', 'Databse Systems', 'Comp.Sci.', 4);

UPDATE 데이터 수정

update instructor
set salary = salary * 1.05
where salary < 70000;

DELETE 데이터 삭제

delete from instructor
where dept_name='Finance';



3. DCL 데이터 제어어 (Data Control Language)

  • DB에 저장된 데이터를 여러 사용자가 사용해도 무결성, 일관성을 유지하며 공유할 수 있도록 내부 규칙을 정의하는 데 사용하는 데이터 언어

  • DB 관리를 위해 DCL로 DBMS에 규칙을 설명하면 DBMS가 DB를 제어하고 보호한다

  • COMMIT, ROLLBACK, GRANT, REVOKE

  • DCL을 이용해 다음과 같은 DBMS의 특성을 보장한다

    1. 무결성: DB에 유효한 데이터만 유지
    2. 보안: 접근 권한에 따라 데이터 접근 차단 혹은 허용
    3. 회복: 장애가 발생해도 데이터의 일관성 유지
    4. 동시성: 여러 사용자가 동시에 데이터 접근 가능

DCL 구문

COMMIT
트랜잭션 작업이 정상적으로 완료되었음을 관리자에게 알림

ROLLBACK
트랜잭션 작업이 비정상적으로 종료되었을 때 원래 상태로 되돌림

GRANT
사용자에게 특정 작업에 대한 수행 권한 부여

REVOKE
사용자에게 특정 작업에 대한 수행 권한 박탈 및 회수


profile
세요

0개의 댓글