본문 바로가기
프로그래밍

SQL 기본 문법 총정리 (DDL, DML, DCL)

by 유형제맘 2025. 8. 2.

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 절은 항상 확인하고 실행할 것

📝 예상 기출 문제 예시

  1. TRUNCATE 명령어의 특징으로 옳은 것은?
    → 롤백 불가, 자동 커밋됨, 테이블 구조는 유지
  2. GRANT SELECT ON 테이블 TO 사용자 명령의 목적은?
    → 해당 사용자에게 조회 권한 부여