DATABASE

DML, DDL, DCL 정리

Ambitions 2020. 3. 6. 15:13

정보처리기사 시험을 준비하면서 외웠던 내용들인데, 자꾸 까먹게 되어서 간단하게 정리를 해보고자 한다.

 

※ 컬럼(Column)과 필드(Field)는 같은의미로 사용된다.

 

[DML]

먼저 DML(Data Manipulation Language)은 데이터 조작어를 의미한다, DML에 해당하는 명령어는 

SELECT(조회), INSERT(삽입), UPDATE(수정), DELETE(삭제)등이있다, 개발필드에서는 CRUD라고도 표현하는 것 같다.

DDL의 각 명령어를 작성하는 기본 틀은 다음과 같다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
-- select문
SELECT* FROM [table_name];
 
-- insert문
INSERT INTO [table_name](column_name) VALUES(); 
 
-- update문
UPDATE [table_name] SET [column_name] = value;
 
-- delete문(보통 조건절 없이 사용하지는 않는다.)
DELETEFROM [table_name]
 

 

[DDL]

DDL(Data Definition Language)은  데이터 정의어를 의미한다,  DDL에 해당하는 명령어는 

CREATE(생성), ALTER(추가), DROP(삭제), RENAME(재정의), TRUNCATE(삭제 후 생성)등이 있다, DDL을 작성하는 기본틀은 다음과 같다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
-- CREATE문
CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
);
 
-- ALTER문(순서대로 추가, 삭제, 수정)
ALTER TABLE 테이블명
ADD 추가할 컬럼명  데이터 유형;
 
ALTER TABLE table_name
ADD column_name(data_type(size));
 
ALTER TABLE table_name
DROP COLUMN column_name;
 
ALTER TABLE table_name
MODIFY (column_name data_type(size) DEFAULT 'value' (NOT NULL or NULL));
 
-- RENAME문
ALTER TABLE table_name
RENAME COLUMN column_name TO column_name;
 
 
-- DROP 문(테이블 이름을 선언해주지 않으면 전체 테이블을 삭제함)
DROP TABLE table_name;
 
-- TRUNCATE문(테이블의 모든 데이터를 삭제할 때 사용)
TRUNCATE TABLE table_name;
 
 
 

 

여기서 하나 정리하자면 TRUNCATE와 DELETE문은 테이블의 내용을 지우는 명령을 하는 것까지는 동일하나 DELETE문의 경우 테이블의 정보(인덱스, 메모리)등은 그대로 두고 데이터만 지우지만, TRUNCATE문의 경우 테이블의 정보까지 모두 삭제 후 자동커밋 된다는 점이다.(rollback불가)

 

[DCL]

DCL(Data Control Language)은 데이터 제어어룰 뜻하며, 데이터베이스 접근권한을 관리하는 명령어들의 모음이다.

DCL에 해당하는 명령어는 GRANT(권한부여), REVOKE(권한삭제),COMMIT(결과반영), ROLLBACK(결과되돌리기)등이 있다. DCL작성 기본틀은 다음과 같다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
-- GRANT문
GRANT 권한(SELECTDELETE...) on (database_name) TO USER_ID
 
-- REVOKE문 
REVOKE 권한 FROM (database_name or tablename) USER_ID
 
-- COMMIT, ROLLBACK
UPDATE table_name SET id = 1;
DELETE FROM TABLE_NAME;
 
COMMIT; or ROLLBACK;
 
 
 
 

 

COMMIT과 ROLLBACK은 DML 작업 내용에 한하여 작동한다.

이렇게 DDL, DML, DCL을 정리해보았는데, 현재 내가 개발하면서 사용하는건 DML정도 밖에 없는 것 같다.

또 요즘은 데이터베이스 툴이 너무 잘되어 있어서 저 명령어들을 사용할 일이 있을지 모르겠다..