Search

SQL 구성 (DDL, DML, DCL, TCL)

Created time
2022/02/28 17:12
Modified
2022/11/14 12:57
Tags
sql
SQL (Structured Query Language)

DDL(Data Definition Language) - 데이터 정의 언어

데이터베이스의 스키마(schema)를 정의하고 변경하는데 사용
DDL 명령어를 입력하면, 데이터베이스의 테이블에 명령어에 해당하는 작업이 즉시(AUTO COMMIT) 반영됩니다.
Search
DDL
SQL
Description
데이터베이스의 구조를 변경
데이터베이스의 객체를 삭제 (테이블의 모든 데이터와 구조를 삭제)
데이터베이스의 객체 이름을 변경
데이터에 주석등을 추가
테이블에 할당된 모든 공간을 포함하여 모든 레코드를 제거. (테이블 객체의 저장공간 재사용 가능)

DML(Data Manipulation Language) - 데이터 조작 언어

데이터베이스의 데이터를 관리하는 데 사용됩니다.
DML 명령은 자동으로 커밋되지 않습니다. 데이터베이스에 영구적이지 않아 롤백할 수 있습니다.
DML(INSERT, UPDATE, DELETE, SELECT) 명령어의 경우, 조작하려는 테이블을 메모리 버퍼에 올려놓고 작업을 하기 때문에 실시간으로 테이블에 영향을 미치는 것은 아닙니다.
버퍼에서 처리한 DML 명령어가 실제 테이블에 반영되기 위해서는 COMMIT 명령어를 입력하여 TRANSACTION을 종료해야 합니다.
Search
SQL
Description
데이터베이스에서 데이터를 검색. (RETRIEVE라고도 함)옵션 - ALL : 기본 옵션이므로 별도로 지정하지 않아도 되며, 중복되는 데이터가 있더라도 모두 출력 - DISTINCT : 중복된 데이터가 있는 경우 1건만 출력
테이블에 데이터를 삽입 (추가)
테이블 내의 기존 데이터를 수정
테이블에서 데이터를 삭제테이블의 전체 데이터를 삭제하는 경우, 시스템 활용 측면에서는 삭제된 데이터를 로그로 저장하는 DELETE TABLE 보다는 시스템 부하가 적은 TRUNCATE TABLE을 권고한다. 단, TRUNCATE TABLE의 경우 삭제된 데이터의 로그가 없어서 ROLLBACK이 불가능하므로 주의해야 한다. 그러나 SQL Server의 경우 사용자가 임의적으로 트랜잭션을 시작한 후 TRUNCATE TABLE을 이용하여 데이터를 삭제한 이후 오류가 발견되어, 다시 복구를 원할 경우 ROLLBACK 문을 이용하여 테이블 데이터를 원 상태로 되돌릴 수 있다.
UPSERT 작업 (INSERT 또는 UPDATE)데이터가 테이블에 존재하지 않으면 INSERT, 존재하면 UPDATE를 수행한다.
PL/SQL 또는 Java 서브 프로그램 호출
데이터 접근 경로를 해석 (SQL문이 어떻게 실행/작동하는지에 대한 점검/분석을 할 수 있도록 도와준다)
동시성 제어

DCL(Data Control Language) - 데이터 제어 언어

데이터베이스에 권한 부여
DCL 명령어를 입력하면 명령어에 해당하는 작업이 즉시(AUTO COMMIT)되어 데이터베이스 테이블에 반영됩니다.
Search
SQL
Description
데이터베이스에 대한 사용자의 액세스 권한을 제공. (특정 사용자만 특정 작업을 할 수 있도록 지정 가능)
GRANT 명령으로 주어진 액세스 권한을 철회.

TCL(Transaction Control Language) - Transaction 제어 언어

데이터의 보안, 무결성, 회복, 병행 수행제어 등을 정의하는데 사용합니다.
Search
SQL
Description
트랜잭션의 작업 결과를 저장 반영 (트랜젝션 완료)
데이터베이스를 마지막 COMMIT 된 시점의 상태로 복원데이터에 대한 변경 내용은 논리적인 트랜잭션으로 그룹화 될 수 있다.
저장점(SAVEPOINT)을 정의하면 롤백(ROLLBACK)할 때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다. 따라서 복잡한 대규모 트랜잭션에서 에러가 발생했을 때 SAVEPOINT까지의 트랜잭션만 롤백하고 실패한 부분에 대해서만 다시 실행할 수 있다. (일부 툴에서는 지원이 안 될 수 있음) 복수의 저장점을 정의할 수 있으며, 동일이름으로 저장점을 정의했을 때는 나중에 정의한 저장점이 유효하다.
Transaction 지정