데이터를 조회하고 거르고 정렬하는 핵심 3종 세트.
SELECT · WHERE · ORDER BY
조회의 99%는 이 세 가지로 이루어집니다. 원하는 열을 고르고(SELECT), 조건으로 거르고(WHERE), 보기 좋게 정렬하는(ORDER BY) 흐름을 확실히 익혀 두면 나머지 SQL은 여기에 살을 붙이는 일입니다.
학습 목표
SELECT로 열을 선택하고 별칭을 붙입니다.WHERE의 주요 연산자(BETWEEN·IN·LIKE·IS NULL)를 활용합니다.ORDER BY로 한 개 이상의 기준으로 정렬합니다.TOP과DISTINCT로 결과를 제어합니다.
SELECT — 무엇을 가져올지
-- 모든 열
SELECT * FROM Employees;
-- 특정 열만
SELECT name, salary FROM Employees;
-- 별칭(alias)
SELECT name AS 이름, salary AS 급여 FROM Employees;
-- 계산식과 별칭
SELECT name, salary * 12 AS 연봉 FROM Employees;
💡 TIP — 실무에서는
SELECT *대신 필요한 열만 명시하는 것이 좋습니다. 네트워크 전송량이 줄고, 테이블 구조가 바뀌어도 쿼리가 덜 깨집니다.
WHERE — 조건으로 거르기
SELECT *
FROM Employees
WHERE department = 'Sales'
AND salary >= 3000000;
자주 쓰는 연산자:
| 연산자 | 의미 |
|---|---|
=, <>, >, <, >=, <= | 비교 |
BETWEEN a AND b | a 이상 b 이하 범위 |
IN (...) | 목록 중 하나와 일치 |
LIKE 'Kim%' | 패턴 매칭 |
IS NULL / IS NOT NULL | NULL 여부 |
AND, OR, NOT | 논리 결합 |
LIKE 의 와일드카드:
%— 0글자 이상의 임의 문자열_— 정확히 한 글자[abc]— 대괄호 안 문자 중 하나
SELECT name
FROM Employees
WHERE name LIKE '김%'
AND department IN ('Sales', 'Marketing')
AND hire_date BETWEEN '2023-01-01' AND '2023-12-31';
⚠️ 주의 —
NULL은=로 비교할 수 없습니다.column = NULL은 항상 거짓이므로 반드시IS NULL을 사용하세요.
ORDER BY — 정렬
SELECT name, salary
FROM Employees
ORDER BY salary DESC, name ASC;
ASC오름차순(기본),DESC내림차순- 여러 열로 정렬하면 앞 열 우선, 동점일 때 다음 열로 정렬합니다.
- 별칭이나 열 순번(
ORDER BY 2)으로도 정렬할 수 있습니다.
상위 N개만 — TOP
-- 급여 상위 10명
SELECT TOP 10 name, salary
FROM Employees
ORDER BY salary DESC;
-- 상위 5퍼센트
SELECT TOP 5 PERCENT name, salary
FROM Employees
ORDER BY salary DESC;
-- 동점까지 포함 (WITH TIES)
SELECT TOP 3 WITH TIES name, salary
FROM Employees
ORDER BY salary DESC;
급여 상위 10명을 가져옵니다. MySQL의
LIMIT에 해당하는 게 MSSQL의TOP입니다.TOP은ORDER BY와 함께 써야 의미가 분명해집니다.
중복 제거 — DISTINCT
-- 부서 목록(중복 제거)
SELECT DISTINCT department
FROM Employees;
DISTINCT 는 선택한 열들의 조합이 동일한 행을 하나로 합칩니다.
요약
SELECT는 가져올 열을, 별칭(AS)으로 결과 이름을 정합니다.WHERE는BETWEEN,IN,LIKE,IS NULL등으로 행을 거릅니다.NULL비교는IS NULL/IS NOT NULL로만 가능합니다.ORDER BY는 여러 기준으로 정렬하고,TOP으로 상위 N개를 제한합니다.DISTINCT로 중복을 제거합니다.
연습문제
Employees에서 이름이 '이'로 시작하고 급여가 400만 원 이상인 직원을 조회하세요.- 부서별 중복 없는 목록을 알파벳 순으로 정렬해 출력하세요.
- 급여가 가장 높은 상위 3명(동점 포함)을 가져오세요.
phone값이 비어 있는(NULL) 직원만 골라 보세요.
힌트 — 1번은
LIKE '이%', 3번은TOP 3 WITH TIES, 4번은IS NULL을 사용합니다.
💡 연습문제 풀이
불러오는 중…
댓글 0
“MSSQL” 강좌에 대한 댓글입니다.