포스트

SQL

SQL

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 - 테이블 삭제

1
DROP TABLE 테이블명;

2.4 TRUNCATE - 테이블 초기화 (데이터 삭제, 구조 유지)

1
TRUNCATE TABLE 테이블명;

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 - 트랜잭션 저장

1
COMMIT;

6.2 ROLLBACK - 트랜잭션 취소

1
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은 강력한 데이터베이스 조작 언어로, 효율적인 데이터 관리를 위해 다양한 기능을 활용할 수 있다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.