SQL 문법 정리
1. SQL 개요
SQL(Structured Query Language)은 데이터베이스를 관리하고 조작하는 언어로, 주요 기능은 데이터 정의(DDL), 데이터 조작(DML), 데이터 제어(DCL), 트랜잭션 제어(TCL) 로 나뉜다.
2. 데이터 정의 언어 (DDL - Data Definition Language)
DDL은 데이터베이스의 구조를 정의하는 데 사용된다.
2.1 CREATE - 테이블 생성
1
2
3
4
| CREATE TABLE 테이블명 (
컬럼명 데이터타입 제약조건,
컬럼명 데이터타입 제약조건
);
|
예제:
1
2
3
4
5
6
| CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
|
2.2 ALTER - 테이블 수정
1
2
3
| ALTER TABLE 테이블명 ADD COLUMN 컬럼명 데이터타입;
ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 새_데이터타입;
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
|
2.3 DROP - 테이블 삭제
2.4 TRUNCATE - 테이블 초기화 (데이터 삭제, 구조 유지)
3. 데이터 조작 언어 (DML - Data Manipulation Language)
DML은 데이터를 삽입, 수정, 삭제하는 명령어이다.
3.1 INSERT - 데이터 삽입
1
| INSERT INTO 테이블명 (컬럼1, 컬럼2) VALUES (값1, 값2);
|
예제:
1
| INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
|
3.2 UPDATE - 데이터 수정
1
| UPDATE 테이블명 SET 컬럼1 = 값1 WHERE 조건;
|
예제:
1
| UPDATE users SET email = 'newemail@example.com' WHERE id = 1;
|
3.3 DELETE - 데이터 삭제
1
| DELETE FROM 테이블명 WHERE 조건;
|
예제:
1
| DELETE FROM users WHERE id = 2;
|
4. 데이터 조회 (DQL - Data Query Language)
DQL은 데이터를 조회하는 SELECT 문을 사용한다.
4.1 기본 SELECT
1
2
| SELECT * FROM 테이블명;
SELECT 컬럼1, 컬럼2 FROM 테이블명;
|
4.2 WHERE 절 (조건 조회)
1
2
3
| SELECT * FROM 테이블명 WHERE 컬럼명 = 값;
SELECT * FROM users WHERE email LIKE '%example.com';
SELECT * FROM orders WHERE amount >= 1000;
|
4.3 ORDER BY (정렬)
1
2
| SELECT * FROM users ORDER BY name ASC;
SELECT * FROM users ORDER BY created_at DESC;
|
4.4 GROUP BY 및 HAVING
1
2
| SELECT category, COUNT(*) FROM products GROUP BY category;
SELECT category, AVG(price) FROM products GROUP BY category HAVING AVG(price) > 100;
|
4.5 JOIN (테이블 조인)
1
2
| SELECT users.name, orders.amount FROM users
JOIN orders ON users.id = orders.user_id;
|
5. 데이터 제어 언어 (DCL - Data Control Language)
DCL은 데이터베이스의 접근을 관리한다.
5.1 권한 부여 (GRANT)
1
| GRANT SELECT, INSERT ON 테이블명 TO 사용자명;
|
5.2 권한 회수 (REVOKE)
1
| REVOKE INSERT ON 테이블명 FROM 사용자명;
|
6. 트랜잭션 제어 언어 (TCL - Transaction Control Language)
TCL은 트랜잭션의 실행을 관리한다.
6.1 COMMIT - 트랜잭션 저장
6.2 ROLLBACK - 트랜잭션 취소
6.3 SAVEPOINT - 특정 지점 저장
1
2
| SAVEPOINT sp1;
ROLLBACK TO sp1;
|
7. 고급 SQL 문법
7.1 서브쿼리 (Subquery)
1
| SELECT name FROM users WHERE id IN (SELECT user_id FROM orders WHERE amount > 1000);
|
7.2 CASE 문 (조건 분기)
1
2
3
| SELECT name,
CASE WHEN age >= 18 THEN 'Adult' ELSE 'Minor' END AS age_group
FROM users;
|
7.3 UNION (결합)
1
| SELECT name FROM customers UNION SELECT name FROM suppliers;
|
7.4 EXISTS (서브쿼리 존재 여부 확인)
1
| SELECT name FROM users WHERE EXISTS (SELECT 1 FROM orders WHERE users.id = orders.user_id);
|
8. SQL 최적화 기법
8.1 인덱스 (INDEX)
1
| CREATE INDEX idx_users_email ON users(email);
|
8.2 뷰 (VIEW)
1
| CREATE VIEW high_value_orders AS SELECT * FROM orders WHERE amount > 1000;
|
8.3 정규화 (Normalization)
- 1NF: 중복된 열 제거, 모든 컬럼이 원자값을 가져야 함.
- 2NF: 부분 종속성 제거 (기본 키에 완전히 종속되지 않는 컬럼 제거).
- 3NF: 이행 종속성 제거 (A → B, B → C 관계 제거).
9. 결론
- DDL: 데이터베이스 객체 생성 및 관리 (
CREATE, ALTER, DROP 등) - DML: 데이터 조작 (
INSERT, UPDATE, DELETE 등) - DQL: 데이터 조회 (
SELECT) - DCL: 권한 관리 (
GRANT, REVOKE) - TCL: 트랜잭션 관리 (
COMMIT, ROLLBACK)
SQL은 강력한 데이터베이스 조작 언어로, 효율적인 데이터 관리를 위해 다양한 기능을 활용할 수 있다.