DML, DDL, DCL

정미·2023년 1월 31일

DDL (Data Definition Language)

데이터베이스를 정의하는 언어

  • 데이터의 전체 골격 결정

종류

  • CREATE: DB, TABLE 생성
  • ALTER: TABLE 수정
  • DROP: DB, TABLE 삭제
  • TRUNCATE: TABLE 초기화

TRUNCATE

  • 전체 데이터를 한 번에 삭제하는 방식
  • Truncate를 하면 Create한 직후 상태와 같다.
    • 최초 생성되었을 당시의 storage만 남기고, 데이터가 있던 storage는 release 된다.
  • 자동 Commit되기 때문에 이미 지운 데이터는 되돌릴 수 없다.
TRUNCATE TABLE table_name; 

DROP

  • 테이블 자체(관련 인덱스 등까지)를 처음부터 없었던 것처럼 완전히 날려버리는 방식
  • 자동 Commit되기 때문에 이미 지운 데이터는 되돌릴 수 없다.
    - 오라클10g부터 휴지통 개념처럼 잠시 삭제된다.
    - 테이블명: BIN$table_name

DML (Data Manipulation Language)

TABLE의 행과 열을 조작하는 언어

종류

  • SELECT: DATA 조회
  • INSERT: DATA 삽입
  • UPDATE: DATA 수정
  • DELETE: DATA 삭제

DELETE

  • WHERE절로 데이터를 하나씩 선택하여 삭제하는 방식
    • 테이블의 모든 데이터를 삭제하더라도 내부적으로는 한 줄씩 일일히 제거한다.
    • 이 경우 Truncate보다 성능과 처리 속도가 늦다.
  • 삭제된 데이터가 있던 storage는 release되지 않는다.
  • Delete 후 직접 Commit을 하기 전이라면 Rollback을 통해 되돌릴 수 있다.
DELETE FROM table_name [WHERE condition];
ROLLBACK;
COMMIT;

DCL (Data Control Language)

데이터 제어어
DATABASE에 접근하거나 객체에 권한을 주는 역할을 하는 언어

  • 데이터의 보안, 무결성, 회복 등을 정의하는데 사용한다.

종류

  • GRANT: 특정 DATABASE 사용자에게 특정 작업에 대한 수행 권한 부여
  • REVOKE: 특정 DATABASE 사용자에게 특정 작업에 대한 권한 박탈, 회수
  • COMMIT: TRANSACTION 작업이 정상적으로 완료
  • ROLLBACK: TRANSACTION 작업이 비정상적으로 종료되었을 때 원래 상태로 복구

GRANT

  • 사용자 혹은 ROLE에게 접속 권한, 객체 생성 권한, DBA 권한 등을 부여

System Privilege

GRANT 시스템_권한명 [, 시스템_권한명, .. | 롤명]
TO 사용자명 [, 사용자명, .. | 롤명, .. | PUBLIC | WITH ADMIN OPTION];
  • 시스템_권한명: 부여할 시스템 권한 이름
  • 롤명: 권한을 부여할/받을 ROLE 이름
  • PUBLIC: DB 역할을 모든 사용자에게 부여할 수 있다.
  • WITH ADMIN OPTION: 권한을 부여받은 사용자가 받은 권한을 다른 사용자 또는 역할에게 부여할 수 있다.

Object Privilege

GRANT 객체권한명 [컬럼]
ON 객체명
TO 유저명 | 롤명 | PUBLIC [WITH GRANT OPTION];
  • 컬럼명: ON절의 객체가 TABLE이나 VIEW일 경우
  • 객체명: TABLE, VIEW, SEQUENCE, PROCEDURE 등
  • TO ~: 사용자를 일일이 나열하거나 ROLE에 속한 사용자일 수도 있음
GRANT SELECT, INSERT
ON EMPLOYEE
TO JM WITH GRANT OPTION;

REVOKE

  • 사용자에게 부여한 권한을 회수

System Privilege

SQL>
CONNECT sys/manager AS SYSDBA;

SQL>
REVOKE CREATE USER, ALTER USER, DROP USER
FROM JM;

Object Privilege

REVOKE 권한명[, 권한명, ..] | ALL
ON 객체명
FROM 유저명[, 유저명] | 롤명 | PUBLIC
[CASCADE CONSTRAINTS]
  • CASCADE CONSTRAINTS: 참조 객체 권한에서 사용된 참조 무결성 제한을 같이 삭제 가능
  • 객체 권한을 부여한유저만 권한을 철회할 수 있다.
  • WITH ADMIN OPTION으로 객체 권한을 부여한 사용자의 객체 권한을 철회하면 권한을 부여받은 사용자가 부여한 객체 권한 또한 같이 철회되는 종속 철회가 발생한다.
REVOKE SELECT, INSERT
ON EMPLOYEE
FROM JM;

출처

0개의 댓글