데이터 베이스 관리? - DML, DCL, TCL 명령어 기초부터 활용까지
SQL(Structured Query Language)은 데이터베이스를 관리하고 데이터를 조작하기 위한 표준 언어입니다.
SQL은 기능에 따라
DDL(Data Definition Language), DML(Data Manipulation Language),
DCL(Data Control Language), TCL(Transaction Control Language)로 나뉘며,
이 중 DML, DCL, TCL은 데이터를 다루는 데 중요한 역할을 합니다.
이번 글에서는 DDL에 이어 DML, DCL, TCL 명령어의 기초와 활용 방법을
각각의 명령어 카테고리와 예제를 통해 실습 기반으로 알아보겠습니다.
1. DML(Data Manipulation Language): 데이터 조작어
DML은
데이터베이스 테이블의 데이터를 조회, 삽입, 수정, 삭제하는 명령어를 포함합니다.
DML은
데이터의 내용을 직접적으로 다루며, 데이터베이스의 데이터를 조작하는 데 사용됩니다.
DML의 주요 명령어
- SELECT: 데이터를 조회.
- INSERT: 데이터를 삽입.
- UPDATE: 데이터를 수정.
- DELETE: 데이터를 삭제.
1-1. SELECT: 데이터 조회
SELECT는 데이터베이스에서 원하는 데이터를 조회할 때 사용하는 명령어입니다.
예제: Users 테이블에서 데이터 조회
SELECT * FROM Users; -- 모든 열과 행 조회
SELECT UserName, Email FROM Users WHERE Age >= 18; -- 특정 열과 조건 조회
1-2. INSERT: 데이터 삽입
INSERT는 데이터베이스 테이블에 새로운 데이터를 추가합니다.
예제: Users 테이블에 데이터 삽입
INSERT INTO Users (UserID, UserName, Email, Age, Country)
VALUES (1, '홍길동', 'hong@gmail.com', 25, 'Korea');
INSERT INTO Users (UserID, UserName, Age)
VALUES (2, '김철수', 30); -- Country는 기본값 'Korea'로 삽입
1-3. UPDATE: 데이터 수정
UPDATE는 기존 테이블 데이터를 수정하는 명령어입니다.
예제: Users 테이블 데이터 수정
UPDATE Users
SET Age = 35, Country = 'USA'
WHERE UserID = 1; -- UserID가 1인 사용자의 나이와 국가 수정
1-4. DELETE: 데이터 삭제
DELETE는 테이블에서 특정 데이터를 삭제합니다.
예제: Users 테이블 데이터 삭제
DELETE FROM Users WHERE UserID = 2; -- UserID가 2인 사용자 삭제
2. DCL(Data Control Language): 데이터 제어어
DCL은 데이터베이스의 보안과 접근 권한을 관리하는 데 사용됩니다.
사용자가 데이터베이스에 접근하거나 특정 작업을 수행할 수 있도록 권한을 부여하거나 취소합니다.
DCL의 주요 명령어
- GRANT: 특정 사용자에게 권한을 부여.
- REVOKE: 특정 사용자에게 부여한 권한을 취소.
2-1. GRANT: 권한 부여
GRANT는 특정 사용자에게 데이터베이스에 대한 권한을 부여합니다.
예제: 사용자에게 SELECT 권한 부여
GRANT SELECT ON Users TO UserA; -- UserA에게 Users 테이블의 SELECT 권한 부여
2-2. REVOKE: 권한 취소
REVOKE는 특정 사용자에게 부여된 권한을 취소합니다.
예제: 사용자 권한 취소
REVOKE SELECT ON Users FROM UserA; -- UserA의 SELECT 권한 취소
3. TCL(Transaction Control Language): 트랜잭션 제어어
TCL은 데이터베이스에서 트랜잭션(Transaction)을 관리하고, 데이터의 무결성과 일관성을 보장합니다.
트랜잭션은 데이터베이스에서 실행되는 작업의 단위로, TCL 명령어는 트랜잭션의 실행 상태를 제어합니다.
TCL의 주요 명령어
- COMMIT: 트랜잭션의 결과를 저장.
- ROLLBACK: 트랜잭션을 취소하고 이전 상태로 복구.
- SAVEPOINT: 트랜잭션 내에 특정 지점을 저장.
- SET TRANSACTION: 트랜잭션의 속성을 설정.
3-1. COMMIT: 트랜잭션 확정
COMMIT은 트랜잭션에서 수행된 모든 변경 사항을 영구적으로 저장합니다.
예제: 데이터 삽입 후 COMMIT
INSERT INTO Users (UserID, UserName, Email, Age, Country)
VALUES (3, '이영희', 'lee@gmail.com', 28, 'Korea');
COMMIT; -- 트랜잭션 확정
3-2. ROLLBACK: 트랜잭션 취소
ROLLBACK은 트랜잭션에서 수행된 모든 작업을 취소하고, 트랜잭션 시작 이전 상태로 복구합니다.
예제: 데이터 삽입 후 ROLLBACK
INSERT INTO Users (UserID, UserName, Email, Age, Country)
VALUES (4, '박민수', 'park@gmail.com', 22, 'USA');
ROLLBACK; -- 트랜잭션 취소, 데이터 삽입 취소됨
3-3. SAVEPOINT: 트랜잭션 내 특정 지점 저장
SAVEPOINT는 트랜잭션 내에서 특정 지점을 저장하여, 해당 지점으로 부분적으로 ROLLBACK 할 수 있도록 합니다.
예제: SAVEPOINT 사용
SAVEPOINT Save1;
INSERT INTO Users (UserID, UserName, Age)
VALUES (5, '최유리', 20); -- Save1 이후의 작업
ROLLBACK TO Save1; -- Save1 지점 이후의 작업 취소
3-4. SET TRANSACTION: 트랜잭션 속성 설정
SET TRANSACTION은 트랜잭션의 격리 수준(Isolation Level)을 설정합니다.
예제: 트랜잭션 격리 수준 설정
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
4. DML, DCL, TCL에서 중요한 개념
트랜잭션과 DML
- DML 명령어는 COMMIT을 수행하기 전까지 변경 사항이 데이터베이스에 반영되지 않습니다.
- 변경 사항을 저장하려면 COMMIT을, 취소하려면 ROLLBACK을 사용해야 합니다.
DCL과 보안
- DCL 명령어는 사용자 권한을 관리하며, 데이터베이스의 보안을 유지하는 데 필수적입니다.
TCL과 무결성
- TCL 명령어는 데이터의 일관성과 무결성을 보장하며, 특히 대규모 데이터 작업에서 중요한 역할을 합니다.
5. DML, DCL, TCL 간의 차이점
구분 | DML | DCL | TCL |
목적 | 데이터 조회, 삽입, 수정, 삭제 | 데이터 접근 권한 관리 | 트랜잭션 관리 |
주요 명령어 | SELECT, INSERT, UPDATE, DELETE | GRANT, REVOKE | COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION |
특징 | 트랜잭션 제어가 가능 | 데이터베이스 보안 유지 | 데이터 무결성과 일관성 보장 |
6. 결론 : 데이터를 조작하여 보안을 유지하고, 데이터의 무결성과 일관성 보장!
DML, DCL, TCL은 데이터베이스 관리에서 각각 중요한 역할을 수행합니다.
- DML은 데이터를 직접적으로 조작하고,
- DCL은 데이터 보안을 유지하며,
- TCL은 데이터의 무결성과 일관성을 보장합니다.
이번 글에서 다룬 주요 명령어들을 활용하여 데이터베이스 작업을 실습해 보세요.
SQL의 모든 영역을 이해하면 효율적이고 안정적인 데이터베이스 관리를 할 수 있습니다!
반응형