분류 | 명령어 | 설명 |
---|---|---|
DML: 데이터 조작어 (Manipulation) | SELECT INSERT UPDATE DELETE | |
DDL: 데이터 정의어 (Definition) | CREATE ALTER DROP RENAME | |
DCL: 데이터 제어어 (Control) | GRANT REVOKE | 데이터베이스에 접근하거나 객체들을 사용하도록 권한을 주고 회수하는 명령어 |
TCL: 트랜잭션 제어어 (Transaction Control Language) | COMMIT ROLLBAK | 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션)별로 제어하는 명령어 일부에서는 DCL로 분류하기도 한다 |
As-Is
비절차적 데이터 조작어(DML)는 사용자가 무슨(What) 데이터를 원하는지만을 명시한다.
To-Be
비절차적 데이터 조작어(DML)는 사용자가 무슨(What) 데이터를 원하는지만 명시하지만, 절차적 데이터 조작어는 어떻게(How) 데이터에 접근해야 하는지를 명세한다.
절차적 데이터 조작어로는 PL/SQL(OracleDB), T-SQL(SQL Server) 등이 있다.
()
를 사용하지 않는다Oracle
alter table TableName modify (colName1 colType.. , colName2 colType...)
SQL Server
alter table TableName alter colName1 colType ...;
alter table TableName alter colName2 colType ...;
alter table TableName drop colName;
IS NULL
을 제외한)는 알 수 없음을 반환한다DELETE
구문의 옵션NULL
이 된다create table T
(
C integer primary key,
D integer
);
create table S
(
B integer primary key,
C integer references T(C) on delete casacade
);
create table R
(
A integer primary key,
B integer references S(B) on delete Set NULL
);
delete from T;
select * from R;
>> 실행 결과
A | B |
---|---|
1 | NULL |
2 | NULL |
NULL
입력이 가능하다.NULL
이 될 수 없다.NULL
값을 가질 수 있다외래키 값은
NULL
값을 가질 수 없다.(X)
한 테이블에 하나만 존재해야 한다.(X)
DELETE/MODIFY
NULL
Default
값으로 설정INSERT
NULL
값으로 처리$
, _
, #
만 허용된다rename oldName to newName;
DROP | TRUNCATE | DELETE |
---|---|---|
DDL | DDL 일부 DML 성격 | DML |
Rollback 불가 | Rollback 불가 | Commit 이전 Rollback |
Auto Commit | Auto Commit | 사용자 Commit |
테이블이 사용한 모든 Storage를 Release | 테이블이 사용했던 Storage 중 최초 테이블 생성 시 할당된 Strorage만 남기고 Release | 데이터를 모두 Delete해도 사용했던 Storage는 Release되지 않음 |
테이블의 정의 자체를 삭제 (완전 삭제) | 테이블을 최초 생성된 초기 상태로 되돌림 로그를 남기지 않음 | 데이터만 삭제 |
원자성(atomicity)
트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지, 아니면 전혀 실행되지 않은 상태로 남아야만 한다.(All or Nothing)
일관성(consistency)
트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안 된다.
고립성(isolation)
트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안 된다.
지속성(durability)
트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.