dev.syw

데이터를 조회하고 거르고 정렬하는 핵심 3종 세트.

SELECT · WHERE · ORDER BY

조회의 99%는 이 세 가지로 이루어집니다. 원하는 열을 고르고(SELECT), 조건으로 거르고(WHERE), 보기 좋게 정렬하는(ORDER BY) 흐름을 확실히 익혀 두면 나머지 SQL은 여기에 살을 붙이는 일입니다.

학습 목표

  • SELECT 로 열을 선택하고 별칭을 붙입니다.
  • WHERE 의 주요 연산자(BETWEEN·IN·LIKE·IS NULL)를 활용합니다.
  • ORDER BY 로 한 개 이상의 기준으로 정렬합니다.
  • TOPDISTINCT 로 결과를 제어합니다.

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 ba 이상 b 이하 범위
IN (...)목록 중 하나와 일치
LIKE 'Kim%'패턴 매칭
IS NULL / IS NOT NULLNULL 여부
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입니다. TOPORDER BY 와 함께 써야 의미가 분명해집니다.

중복 제거 — DISTINCT

-- 부서 목록(중복 제거)
SELECT DISTINCT department
FROM Employees;

DISTINCT 는 선택한 열들의 조합이 동일한 행을 하나로 합칩니다.

요약

  • SELECT 는 가져올 열을, 별칭(AS)으로 결과 이름을 정합니다.
  • WHEREBETWEEN, IN, LIKE, IS NULL 등으로 행을 거릅니다.
  • NULL 비교는 IS NULL / IS NOT NULL 로만 가능합니다.
  • ORDER BY 는 여러 기준으로 정렬하고, TOP 으로 상위 N개를 제한합니다.
  • DISTINCT 로 중복을 제거합니다.

연습문제

  1. Employees 에서 이름이 '이'로 시작하고 급여가 400만 원 이상인 직원을 조회하세요.
  2. 부서별 중복 없는 목록을 알파벳 순으로 정렬해 출력하세요.
  3. 급여가 가장 높은 상위 3명(동점 포함)을 가져오세요.
  4. phone 값이 비어 있는(NULL) 직원만 골라 보세요.

힌트 — 1번은 LIKE '이%', 3번은 TOP 3 WITH TIES, 4번은 IS NULL 을 사용합니다.

💡 연습문제 풀이

불러오는 중…

함께 보면 좋은 자료

댓글 0

MSSQL” 강좌에 대한 댓글입니다.

댓글을 작성하려면 로그인이 필요합니다.