SQL - DDL과 DML

urur-27·2025년 4월 13일

잡다한

목록 보기
7/17

SQL(Structured Query Language)은 데이터베이스를 다루기 위한 언어로, 목적이나 여러 유형으로 나뉩니다. 그 중에서도 가장 기본이 되는 두 가지가 DDL(DataDefinition Language)와 DML(Data Manipulation Language)입니다.


1. DDL

데이터베이스의 구조(스키마)를 정의하거나 변경할 때 사용하는 언어. 테이블을 생성하거나 수정할 때 사용됩니다.
기본적으로 DDL 명령어는 실행되자마자 DB에 반영되며, 트랜잭션처럼 ROLLBACK으로 되돌릴 수 없는 경우가 많다. 하지만, PostgreSQL에서는 DDL도 트랜잭션 처리 대상이기 때문에 ROLLBACK으로 전부 되돌릴 수 있다.

대표적인 DDL 명령어

  • CREATE : 테이블, 데이터베이스, 인덱스 등을 새로 생성
  • ALTER : 기존 테이블의 구조를 수정 (열 추가/삭제/이름 변경 등)
  • DROP : 테이블이나 데이터베이스 삭제
  • TRUNCATE : 테이블의 모든 데이터를 빠르게 삭제 (구조는 유지)

2. DDL 명령어 사용 예시

2.1 CREATE

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

user라는 테이블을 생성하고, 기본 키, 이름, 이메일, 생성 시간을 포함한 컬럼을 정의함


2.2 ALTER

  • 컬럼 추가

ALTER TABLE users
ADD phone_number VARCHAR(20);
  • 컬럼 이름 변경 (DBMS에 따라 다르며, PostgreSQL의 예시)

ALTER TABLE users
RENAME COLUMN name TO full_name;
  • 컬럼 데이터 타입 변경

ALTER TABLE users
ALTER COLUMN full_name TYPE TEXT;
  • 컬럼 삭제

ALTER TABLE users
DROP COLUMN email;

기존 테이블에 컬럼을 추가하거나, 이름을 바꾸거나, 삭제할 수 있음


2.3 DROP

DROP TABLE users;

users 테이블을 아예 삭제. 한 번 실행하면 데이터와 구조 모두 사라짐


2.4 TRUNCATE

TRUNCATE TABLE users;

users 테이블의 모든 데이터를 빠르게 삭제하지만, 테이블 구조는 남음. DELETE보다 훨씬 빠르지만 ROLLBACK이 안 됨


3. DML

데이터베이스에 저장된 데이터를 조작할 때 사용하는 언어.
테이블 구조는 그대로 두고, 데이터를 조회하거나 수정, 삭제하는 데 사용됩니다.
DML 명령은 트랜잭션 처리가 가능하며, COMMIT을 통해 변경사항을 확정하거나 ROLLBACK으로 되돌릴 수 있습니다.

대표적인 DML 명령어

  • SELECT : 데이터를 조회
  • INSERT : 데이터를 테이블에 삽입
  • UPDATE : 기존 데이터를 수정
  • DELETE : 기존 데이터를 삭제

4. DML 명령어 사용 예시

4.1 SELECT

SELECT id, name, email
FROM users
WHERE name ILIKE 'john%';

users 테이블에서 이름이 'john'으로 시작하는 사용자의 id, name, email을 조회함
ILIKE는 PostgreSQL의 대소문자 구분 없는 검색 연산자야


4.2 INSERT

INSERT INTO users (name, email)
VALUES ('Alice', 'alice@example.com');

users 테이블에 Alice라는 이름과 이메일을 가진 새 사용자를 추가함


4.3 UPDATE

UPDATE users
SET email = 'newalice@example.com'
WHERE name = 'Alice';

name이 'Alice'인 사용자의 이메일 정보를 수정함


4.4 DELETE

DELETE FROM users
WHERE name = 'Alice';

name이 'Alice'인 사용자의 데이터를 삭제함


5. DDL과 DML 비교

항목DDL (Data Definition Language)DML (Data Manipulation Language)
목적데이터베이스 구조 정의데이터 조작 (삽입, 조회, 수정, 삭제)
주요 명령어CREATE, ALTER, DROP, TRUNCATESELECT, INSERT, UPDATE, DELETE
트랜잭션 처리PostgreSQL: 가능 / 대부분의 DB: 불가가능 (트랜잭션에 완전히 포함됨)
자동 COMMIT대부분 DB에서 자동 COMMIT수동 COMMIT / ROLLBACK 가능
실행 결과테이블 구조나 스키마 변경테이블 내 데이터 값 변경
예시CREATE TABLE, DROP COLUMN 등INSERT INTO, SELECT FROM 등
profile
끄아악

0개의 댓글