SQL(Structured Query Language)은 데이터베이스를 다루기 위한 언어로, 목적이나 여러 유형으로 나뉩니다. 그 중에서도 가장 기본이 되는 두 가지가 DDL(DataDefinition Language)와 DML(Data Manipulation Language)입니다.
데이터베이스의 구조(스키마)를 정의하거나 변경할 때 사용하는 언어. 테이블을 생성하거나 수정할 때 사용됩니다.
기본적으로 DDL 명령어는 실행되자마자 DB에 반영되며, 트랜잭션처럼 ROLLBACK으로 되돌릴 수 없는 경우가 많다. 하지만, PostgreSQL에서는 DDL도 트랜잭션 처리 대상이기 때문에 ROLLBACK으로 전부 되돌릴 수 있다.
CREATE : 테이블, 데이터베이스, 인덱스 등을 새로 생성ALTER : 기존 테이블의 구조를 수정 (열 추가/삭제/이름 변경 등)DROP : 테이블이나 데이터베이스 삭제TRUNCATE : 테이블의 모든 데이터를 빠르게 삭제 (구조는 유지)CREATECREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
user라는 테이블을 생성하고, 기본 키, 이름, 이메일, 생성 시간을 포함한 컬럼을 정의함
ALTERALTER TABLE users
ADD phone_number VARCHAR(20);
ALTER TABLE users
RENAME COLUMN name TO full_name;
ALTER TABLE users
ALTER COLUMN full_name TYPE TEXT;
ALTER TABLE users
DROP COLUMN email;
기존 테이블에 컬럼을 추가하거나, 이름을 바꾸거나, 삭제할 수 있음
DROPDROP TABLE users;
users테이블을 아예 삭제. 한 번 실행하면 데이터와 구조 모두 사라짐
TRUNCATETRUNCATE TABLE users;
users테이블의 모든 데이터를 빠르게 삭제하지만, 테이블 구조는 남음.DELETE보다 훨씬 빠르지만 ROLLBACK이 안 됨
데이터베이스에 저장된 데이터를 조작할 때 사용하는 언어.
테이블 구조는 그대로 두고, 데이터를 조회하거나 수정, 삭제하는 데 사용됩니다.
DML 명령은 트랜잭션 처리가 가능하며, COMMIT을 통해 변경사항을 확정하거나 ROLLBACK으로 되돌릴 수 있습니다.
SELECT : 데이터를 조회INSERT : 데이터를 테이블에 삽입UPDATE : 기존 데이터를 수정DELETE : 기존 데이터를 삭제SELECTSELECT id, name, email
FROM users
WHERE name ILIKE 'john%';
users테이블에서 이름이 'john'으로 시작하는 사용자의id,name,
ILIKE는 PostgreSQL의 대소문자 구분 없는 검색 연산자야
INSERTINSERT INTO users (name, email)
VALUES ('Alice', 'alice@example.com');
users테이블에Alice라는 이름과 이메일을 가진 새 사용자를 추가함
UPDATEUPDATE users
SET email = 'newalice@example.com'
WHERE name = 'Alice';
name이 'Alice'인 사용자의 이메일 정보를 수정함
DELETEDELETE FROM users
WHERE name = 'Alice';
name이 'Alice'인 사용자의 데이터를 삭제함
| 항목 | DDL (Data Definition Language) | DML (Data Manipulation Language) |
|---|---|---|
| 목적 | 데이터베이스 구조 정의 | 데이터 조작 (삽입, 조회, 수정, 삭제) |
| 주요 명령어 | CREATE, ALTER, DROP, TRUNCATE | SELECT, INSERT, UPDATE, DELETE |
| 트랜잭션 처리 | PostgreSQL: 가능 / 대부분의 DB: 불가 | 가능 (트랜잭션에 완전히 포함됨) |
| 자동 COMMIT | 대부분 DB에서 자동 COMMIT | 수동 COMMIT / ROLLBACK 가능 |
| 실행 결과 | 테이블 구조나 스키마 변경 | 테이블 내 데이터 값 변경 |
| 예시 | CREATE TABLE, DROP COLUMN 등 | INSERT INTO, SELECT FROM 등 |