SQL 언어 카테고리

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;  -- 변경사항 취소