본문 바로가기
프로그래밍/SQL

[SQL] DML, DDL, DCL

by 두둠칫 2021. 9. 17.
종류 명령어 설명 EX ON ORACLE
데이터 조작어 DML
(Data Manipulation Language)
SELECT DB 조회 .
INSERT, UPDATE, DELETE DB 변형 1)
INSERT INTO <TABLE_NAME> VALUES (VAL1, VAL2, ... )

2)
UPDATE <TABLE_NAME>
SET COL1 = VAL1
, COL2 = VAL2
, ...
WHERE <CONDITION>

3)
DELETE FROM <TABLE_NAME>
WHERE <CONDITION>

+)
MERGE INTO <TABLE_NAME>
USING DUAL
ON <CONDITION>
WHEN MATCHED THEN
SET CO1=VAL1
, COL2=VAL2
, ...
WHEN NOT MATCHED THEN
INSERT (CO1, COL2, ...)
VALUES (VAL1, VAL2, ...)
데이터 정의어 DDL
(Data Definition Language)
CREATE TABLE 생성 CREATE TABLE <TABLE_NAME> (
COL1 VARCHAR(8)
COL2 NUMBER NOT NULL
...
);
ALTER TABLE 변경(컬럼, 제약조건 추가 변경) 1) 컬럼추가/삭제/이름변경
ALTER TABLE <TABLE_NAME> ADD <COL_NAME> <COL_TYPE>;

ALTER TABLE <TABLE_NAME> DROP COLUMN <COLUMN_NAME>;
(삭제한 컬럼은 복구 불가)

ALTER TABLE <TABLE_NAME> RENAME COLUMN <COLUMN_NAME> TO <NEW_NAME>;

2) 제약조건 추가/삭제
ALTER TABLE <TABLE_NAME> ADD CONSTRAINT <CONSTRAINT_NAME> <CONSTRAINT_TYPE> (<COLUMN_NAME>);

ALTER TABLE <TABLE_NAME> DROP CONSTRAINT <CONSTRAINT_NAME>
RENAME TABLE명 변경 RENAME <TABLE_NAME>  TO <NEW_NAME>;
DROP TABLE 삭제 DROP TABLE <TABLE_NAME>;
TRUNCATE TABLE행 삭제 TRUNCATE TABLE <TABLE_NAME>;
데이터 제어어 DCL
(Data Control Language)
GRANT 사용자에게 권한 부여 GRANT <PRIVLEGE> PRIVILEGES ON <TABLE_NAME> TO <USER_NAME>;
REVOKE 사용자 권한 해제 REVOKE <PRIVILEGE> ON <TABLE_NAME> TO <USER_NAME>
트랜잭션 제어어 TCL
(Transaction Control Language)
COMMIT 트랜잭션 완료처리 COMMIT;
ROLLBACK 트랜잭션 취소처리 ROLLBACK;
SAVEPOINT 트랜잭션 사이 저장점 저장 DML1;
SAVEPOINT <NAME1>;
DML2;
SAVEPOINT <NAME2>;
DML3;
SAVEPOINT <NAME3>;

ROLLBACK TO <NAME>;

 

- COMMIT 혹은 ROLLBACK 이전의 데이터 상태

1) 메모리 버퍼에만 영향을 받았기 때문에, 데이터 변경 이전 상태로 복구 가능

2) 현재 사용자는 SELECT를 통해 결과 확인 가능

3) 다른 사용자는 결과 확인 불가능

4) 변경된 행은 LOCK되어 다른 사용자가 변경 불가능

 

- COMMIT 혹은 ROLLBACK 이후의 데이터 상태
1) 변경사항 DB 반영
2) 이전 데이터 삭제(복구 불가능)

3) 모든 사용자 결과 확인 가능
3) 관련 행 UNLOCK되어 다른 사용자 변경 가능

 

- TRANSACTION : DB의 논리적 연산단위(분할할 수 없는 단위)

- TCL 대상 SQL은 DML

 

- DML 이후 COMMIT 없이 DDL 실행되면, DDL 실행 전 자동 COMMIT

- DB가 정상적으로 접속 종료되면 TRANSACTION 자동 COMMIT

- 이상 종료 시 TRANSACTION 자동 ROLLBACK

'프로그래밍 > SQL' 카테고리의 다른 글

[SQL] Oracle IN vs EXISTS  (0) 2022.08.02