SQL(Structured Query Language)은 데이터베이스에서 데이터를 정의하고 조작하고 통제하는 언어입니다. SQL 문법은 크게 다음과 같이 세 가지 범주로 나뉩니다.
- DDL (Data Definition Language) – 데이터 구조 정의
- DML (Data Manipulation Language) – 데이터 조작
- DCL (Data Control Language) – 권한 및 트랜잭션 제어
각 문법은 데이터베이스를 관리하는 데 필수적이며, 실무와 시험 모두에서 자주 등장합니다.
🏗️ 1. DDL: 데이터 정의어
DDL은 테이블, 인덱스, 뷰 등 데이터베이스의 구조 자체를 생성하거나 변경하는 데 사용됩니다. 이 명령어들은 트랜잭션의 영향을 받지 않으며, 대부분 자동 커밋됩니다.
주요 명령어와 기능
명령어 | 기능 | 비고 |
CREATE | 테이블, 뷰, 시퀀스 등 새 객체 생성 | 구조 정의 단계 |
ALTER | 기존 객체의 구조 수정 | 컬럼 추가, 수정, 삭제 가능 |
DROP | 객체 삭제 | 데이터와 구조 모두 제거 |
TRUNCATE | 테이블의 모든 데이터 삭제 | 빠르지만 복구 불가, 구조는 유지됨 |
예제
-- 회원 테이블 생성
CREATE TABLE member (
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
-- 컬럼 추가
ALTER TABLE member ADD birthdate DATE;
-- 테이블 삭제
DROP TABLE member;
-- 모든 데이터 삭제 (복구 불가)
TRUNCATE TABLE member;
📋 2. DML: 데이터 조작어
DML은 테이블 내 데이터를 실제로 입력, 조회, 수정, 삭제하는 명령어입니다. 사용자와 가장 가까운 SQL이며, 대부분의 실무 쿼리는 이 범주에 속합니다.
주요 명령어
명령어 | 기능 |
SELECT | 데이터 조회 |
INSERT | 새 데이터 삽입 |
UPDATE | 기존 데이터 수정 |
DELETE | 데이터 삭제 |
-- 데이터 삽입
INSERT INTO member (id, name, email)
VALUES (1, '홍길동', 'hong@example.com');
-- 데이터 조회
SELECT * FROM member WHERE id = 1;
-- 데이터 수정
UPDATE member SET name = '이순신' WHERE id = 1;
-- 데이터 삭제
DELETE FROM member WHERE id = 1;
⚠️ 주의사항
- DML 작업은 트랜잭션의 영향을 받음
- COMMIT을 하지 않으면 실제로 반영되지 않을 수 있음
- DELETE는 WHERE 조건 없이 쓰면 모든 데이터가 삭제됨
🔐 3. DCL: 데이터 제어어
DCL은 사용자 권한 제어 및 트랜잭션 관리에 관련된 명령어입니다. DB 관리자(DBA)가 주로 사용하는 영역이며, 시스템 보안이나 복구에 필수적입니다.
주요 명령어
명령어 | 기능 |
GRANT | 권한 부여 (ex. SELECT, INSERT 권한) |
REVOKE | 권한 회수 |
COMMIT | 변경사항 확정 (트랜잭션 종료) |
ROLLBACK | 변경사항 취소 (트랜잭션 원복) |
예제
-- SELECT 권한 부여
GRANT SELECT ON member TO user1;
-- 권한 회수
REVOKE SELECT ON member FROM user1;
-- 트랜잭션 확정
COMMIT;
-- 트랜잭션 취소
ROLLBACK;
💡 트랜잭션 예시
-- 상품 가격을 일괄 변경
BEGIN;
UPDATE product SET price = price * 1.1;
-- 조건이 만족되면 저장
COMMIT;
-- 문제가 발생했을 때
ROLLBACK;
📌 정리 요약
분류 | 주요 목적 | 대표 명령어 |
DDL | 데이터 구조 정의 | CREATE, ALTER, DROP, TRUNCATE |
DML | 데이터 조회 및 조작 | SELECT, INSERT, UPDATE, DELETE |
DCL | 권한 제어 및 트랜잭션 처리 | GRANT, REVOKE, COMMIT, ROLLBACK |
🧠 실무 팁
- 실무에선 DML 쿼리와 DCL 트랜잭션 제어를 함께 쓰는 경우가 많음
- DELETE vs TRUNCATE: DELETE는 조건별 삭제 + 복구 가능, TRUNCATE는 전체 삭제 + 복구 불가
- 실수 방지를 위해 DML 사용 시 WHERE 절은 항상 확인하고 실행할 것
📝 예상 기출 문제 예시
- TRUNCATE 명령어의 특징으로 옳은 것은?
→ 롤백 불가, 자동 커밋됨, 테이블 구조는 유지 - GRANT SELECT ON 테이블 TO 사용자 명령의 목적은?
→ 해당 사용자에게 조회 권한 부여
'프로그래밍' 카테고리의 다른 글
JOIN의 모든 것 – 관계형 데이터베이스의 핵심 연결 기술 (2) | 2025.08.04 |
---|---|
SELECT 구문과 조건절 완전정복 (4) | 2025.08.04 |
데이터 무결성과 제약조건: 정확하고 신뢰할 수 있는 데이터베이스의 기반 (1) | 2025.08.02 |
정규화와 이상 현상: 데이터 구조를 더 깔끔하고 안정적으로 만드는 법 (3) | 2025.08.01 |
데이터 모델과 성능: 성능을 고려한 데이터베이스 모델링 전략 (1) | 2025.08.01 |