Day 2: SQL 기초
- DDL (Data Definition Language)
- CREATE, DROP, ALTER
- DML (Data Manipulation Language)
- SELECT, INSERT, UPDATE, DELETE
- DQL, DCL, TCL
- SELECT문의 세부 옵션과 JOIN
- 권한 제어(GRANT, REVOKE)
- 트랜잭션 제어(COMMIT, ROLLBACK, SAVEPOINT)
- 기본 SQL 예제와 실습 아이디어
1. DDL (Data Definition Language)
DDL은 데이터베이스 스키마를 정의·변경·삭제하기 위한 언어다. 스키마 구조(테이블, 인덱스, 뷰, 시퀀스 등)의 생성, 수정, 삭제에 관여한다.
- CREATE
- 테이블이나 데이터베이스 개체(스키마, 인덱스, 뷰 등)를 생성
- 예:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
created_at DATETIME
);
- DROP
- 기존에 생성된 스키마(테이블, 인덱스, 뷰 등)를 완전히 제거
- 예:
DROP TABLE users;
- ALTER
- 이미 존재하는 스키마 구조를 수정(컬럼 추가·삭제, 데이터타입 변경 등)
- 예:
ALTER TABLE users
ADD COLUMN email VARCHAR(100) AFTER username;ALTER TABLE users
MODIFY COLUMN username VARCHAR(100);
주의: DDL 명령은 기본적으로 오토 커밋(Auto Commit) 된다. 즉, 실행 즉시 변경 사항이 확정되어 롤백이 불가능한 경우가 많다.
2. DML (Data Manipulation Language)
DML은 실제 테이블에 저장된 데이터를 조작(추가, 수정, 삭제)하는 데 사용한다.
- INSERT
- 새로운 레코드(행)을 테이블에 추가
- 예:
INSERT INTO users (username, email, created_at)
VALUES ('alice', 'alice@example.com', NOW());
- UPDATE
- 기존 레코드를 수정
- 예:
UPDATE users
SET email = 'alice_new@example.com'
WHERE id = 1;
- DELETE
- 테이블에서 특정 레코드를 삭제
- 예:
DELETE FROM users
WHERE id = 1;
DML을 통해 변경된 내용은 트랜잭션(TCL) 내에서 커밋(Commit) 되기 전까지 실제 반영이 확정되지 않는다.
3. DQL, DCL, TCL
3.1 DQL (Data Query Language)
일부 분류 체계에서는 SELECT 구문을 DQL로 별도 구분하기도 한다.
- SELECT: 테이블 데이터를 조회한다.
- 예:
SELECT username, email
FROM users
WHERE created_at >= '2024-01-01 00:00:00'
ORDER BY created_at DESC; - JOIN: 여러 테이블을 연결해 데이터를 조회
SELECT u.username, p.post_title
FROM users AS u
JOIN posts AS p ON u.id = p.user_id
WHERE u.username = 'alice'; - 다양한 집계 함수(AVG, SUM, COUNT 등)와
GROUP BY,HAVING구문 등을 통해 통계 조회 가능
- 예:
3.2 DCL (Data Control Language)
데이터베이스 **권한(Privilege)**과 관련된 제어를 담당한다.
- GRANT
- 특정 사용자/역할(Role)에게 DB 객체 접근권한을 부여
- 예:
GRANT SELECT, INSERT ON users TO 'bob'@'%';
- REVOKE
- 기존에 부여된 권한을 회수
- 예:
REVOKE INSERT ON users FROM 'bob'@'%';
3.3 TCL (Transaction Control Language)
트랜잭션(논리적 작업 단위) 관련 동작을 제어한다.
- COMMIT
- 현재 트랜잭션에서 이루어진 DML 작업을 확정(영구 반영)
- 예:
COMMIT;
- ROLLBACK
- 현재 트랜잭션 범위 내의 변경 사항을 취소