본문 바로가기
Computer Science/Database

[데이터베이스 핵심 요약] 3. DBMS 질의어 - DDL, DML, DCL

by pilgyeong 2022. 11. 11.

 

1. DDL (Data Definition Language)

1) 정의

데이터베이스의 객체를 생성하고, 삭제, 변경할 수 있는 SQL 명령어

 

2) 특징

  • 데이터베이스 스키마를 컴퓨터가 이해할 수 있도록 기술하는 데 사용한다.
  • 데이터베이스 관리자나 데이터베이스 설계자가 주로 사용한다.
  • 데이터베이스의 메타데이터(data about data)로 데이터 사전(Data Dictionary)에 저장한다.

 

3) 종류

  • CREATE: 새로운 데이터베이스 객체(테이블, 뷰, 인덱스, 프로시저 등)를 생성
  • ALTER: 존재하는 데이터베이스 객체를 변경
  • DROP: 존재하는 데이터베이스 객체를 제거
  • TRUNCATE: 테이블에서 데이터를 완전 삭제
  • RENAME: 데이블의 이름을 변경

참고로 TRUNCATE 명령어의 경우에는 데이터를 완전히 삭제하기 때문에 백업이 없다면 복구할 수 없다.

 

4) (헷갈리는) ALTER 사용방법

ALTER TABLE user_m ADD (deptno NUMBER(5));       -- 컬럼 추가
ALTER TABLE user_m RENAME COLUMN data To data;   -- 컬럼명 변경
ALTER TABLE user_m MODIFY (deptno NUMBER(10));   -- 컬럼속성 변경
ALTER TABLE user_m DROP COLUMN deptno;           -- 컬럼 삭제
ALTER TABLE user_m SET UNUSED COLUMN deptno;     -- 컬럼 사용 안함 처리
ALTER TABLE user_m DROP UNUSED COLUMNS;          -- 사용 안하는 컬럼 DROP

 

5) (그 외 간단한) DDL 사용방법

DROP TABLE user_m;           -- 테이블 삭제
RENAME user_m TO user_new;   -- 객체의 이름을 변경
TRUNCATE TABLE user_new;     -- 테이블에서 모든 데이터 제거 (복구 불가능)

 

6) Truncate와 Delete의 차이

delete는 삭제할 때 데이터를 언두 영역에 적재하면서 삭제하기 때문에 시간이 오래 걸리는 반면, truncate는 바로 삭제해버린다. (그래서 복구가 불가능)

 


 

2. DML (Data Manipulation Language)

 

1) 정의

데이터베이스 내부 스키마에 데이터를 입력, 수정, 삭제하거나 조회하기 위한 명령어이다.

 

2) 특징

  • 데이터베이스의 데이터 조작을 위한 필수 언어이다.
  • 질의 방법에 따라 성능의 차이가 발생한다.
  • 사용자가 직접 필요로 하는 답을 만드는 것이 아니라 데이터베이스의 처리 엔진(옵티마이저)이 답을 찾아 해결한다.

 

3) 종류

  • INSERT: 테이블의 전체 컬럼 또는 일부 컬럼에 값을 입력할 때 사용
INSERT INTO user_m VALUES (’P01’, ‘홍길동’, ‘차장’);           -- 한 건만 처리
INSERT INTO user_m SELECT user_id, name FROM user_bak;      -- 여러 건을 한 번에 처리
INSERT INTO user_m (user_id, name) VALUES (’P01’, ‘홍길동’);  -- 한 건만 처리

 

  • UPDATE: 테이블에 저장된 값을 변경할 때 사용
UPDATE user_m SET name=’’
UPDATE user_m SET name=’김길동’ WHERE user_id=’P01’;

 

  • DELETE: 테이블에 저장된 데이터(레코드)를 삭제할 때 사용
DELETE FROM user_m WHERE user_id=’P01’;
DELETE FROM user_m;

 

  • SELECT: 테이블에 저장된 값을 조회할 때 사용
SELECT user_id FROM user_m WHERE name=’홍길동’
SELECT * FROM user_m WHERE name like ‘홍%’;

 


 

3. DCL (Data Control Language)

 

1) 정의

데이터베이스에 접근하여 객체들을 사용하도록 권한을 주고 회수하는 명령어이다.

 

2) 특징

  • 데이터무결성 및 정확성 확보를 위한 기능
  • 불법적인 사용자로부터 데이터를 보호하기 위한 기능
  • 시스템 장애로부터 회복하거나 동시 접근을 위한 기능

 

3) 종류

  • COMMIT: 입력한 자료나 수정한 자료에 대하여 또는 삭제한 자료에 대하여 트랜잭션을 종료하고, 디스크에 최종 저장
UPDATE user_m SET height = 100 WHERE user_id=’P01’  -- 1개 row 수정
COMMIT;                                             -- 위 UPDATE 명령을 확정

 

  • ROLLBACK: 트랜잭션을 취소하고, 데이터 변경 이전 상태로 복구
DELETE FROM PLAYER;  -- 9,876개 row 삭제
ROLLBACK;            -- 위 DELETE 명령을 취소

 

  • GRANT: 사용자에게 객체에 대한 특정 권한을 부여하는 명령어
GRANT select, insert, delete, update ON user_m TO user A;

 

  • REVOKE: 사용자에게서 주어진 권한을 회수하는 명령어
REVORK select, inset, delete, update ON user_m FROM user A;