SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 관리하고 조작하는 데 사용되는 표준 언어이다.
SQL을 사용하면 데이터베이스에 데이터를 삽입, 조회, 수정, 삭제가 가능하며 DDL, DML, DCL로 크게 나뉜다.
(Query문법 참고 용도)
1. SQL 기본 개념
- 테이블: 데이터를 행(row)과 열(column)로 저장하는 데이터베이스의 기본 단위
- 컬럼: 테이블 내의 각 열을 의미하며, 특정 데이터 유형(예: INT, VARCHAR, DATE)
- 행: 테이블 내의 각 데이터를 의미하며, 하나의 레코드
2. SQL 주요 명령어
1. DDL (Data Definition Language) - 데이터 정의 언어
데이터베이스 구조(테이블, 인덱스, 뷰 등)를 정의하는 SQL 문법이야.
| 명령어 | 설명 |
| CREATE | 데이터베이스 객체(테이블, 인덱스 등) 생성 |
| ALTER | 기존 객체 구조 변경(컬럼 추가/삭제 등) |
| DROP | 데이터베이스 객체 삭제 |
| TRUNCATE | 테이블의 모든 데이터를 삭제(롤백 불가) |
-- 테이블 생성
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT
);
-- 컬럼 추가
ALTER TABLE users ADD COLUMN email VARCHAR(100);
-- 테이블 삭제
DROP TABLE users;
2. DML (Data Manipulation Language) - 데이터 조작 언어
데이터를 삽입, 수정, 삭제, 조회하는 SQL 문법이야.
| 명령어 | 설명 |
| INSERT (JOIN) | 데이터를 추가 |
| SELECT (WHERE / ORDER BY / GROUP BY) | 데이터를 조회 |
| UPDATE | 데이터를 수정 |
| DELETE | 데이터를 삭제 |
-- 데이터 삽입
INSERT INTO users (name, age, email) VALUES ('Alice', 25, 'alice@example.com');
-- 데이터 조회
SELECT * FROM users WHERE age > 20;
-- 데이터 수정
UPDATE users SET age = 26 WHERE name = 'Alice';
-- 데이터 삭제
DELETE FROM users WHERE name = 'Alice';
-- AND, OR, BETWEEN, LIKE 조건 활용
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
SELECT * FROM users WHERE name LIKE 'A%';
SELECT * FROM users WHERE age > 25 OR email IS NULL;
-- 나이순으로 오름차순 정렬
SELECT * FROM users ORDER BY age ASC;
-- 나이순으로 내림차순 정렬
SELECT * FROM users ORDER BY age DESC;
-- 나이순으로 정렬하되, 나이가 같으면 이름순 정렬
SELECT * FROM users ORDER BY age ASC, name ASC;
-- 각 나이대별 평균 나이 조회
SELECT age, AVG(age) FROM users GROUP BY age;
-- 나이별 사용자 수를 내림차순 정렬
SELECT age, COUNT(*) FROM users GROUP BY age ORDER BY COUNT(*) DESC;
-- INNER JOIN: users와 orders 테이블에서 user_id가 같은 데이터 조회
SELECT users.name, orders.product_name, orders.amount
FROM users
INNER JOIN orders ON users.id = orders.user_id;
-- LEFT JOIN: 주문이 없는 사용자도 포함하여 조회
SELECT users.name, orders.product_name, orders.amount
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
3. DCL (Data Control Language) - 데이터 제어 언어
사용자 권한을 관리하는 SQL 문법이야.
| 명령어 | 설명 |
| GRANT | 사용자에게 권한 부여 |
| REVOKE | 사용자 권한 회수 |
| BEGIN( or START TRANSACTION_ | 트랜잭션 시작 |
| COMMIT | 변경 내용을 확정(저장) |
| ROLLBACK | 변경 내용 취소 |
-- 특정 사용자에게 SELECT, INSERT 권한 부여
GRANT SELECT, INSERT ON users TO 'username'@'localhost';
-- 특정 사용자의 권한 회수
REVOKE INSERT ON users FROM 'username'@'localhost';
BEGIN; -- 트랜잭션 시작 또는 START TRANSACTION;
INSERT INTO users (name, age) VALUES ('Bob', 30);
UPDATE users SET age = 31 WHERE name = 'Bob';
COMMIT; -- 변경 내용 저장
-- 문제 발생! (예: 실수로 잘못된 데이터를 입력함)
ROLLBACK; -- 변경 취소
결론
SQL은 데이터를 조회하고 수정하는 데 사용되는 중요한 언어이다. 기본적인 DDL, DML, DCL(TCL) 명령어를 이해하고 사용하면 데이터베이스 작업을 효율적으로 할 수 있다. JPA와 함께 SQL을 배우는 것은 데이터베이스와 애플리케이션 간의 상호작용을 이해하는 데 큰 도움이 될 것이다.
'인프라 기술 및 아키텍처' 카테고리의 다른 글
| 04. MSA - 클라이언트 사이드 로드 밸런싱 (FeignClient와 Ribbon) (0) | 2025.03.13 |
|---|---|
| 03. MSA - 서비스 디스커버리(Eureka) (0) | 2025.02.12 |
| 02. MSA - Spring Cloud (0) | 2025.02.08 |
| 01. MSA - 오리엔테이션 + MSA란 (TIL) (4) | 2025.02.05 |