본문 바로가기
SQLD

[SQLD 개념 요약] DDL, DML, DCL, TCL

by 하부루 2024. 11. 11.

DML(Data Manipulation Language)

  • 데이터의 삽입(INSERT), 수정(UPDATE), 삭제(DELETE), 병합(MERGE)
  • 저장(Commit) 또는 취소(Rollback) 반드시 필요

INSERT

  • 한번에 한 행만 입력 가능(SQL Server는 여러 행 동시 삽입 가능)
  • 컬럼 별 데이터 타입과 사이즈에 맞게 삽입
  • 작성하지 않은 컬럼은 NULL이 입력됨
INSERT INTO 테이블 VALUES(value1, value2, ...)
INSERT INTO 테이블(컬럼1, 컬럼2, ...) VALUES (value1, value2, ...)

UPDATE

  • 데이터 수정 시 사용
  • 다중으로 컬럼 수정 가능
UPDATE 테이블명
	SET 수정할 컬럼명 = 수정값
    WHERE 조건;

DELETE

  • 데이터를 삭제
  • 행 단위 실행
DELETE FROM 테이블명
   WHERE 조건;

MERGE

  • 데이터 병합
  • INSERT, UPDATE, DELETE 작업을 동시에 수행 가능
MERGE INTO 테이블명
USING 참조테이블
	ON (연결조건)
WHEN MATCHED THEN
	UPDATE
    	SET 수정내용
    DELETE (조건)
WHEN NOT MATCHED THEN
	INSERT VALUES(value1, value2, ...);

TCL(Transaction Control Language)

  • 대표적인 트랜잭션 제어어로는 Commit, Rollback이 있다
  • DML에 의해 조작된 결과를 트랜잭션 별로 제어하는 명령어
  • DML 수행 후 트랜잭션을 정상적으로 종료하지 않을 경우 LOCK이 발생 할 수 있다
  • LOCK : 하나의 트랜잭션이 수행되는 동안 다른 트랜잭션이 동시에 접근하지 못하도록 제한 하는것

트랜잭션

  • 트랜잭션은 데이터베이스의 논리적 연산 단위
  • 원자성(ALL OR NOTHING 개념) -> 모두 Commit 하거나 Rollback 처리

COMMIT

  • 입력, 수정, 삭제한 데이터를 저장하는 명령어
  • 한 번 COMMIT을 수행하면 COMMIT 이전에 수행된 작업은 모두 저장되고 되돌릴 수 없다

ROLLBACK

  • 입력, 수정, 삭제한 데이터에 대한 변경을 취소하는 명령어
  • 데이터베이스에 저장되지 않고 최종 COMMIT 지점/변경 전/SAVE POINT 지점으로 되돌린다
  • 최종 COMMIT 시점 이전까지 ROLLBACK 가능

DDL(Data Definition Language)

  • 데이터 구조 정의(객체 생성, 삭제, 변경) 언어
  • CREATE(객체 생성), ALERT(객체 변경), DROP(객체 삭제), TRUNCATE(데이터 삭제)
  • AUTO COMMIT이라는 특징이 있다(명령어 수행 후 즉시 저장, 원복 불가)
CREATE TABLE 테이블명
	컬럼1 데이터타입 [DEFAULT 값] [제약조건],
   	컬럼2 데이터타입 [DEFAULT 값] [제약조건],
);

ALERT

  • 테이블 구조 변경(컬럼명, 데이터 타입, 사이즈 , default 값 ...)
  • 여러 컬럼 동시 추가 가능(반드시 괄호 사용)
  • 값이 없는 빈 컬럼일 경우 데이터 타입 변경 가능(CHAR, VARCHAR 타입은 데이터가 있어도 변경 가능)
  • 동시에 여러 컬럼 이름 변경, 컬럼 삭제 불가능

DELETE/DROP/TRUNCATE 차이점

  • DELETE : 데이터 일부 또는 전체 삭제(롤백 가능)
  • TRUNCATE : 데이터 전체만 삭제 가능(롤백 불가)
  • DROP : 데이터와 구조를 동시 삭제(롤백 불가)

VIEW(뷰)

  • VIEW는 저장공간을 가지지는 않지만 테이블처럼 조회 및 수정할 수 있는 객체
CREATE VIEW 뷰이름
AS
조회쿼리;

VIEW 종류

  • 단순뷰: 하나의 테이블 조회 뷰
  • 복합뷰 : 둘 이상의 테이블 조인 뷰

VIEW 특징

  • VIEW는 기본 테이블과 같은 형태를 가지고 있으며, 조작도 기본 테이블과 거의 같음
  • VIEW는 가상 테이블이기에 물리적으로 구현되어 있지않고 저장공간을 차지하지 않음
  • 데이터를 안전하게 보호가능
  • 기본 테이블이 삭제되면 그 테이블을 참조하여 만든 VIEW 또한 삭제됨

VIEW의 장단점

  • 장점
    • 논리적 독립성 제공
    • 데이터의 접근을 제어 함으로써 보안유지
    • 사용자의 데이터 관리 단순화
    • 데이터의 다양한 지원 가능
  • 단점
    • 뷰의 정의 변경 불가
    • 삽입, 삭제, 갱신 연산에 제한
    • 인덱스 구성 불가

DCL(Data Control Language)

  • 객체에 대한 권한을 부여(GRANT) 하거나 회수(REVOKE)하는 기능
  • 테이블 소유자는 타 계정에 테이블 조회 및 수정 권한 부여 및 회수 가능

권한

  • 일반적으로 본인 소유가 아닌 테이블은 원칙적으로 조회 불가
  • 업무적으로 필요 시 테이블 소유자가 아닌 다른 계정에 테이블 조회, 수정 권한 부여 가능

권한의 종류

  • 오브젝트 권한
    • 테이블에 대한 권한 제어
    • ex) SELECT, INSERT, UPDATE, DELETE, MERGE 권한
    • 테이블 소유자는 타 계정에 소유한 테이블에 대한 조회 및 수정 권한 부여 및 회수 가능
  • 시스템 권한
    • 시스템 작업을 제어
    • ex) 테이블 생성, 인덱스 삭제 권한 등등
    • 관리자 권한만 권한 부여 및 회수 가능

권한 부여 옵션

  • WITH GRANT OPTION
    • WITH GRANT OPTION으로 받은 오브젝트 권한을 다른 사용자에게 부여 가능
    • 중간 관리자가 부여한 권한은 중간 관리자만 회수 가능
    • 중간 관리자에게 부여한 권한 회수 시 제 3자에게 부여한 권한도 같이 회수 됨
  • WITH ADMIN OPTION
    • WITH ADMIN OPTION을 통해 부여 받은 시스템 권한/롤 권한을 다른 사용자에게 부여 가능
    • 중간 관리자를 거치지 않고 직접 회수 가능
    • 중간 관리자 권한 회수 시 제 3자에게 부여한 권한은 회수 되지 않음(남아있음)

GRANT

  • 권한 부여 시 반드시 테이블 소유자나 관리자 계정으로 접속하여 권한을 부여해야함
  • 동시에 여러 유저에 대한 권한 부여 가능
  • 동시 여러 권한 부여 가능

REVOKE

  • 동시 여러 권한 회수 가능
  • 이미 회수된 권한 재회수 불가
  • 동시 여러 유저로부터의 권한 회수 가능