▶ ORDER BY 절
SELECT 조회 결과 집합 (RESULT SET)을 원하는 순서로 정렬할 때 사용하는 구문
[작성법]
3) SELECT 컬럼명.. (특정 컬럼만 선택해서 볼거야)
1) FROM 테이블명 (어떤 테이블에서)
2) WHERE 조건식 (조건을 만족하는 행만 선택(조회))
4) ORDER BY (조회된 결과를 정렬할거야!!)
컬럼명 | 별칭 | 컬럼순서(숫자)
[ASC / DESC] (오름차순 / 내림차순)
[NULLS FIRST / NULLS LAST] (NULL 위치 지정)
****ORDER BY절은 무조건 SELECT 마지막에 수행된다!!!***
| 오름차순(ASCENDING) : 점점 커짐 | EX) 1 -> 10 / 가 -> 하 / A -> Z / 과거 -> 미래 |
| 내림차순 (DESCENDING) : 점점 작아짐 | EX) 10 -> 1 / 하 -> 가 / Z -> A / 미래 -> 과거 |
-
#예제
EMPLOYEE 테이블에서 부서코드가 'D5', 'D6', 'D9'인 사원의
사번, 이름, 부서코드를 부서코드 오름차순으로 조회
SELECT EMP_ID, EMP_NAME, DEPT_CODE
FROM EMPLOYEE
WHERE DEPT_CODE IN('D5', 'D6', 'D9')
ORDER BY DEPT_CODE ASC;
<컬럼 순서를 이용해서 정렬>
급여가 400만 이상, 600만 이하인 사원의 사번, 이름, 급여를 급여 내림차순으로 조회
SELECT DEPT_CODE, EMP_NAME, SALARY
FROM EMPLOYEE
WHERE SALARY BETWEEN 4000000 AND 6000000
--ORDER BY SALARY DESC;
ORDER BY 3 DESC;
<별칭을 이용해서 정렬>
직급 코드가 'J4', 'J5', 'J6'인 사원을 사번, 이름, 직급코드 조회하기
단, 이름 오름차순으로 조회
SELECT EMP_ID "사번", EMP_NAME "이름", JOB_CODE "직급코드"
FROM EMPLOYEE
WHERE JOB_CODE IN('J4', 'J5', 'J6')
ORDER BY "이름";
WHERE "직급코드" IN('J4', 'J5', 'J6') → 오류 발생
[원인]
WHERE 절은 SELECT절보다 먼저 해석되는데
→ 별칭은 SELECT절이 해석되어야 등록되기 때문에
→ WHERE절에서는 별칭 사용 불가능!!
<SELECT절에 작성되지 않은 컬럼을 이용해서 정렬하기>
SELECT절에 작성되지 않아도 이전에 FROM절이 해석되어있기 때문에 정렬 가능
SELECT EMP_ID, EMP_NAME, /*DEPT_CODE*/
FROM EMPLOYEE
ORDER BY DEPT_CODE ASC;
<정렬 기준 "중첩" 작성>
먼저 작성된 큰 그룹부터 정렬하고 이후 작성된 작은 그룹을 정렬
EX)
EMPLOYEE 테이블에서 이름, 부서코드, 급여를 부서코드 오름차순, 급여 내림차순으로 정렬
같은 부서코드끼리 모아 놓고 그 안에서 급여 내림차순 정렬
SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
ORDER BY DEPT_CODE ASC, SALARY DESC;
#결과

▷ NULLS FIRST / NULLS LAST(기본값)
NULLS FIRST(오름차순)
SELECT EMP_ID, EMP_NAME, DEPT_CODE
FROM EMPLOYEE
ORDER BY DEPT_CODE ASC NULLS FIRST;
#결과

NULLS LAST(내림차순)
SELECT EMP_ID, EMP_NAME, DEPT_CODE
FROM EMPLOYEE
ORDER BY DEPT_CODE DESC NULLS LAST;
#결과

'BackEnd > MySQL' 카테고리의 다른 글
| [DB]Oracle Database의 개요 (0) | 2024.08.24 |
|---|---|
| [DB] 함수 (1) | 2024.08.24 |
| [DB]WHERE절 (0) | 2024.08.24 |
| [DB] DDL(Data Definition Language) (ALTER, DROP) (0) | 2024.08.23 |
| [DB] TCL(Transaction Control Language) (0) | 2024.08.22 |