FLOW 03 · INFORMATION PROCESSING
DIRECTION 03 · 연결된 세계를 걷다 · DB · SQL · 트랜잭션
데이터와 대화하는 언어
DB · SQL · 트랜잭션
책 p.110–115 DIRECTION 03
QUESTION · 질문에서 시작합니다데이터베이스 안에 원하는 정보가 있어도 꺼내는 방법을 모르면 사용할 수 없다.
“9월 20일 오전 예약만 보여 줘.”
사람의 말로는 쉽다.
데이터베이스에도 이런 요청을 전달하는 언어가 필요하다.
기술 이름
관계형 데이터베이스에서
데이터를 정의하고 조회하고 조작하기 위해 사용하는 대표 언어가
SQL이다.
먼저 데이터를 조회한다
SELECT reservation_id, member_id, reserve_time
FROM reservation;
SELECT는 어떤 열을 볼지,
FROM은 어느 테이블에서 가져올지 정한다.
SELECT *
FROM reservation
WHERE status = '예약';
WHERE를 사용하면
원하는 조건에 맞는 행만 선택할 수 있다.
추가하고, 바꾸고, 지운다
INSERT INTO reservation
(reservation_id, member_id, reserve_date, reserve_time)
VALUES (1004, 21, '2026-09-20', '14:00');
INSERT는 새로운 데이터를 추가한다.
UPDATE reservation
SET status = '취소'
WHERE reservation_id = 1004;
UPDATE는 기존 데이터를 수정한다.
DELETE FROM reservation
WHERE reservation_id = 1004;
DELETE는 데이터를 삭제한다.
SQL은 역할에 따라 나눌 수 있다
DDL테이블과 같은 데이터 구조를 정의한다.
DML데이터를 조회·추가·수정·삭제한다.
DCL권한을 부여하거나 회수한다.
COMMIT과 ROLLBACK처럼 트랜잭션을 제어하는 명령은
교재나 분류 기준에 따라 DCL에 포함해 설명하기도 하고
TCL(Transaction Control Language)로 별도 구분하기도 한다.
원하는 순서와 그룹으로 묶는다
SELECT member_id, COUNT(*) AS cnt
FROM reservation
GROUP BY member_id;
같은 회원번호끼리 묶고
각 회원의 예약 건수를 계산할 수 있다.
SELECT member_id, COUNT(*) AS cnt
FROM reservation
GROUP BY member_id
HAVING COUNT(*) >= 3;
HAVING은 그룹을 만든 뒤
그룹 결과에 조건을 적용한다.
SQL은 작성 순서와 처리 흐름이 다르게 느껴진다
SQL은 작성된 순서만 따라 읽기보다
데이터가 처리되는 흐름을 떠올리면 이해가 쉬워진다.
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
ILLUST B | ILL-08 | SQL 논리적 처리 순서 | SQL 흐름 화살표
어느 테이블에서 가져올지 정하고,
행을 걸러내고,
그룹을 만들고,
그룹을 다시 걸러낸 뒤,
보여줄 열을 선택하고,
마지막으로 정렬한다고 생각하면 된다.
더 찾아보고 싶다면846면 학습 아카이브에서 검색하세요.