DDL (Data Definition Language, 데이터 정의어) - Auto Commit
- 데이터베이스 구조 또는 스키마(schema)를 정의하는 데 사용됨
- 직접 데이터베이스의 테이블에 영향을 미치기 때문에, DDL 명령어를 입력하는 순간 명령어에 해당하는 작업이 즉시(AUTO COMMIT) 완료된다는 것을 주의해야 함
DDL | 설명 |
CREATE | 데이터베이스의 객체를 생성 |
ALTER | 데이터베이스의 구조를 변경 |
DROP | 데이터베이스의 객체를 삭제 (테이블의 모든 데이터와 구조를 삭제) |
TRUNCATE | 테이블에 할당된 모든 공간을 포함하여 모든 레코드를 제거 (테이블 객체의 저장공간 재사용 가능) - 테이블의 전체 데이터를 삭제하는 경우, 시스템 활용 측면에서는 삭제된 데이터를 로그로 저장하는 DELETE TABLE 보다는 시스템 부하가 적은 TRUNCATE TABLE을 권고 - 단, TRUNCATE TABLE의 경우 삭제된 데이터의 로그가 없어서 ROLLBACK이 불가능하므로 주의 필요 - 그러나 SQL Server의 경우 사용자가 임의적으로 트랜잭션을 시작한 후 TRUNCATE TABLE을 이용하여 데이터를 삭제한 이후 오류가 발견되어, 다시 복구를 원할 경우 ROLLBACK 문을 이용하여 테이블 데이터를 원 상태로 되돌릴 수 있음 |
RENAME | 데이터베이스의 객체 이름을 변경 |
COMMENT | 데이터에 주석등을 추가 |
DML (Data Manipulation Language, 데이터 조작어)
- 데이터베이스의 데이터를 관리하는 데 사용
- DML 명령은 자동으로 커밋되지 않음. 즉, DML 명령에 의한 변경은 데이터베이스에 영구적이지 않으므로 롤백할 수 있음
- DML명령어의 경우 조작하려는 테이블을 메모리 버퍼에 올려놓고 작업을 하기 때문에, 실시간으로 테이블에 영향을 미치는 것은 아님
- 따라서 버퍼에서 처리한 DML 명령어가 실제 테이블에 반영되기 위해서는 COMMIT 명령어를 입력하여 TRANSACTION을 종료해야 함
- 그러나 SQL Server의 경우는 DML의 경우도 AUTO COMMIT으로 처리되기 때문에 실제 테이블에 반영하기 위해 COMMIT 명령어를 입력할 필요가 없음
DML | 설명 |
SELECT | 데이터를 검색 [옵션] - ALL : 기본 옵션이므로 별도로 지정하지 않아도 되며, 중복되는 데이터가 있더라도 모두 출력 - DISTINCT : 중복된 데이터가 있는 경우 1건만 출력 |
INSERT | 테이블에 데이터를 삽입 |
UPDATE | 테이블 내의 기존 데이터를 수정 |
DELETE | 테이블에서 데이터를 삭제 |
MERGE | UPSERT 작업 (INSERT 또는 UPDATE) 데이터가 테이블에 존재하지 않으면 INSERT, 존재하면 UPDATE를 수행 |
CALL | PL/SQL 또는 Java 서브 프로그램 호출 |
EXPLAIN PLAN | 데이터 접근 경로를 해석(SQL문이 어떻게 실행/작동하는지에 대한 점검/분석을 할 수 있도록 도와줌) |
LOCK TABLE | 동시성 제어 |
DCL (Data Control Language, 데이터 제어 언어) - Auto Commit
- 데이터베이스에 권한 부여
- 직접 데이터베이스의 테이블에 영향을 미치기 때문에 DCL 명령어를 입력하는 순간 명령어에 해당하는 작업이 즉시(AUTO COMMIT) 완료된다는 것을 주의해야 함
DCL | 설명 |
GRANT | 데이터베이스에 대한 사용자의 액세스 권한을 제공 (특정 사용자만 특정 작업을 할 수 있도록 지정 가능) |
REVOKE | GRANT 명령으로 주어진 액세스 권한을 해제 |
TCL (Transaction Control Language, Transaction 제어 언어)
- 데이터의 보안, 무결성, 회복, 병행 수행제어 등을 정의하는 데 사용
TCL | 설명 |
COMMIT | 트랜잭션의 작업 결과를 저장 반영 (트랜젝션 완료) |
ROLLBACK | 데이터베이스를 마지막 COMMIT 된 시점의 상태로 복원 데이터에 대한 변경 내용은 논리적인 트랜잭션으로 그룹화 될 수 있음 |
SAVEPOINT | - 저장점(SAVEPOINT)을 정의하면 롤백(ROLLBACK)할 때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있음 - 따라서 복잡한 대규모 트랜잭션에서 에러가 발생했을 때 SAVEPOINT까지의 트랜잭션만 롤백하고 실패한 부분에 대해서만 다시 실행할 수 있음(일부 툴에서는 지원이 안 될 수 있음) - 복수의 저장점을 정의할 수 있으며, 동일이름으로 저장점을 정의했을 때는 나중에 정의한 저장점이 유효 |
SET TRANSACTION | Transaction 지정 |
반응형
'DEV > DB & SQL' 카테고리의 다른 글
[SQL] Group By, Having, Order By (2) | 2024.11.28 |
---|---|
[SQL] WHERE 절에서는 별칭(alias)을 사용할 수 없음 / 대안 방법 (0) | 2024.05.07 |
[MSSQL] 날짜 형식 포맷 (CONVERT, GETDATE) (0) | 2024.04.16 |
[MSSQL] VIEW 테이블의 정의와 사용 방법 (0) | 2024.03.28 |
[MyBatis] MyBatis란? (2) | 2024.03.14 |
댓글