SQL 언어 카테고리
SQL은 데이터베이스를 다루기 위한 언어로, 목적에 따라 다음과 같이 분류된다.
DDL (Data Definition Language) - 데이터 정의 언어
데이터베이스 구조를 정의하고 변경하는 언어이다. 스키마, 테이블, 인덱스 등의 구조를 생성, 수정, 삭제한다.
주요 명령어:
CREATE: 데이터베이스, 테이블, 인덱스, 뷰 등을 생성ALTER: 기존 데이터베이스 객체의 구조를 수정DROP: 데이터베이스, 테이블, 인덱스 등을 삭제TRUNCATE: 테이블의 모든 데이터를 삭제 (구조는 유지)RENAME: 테이블명 변경
특징:
- 자동으로 커밋됨 (트랜잭션 롤백 불가)
- 데이터베이스 구조를 변경하는 작업
예시:
CREATE TABLE `users` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`email` VARCHAR(255) UNIQUE
);
ALTER TABLE `users` ADD COLUMN `age` INT;
DROP TABLE `users`;
DML (Data Manipulation Language) - 데이터 조작 언어
데이터베이스에 저장된 데이터를 조작하는 언어이다. 데이터의 조회, 삽입, 수정, 삭제를 수행한다.
주요 명령어:
SELECT: 데이터 조회INSERT: 새로운 데이터 삽입UPDATE: 기존 데이터 수정DELETE: 데이터 삭제
특징:
- 명시적으로 커밋해야 함 (트랜잭션 가능)
- 데이터의 내용을 변경하는 작업
예시:
SELECT `name`, `email` FROM `users` WHERE `id` = 1;
INSERT INTO `users` (`name`, `email`) VALUES ('홍길동', 'hong@example.com');
UPDATE `users` SET `name` = '김철수' WHERE `id` = 1;
DELETE FROM `users` WHERE `id` = 1;
참고: SELECT는 DQL (Data Query Language)로 별도 분류하기도 하지만, 일반적으로 DML에 포함시킨다.
DCL (Data Control Language) - 데이터 제어 언어
데이터베이스에 대한 접근 권한을 제어하는 언어이다. 사용자 권한을 부여하거나 회수한다.
주요 명령어:
GRANT: 사용자에게 권한 부여REVOKE: 사용자로부터 권한 회수
특징:
- 데이터베이스 보안과 관련된 작업
- 주로 데이터베이스 관리자(DBA)가 사용
예시:
GRANT SELECT, INSERT ON `mydb`.`users` TO 'user1'@'localhost';
REVOKE INSERT ON `mydb`.`users` FROM 'user1'@'localhost';
FLUSH PRIVILEGES;
추가: TCL (Transaction Control Language) - 트랜잭션 제어 언어
트랜잭션을 제어하는 언어이다.
주요 명령어:
COMMIT: 트랜잭션을 확정하고 변경사항을 저장ROLLBACK: 트랜잭션을 취소하고 변경사항을 되돌림SAVEPOINT: 트랜잭션 내 특정 지점을 저장
예시:
START TRANSACTION;
UPDATE `users` SET `name` = '김철수' WHERE `id` = 1;
UPDATE `users` SET `email` = 'kim@example.com' WHERE `id` = 1;
COMMIT; -- 변경사항 확정
-- 또는
ROLLBACK; -- 변경사항 취소