SQL에서 가장 많이 사용되는 문법, SELECT!
데이터를 "조회"하는 데 필수적인 SELECT 문을 완벽히 이해하면 데이터베이스의 절반은 끝났다고 할 수 있어요.
이번 글에서는 SELECT 문 구조, 절별 의미, 자주 쓰는 조건들과 실전 예제까지 깔끔하게 정리해봅니다.
SELECT [컬럼명 | *]
FROM 테이블명
WHERE 조건
GROUP BY 그룹 기준
HAVING 그룹 조건
ORDER BY 정렬 기준 [ASC|DESC];
| 절 | 설명 | 예시 |
|---|---|---|
| SELECT | 어떤 열(column)을 가져올지 지정 | SELECT name, price |
| FROM | 데이터를 가져올 테이블 지정 | FROM Book |
| WHERE | 조건에 맞는 행(row)만 필터링 | WHERE price > 10000 |
| GROUP BY | 특정 컬럼으로 그룹핑 | GROUP BY publisher |
| HAVING | 그룹핑된 결과에 조건 추가 | HAVING COUNT(*) > 2 |
| ORDER BY | 결과 정렬 (기본: 오름차순, DESC: 내림차순) | ORDER BY price DESC |
SELECT * FROM Book;
SELECT bookname, price FROM Book;
WHERE 절은 조건에 맞는 행(row) 만 걸러낼 때 사용합니다.
SQL에서 데이터를 필터링할 때 가장 기본이 되는 절입니다.
SELECT * FROM Book
WHERE price > 10000;
| 연산자 | 의미 | 예시 예문 |
|---|---|---|
| = | 같다 | publisher = '굿스포츠' |
| <> 또는 != | 같지 않다 | price <> 20000 |
| > | 초과 | price > 15000 |
| < | 미만 | price < 15000 |
| >= | 이상 | price >= 10000 |
| <= | 이하 | price <= 20000 |
| BETWEEN A AND B | A 이상 B 이하의 범위 | price BETWEEN 10000 AND 20000 |
| IN (...) | 괄호 안 목록에 포함 | publisher IN ('A출판사', 'B출판사') |
| NOT IN (...) | 괄호 안 목록에 미포함 | publisher NOT IN ('굿스포츠', '대한미디어') |
| LIKE | 문자열 패턴 일치 (부분 검색) | bookname LIKE '%스포츠%' |
| IS NULL | 값이 NULL 인 경우 | discount IS NULL |
| IS NOT NULL | 값이 NULL이 아닌 경우 | discount IS NOT NULL |
여러 조건을 조합할 땐 AND, OR, NOT을 활용합니다.
-- 가격이 10000원 이상이면서 '대한미디어' 출판사의 책
SELECT * FROM Book
WHERE price >= 10000 AND publisher = '대한미디어';
-- '스포츠'를 제목에 포함하거나 15000원 이하인 책
SELECT * FROM Book
WHERE bookname LIKE '%스포츠%' OR price <= 15000;
ORDER BY 절은 조회 결과를 원하는 기준으로 정렬할 때 사용합니다.
정렬 기준이 없으면 테이블에 저장된 순서대로 출력될 수 있어요.
SELECT bookname, price
FROM Book
ORDER BY price;
| 구문 | 의미 | 예시 결과 설명 |
|---|---|---|
ORDER BY 컬럼명 | 해당 컬럼 기준으로 오름차순 정렬 (기본 정렬) | ORDER BY price → 가격 낮은 순 |
ORDER BY 컬럼명 ASC | 오름차순 정렬 명시 | ORDER BY bookname ASC → 도서명 가나다순 |
ORDER BY 컬럼명 DESC | 내림차순 정렬 | ORDER BY price DESC → 가격 높은 순 |
ORDER BY 컬럼1, 컬럼2 | 첫 번째 컬럼 정렬 후, 동일 값은 두 번째 컬럼 기준 | ORDER BY publisher, price → 출판사별 가격순 |
ORDER BY 2 DESC | SELECT 절의 두 번째 컬럼 기준 내림차순 정렬 | SELECT name, price ... ORDER BY 2 DESC |
-- 가격이 높은 순으로 도서 목록 조회
SELECT bookname, price
FROM Book
ORDER BY price DESC;
-- 출판사별로 정렬 후, 동일 출판사 내에서 가격 높은 순
SELECT bookname, publisher, price
FROM Book
ORDER BY publisher ASC, price DESC;
• ORDER BY는 SELECT 문의 가장 마지막에 위치
• GROUP BY 와 함께 쓸 경우, 그룹핑 후 정렬