📌 1. DDL (Data Definition Language) - 데이터 정의
✔ 테이블, 인덱스, 뷰 등을 생성, 수정, 삭제하는 SQL 문법
🚀 (1) 기초 - 테이블 생성 및 삭제
✔ 테이블 생성 (CREATE TABLE)
CREATE TABLE users (
id INT IDENTITY(1,1) PRIMARY KEY, -- 자동 증가 기본 키
username VARCHAR(50) NOT NULL UNIQUE, -- 사용자 이름 (유일성 제약)
email VARCHAR(100) NOT NULL UNIQUE, -- 이메일 (유일성 제약)
password VARCHAR(255) NOT NULL, -- 비밀번호
created_at DATETIME DEFAULT CURRENT_TIMESTAMP -- 생성 시간 자동 입력
);
✔ 테이블 삭제 (DROP TABLE)
DROP TABLE users;
🚀 (2) 응용 - 테이블 변경 및 제약 조건 추가
✔ 기존 테이블에 컬럼 추가 (ALTER TABLE)
ALTER TABLE users ADD age INT DEFAULT 20;
✔ 컬럼 이름 변경
ALTER TABLE users RENAME COLUMN age TO user_age;
✔ 컬럼 데이터 타입 변경
ALTER TABLE users ALTER COLUMN user_age SMALLINT;
✔ 컬럼 삭제
ALTER TABLE users DROP COLUMN user_age;
🚀 (3) 고급 - 인덱스 및 뷰
✔ 인덱스 생성 (CREATE INDEX)
CREATE INDEX idx_username ON users(username);
✔ 뷰 생성 (CREATE VIEW)
CREATE VIEW user_info AS
SELECT id, username, email FROM users;
📌 2. DML (Data Manipulation Language) - 데이터 조작
✔ 데이터를 조회(SELECT), 삽입(INSERT), 수정(UPDATE), 삭제(DELETE)하는 SQL 문법
🚀 (1) 기초 - 기본적인 CRUD (Create, Read, Update, Delete)
✔ 데이터 삽입 (INSERT INTO)
INSERT INTO users (username, email, password)
VALUES ('john_doe', 'john@example.com', 'hashedpassword123');
✔ 데이터 조회 (SELECT)
SELECT * FROM users;
✔ 데이터 수정 (UPDATE)
UPDATE users
SET password = 'newhashedpassword'
WHERE username = 'john_doe';
✔ 데이터 삭제 (DELETE)
DELETE FROM users WHERE username = 'john_doe';
🚀 (2) 응용 - WHERE, JOIN, GROUP BY
✔ 조건 조회 (WHERE)
SELECT * FROM users WHERE email LIKE '%@gmail.com';
✔ 조인 (JOIN)
SELECT users.username, orders.amount
FROM users
INNER JOIN orders ON users.id = orders.user_id;
✔ 그룹화 및 집계 (GROUP BY)
SELECT role, COUNT(*) as user_count
FROM users
GROUP BY role;
🚀 (3) 고급 - 서브쿼리, 윈도우 함수
✔ 서브쿼리 (Subquery)
SELECT username, email FROM users
WHERE id IN (SELECT user_id FROM orders WHERE amount > 100);
✔ 윈도우 함수 (RANK, ROW_NUMBER)
SELECT username, role,
RANK() OVER (PARTITION BY role ORDER BY created_at DESC) AS ranking
FROM users;
📌 3. DCL (Data Control Language) - 권한 관리
✔ 데이터베이스 사용자 권한을 관리하는 SQL 문법
🚀 (1) 기본적인 권한 부여 (GRANT)
GRANT SELECT, INSERT ON users TO 'john'@'localhost';
🚀 (2) 권한 회수 (REVOKE)
REVOKE INSERT ON users FROM 'john'@'localhost';
📌 4. TCL (Transaction Control Language) - 트랜잭션 관리
✔ 트랜잭션 단위로 데이터 변경을 관리하는 SQL 문법
🚀 (1) 트랜잭션 시작 및 커밋 (COMMIT)
BEGIN TRANSACTION;
UPDATE users SET role = 'ADMIN' WHERE username = 'john_doe';
COMMIT;
🚀 (2) 롤백 (ROLLBACK)
BEGIN TRANSACTION;
DELETE FROM users WHERE username = 'john_doe';
ROLLBACK;
🚀 (3) 저장점 (SAVEPOINT)
SAVEPOINT before_update;
UPDATE users SET role = 'ADMIN' WHERE username = 'john_doe';
ROLLBACK TO before_update;