개발 이론/DB

SQL(기초)

jeonghoe21 2025. 3. 19. 22:33

📌 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;