데이터를 꺼내오는 건 CH 02에서 배웠죠. 이번엔 그 결과를 보기 좋게 정렬(ORDER BY)하고, 필요한 만큼만 잘라내고(LIMIT), 중복을 걷어내는(DISTINCT) 방법을 익혀요. 짧고 자주 쓰는 무기들이에요.
ORDER BY로 결과를 원하는 순서로 정렬할 수 있어요.ASC)·내림차순(DESC)의 차이와 기본값을 알아요.LIMIT으로 결과 개수를 원하는 만큼만 가져올 수 있어요.DISTINCT로 중복된 값을 한 번씩만 뽑아낼 수 있어요.SELECT만 쓰면 결과가 저장된 순서(대체로 뒤죽박죽)로 나와요. ORDER BY 뒤에 기준 열을 적으면 그 열을 기준으로 정렬해줘요. 예를 들어 나이순으로 정렬하려면 이렇게 써요.
SELECT name, age
FROM users
ORDER BY age; -- age(나이) 기준으로 정렬
특별히 방향을 안 적으면 기본은 오름차순(작은 값 → 큰 값)이에요. 오름차순은 ASC, 반대인 내림차순(큰 값 → 작은 값)은 DESC로 지정해요.
SELECT name, age
FROM users
ORDER BY age DESC; -- 나이 많은 순(내림차순)
| 키워드 | 뜻 | 정렬 방향 |
|---|---|---|
ASC | Ascending(오름차순) | 작은 값 → 큰 값 (기본값) |
DESC | Descending(내림차순) | 큰 값 → 작은 값 |
위 ORDER BY age DESC의 결과는 나이가 많은 사람부터 나와요.
| name | age |
|---|---|
| '민수' | 30 |
| '영희' | 25 |
| '철수' | 20 |
ORDER BY는 항상 문장 뒤쪽에 와요. FROM·WHERE 다음에 붙는다고 기억하면 돼요. 숫자뿐 아니라 문자(이름)도 정렬돼요 — 문자는 사전순(가나다·ABC 순)으로 줄 서요.ORDER BY 뒤에 콤마(,)로 여러 열을 적을 수 있어요. 먼저 적은 기준으로 정렬하다가, 값이 같으면 다음 기준으로 순서를 매겨요.
SELECT name, age
FROM users
ORDER BY age DESC, name ASC;
-- ① 나이 많은 순, ② 나이가 같으면 이름 오름차순
age DESC로 나이 많은 순으로 줄을 세워요.name ASC(이름 오름차순)로 순서를 정해요.
💡 각 열마다 방향(ASC/DESC)을 따로 지정할 수 있어요. 위처럼 앞은 내림차순, 뒤는 오름차순도 가능해요.
LIMIT n은 결과를 위에서부터 n개만 가져와요. ORDER BY와 함께 쓰면 "상위 n명" 같은 걸 쉽게 뽑을 수 있어요. 나이가 많은 상위 3명은 이렇게 써요.
SELECT name, age
FROM users
ORDER BY age DESC -- ① 나이 많은 순으로 정렬
LIMIT 3; -- ② 그중 위에서 3명만
| name | age |
|---|---|
| '민수' | 30 |
| '영희' | 25 |
| '철수' | 20 |
LIMIT을 쓰지만, SQL Server는 TOP(예: SELECT TOP 3 ...), Oracle은 FETCH FIRST를 써요. 이 코스는 LIMIT 기준입니다.같은 값이 여러 행에 반복될 때, SELECT 바로 뒤에 DISTINCT를 붙이면 중복을 없애고 서로 다른 값만 남겨요. 예를 들어 회원들이 사는 도시 종류를 알고 싶다면 이렇게 써요.
SELECT DISTINCT city
FROM users; -- city의 서로 다른 값만 한 번씩
| city (원본) | → | SELECT DISTINCT city |
|---|---|---|
| '서울', '부산', '서울', '대구', '부산' | → | '서울', '부산', '대구' |
DISTINCT는 선택한 열들의 조합을 기준으로 중복을 판단해요. SELECT DISTINCT city, age처럼 열이 여러 개면, (city, age) 쌍이 같은 경우에만 중복으로 봐요.필터링(WHERE)·정렬(ORDER BY)·개수 제한(LIMIT)을 함께 쓸 때는 순서가 정해져 있어요. "20살 이상 회원 중 나이 많은 순 상위 2명"은 이렇게 써요.
SELECT name, age
FROM users
WHERE age >= 20 -- ① 먼저 조건으로 걸러내고
ORDER BY age DESC -- ② 남은 것을 정렬한 뒤
LIMIT 2; -- ③ 위에서 2명만
LIMIT에 시작 위치를 함께 주는 LIMIT 10 OFFSET 20(21번째부터 10개) 형태를 써요. 지금은 "이런 게 있구나" 정도만 알아두세요.LIMIT(몇 개 가져올지)과 OFFSET(앞을 몇 개 건너뛸지)을 조합해서 만들어요.ORDER BY 열 — 결과를 정렬. 방향을 안 적으면 기본은 오름차순(ASC), 내림차순은 DESC.ORDER BY age DESC, name ASC — 앞 기준이 같으면 다음 기준으로.LIMIT n — 결과를 위에서 n개만. ORDER BY와 함께 쓰면 "상위 n개". (SQL Server는 TOP)SELECT DISTINCT 열 — 중복을 제거해 서로 다른 값만 한 번씩.WHERE → ORDER BY → LIMIT. 이 순서를 바꾸면 오류가 나요.