ORDER BY 정렬

한준수·2023년 5월 31일
0

SQLD

목록 보기
21/31

ORDER BY 특징

  1. SQL 문장으로 조회된 데이터들을 다양한 목적에 맞게 특정한 칼럼을 기준으로 정렬하여 출력하는데 사용한다.
  2. ORDER BY절에 칼럼명 대신 ALIAS 명이나 칼럼 순서를 나타내는 정수도 사용 가능하다.
  3. DEFAULT 값으로 오름차순(ASC)이 적용되며 DESC 옵션을 통해 내림차순으로 정렬이 가능하다.
    • ASC,DESC가 헷갈려서 보헤미안 랩소디 마냥 에오~ 거리면서 외웠다.
  4. SQL 문자의 제일 마지막에 위치한다.
  5. SELECT 절에서 정의하지 않은 컬럼도 사용가능하다.

    Oracle에서는 NULL을 가장 큰 값으로 취급하며
    SQL Server에서는 NULL을 가장 작은 값으로 취급한다.

ORDER BY 절 형식

SELECT 칼럼명 [ALIAS]
FROM 테이블명
[WHERE 조건식]
[GROUP BY 칼럼이나 표현식]
[HAVING 그룹 조건식]
ORDER BY 칼럼이나 표현식[ASC 또는 DESC]

오름차순 내림차순

숫자 오름차 내림차

오름차 - 작은 것에서 큰 것
내림차 - 반대

날짜 오름차 내림차

오름차 - 오래된 날짜에서 밑으로 갈 수록 최신
내림차 - 반대


SELECT문장 실행 순서

SELECT ALIAS -> FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
SELECT 절의 ALIAS와 FROM 절을 묵음으로 생각하고
왜 구했어요(WGHSO) 라며 외웠다

  • 메모리에 모든 칼럼을 올리므로 ORDER BY에서 SELECT에 정의 안된 칼럼을 써도 된다.
  • Oracle의 경우 정렬이 완료된 후 데이터의 일부가 출력되는 것이 아닌 데이터의 일부가 먼저 추출된 후 데이터에 대한 정렬 작업이 일어난다.

ORDER BY를 활용한 TOP N 쿼리

Oracle은 ROWNUM 조건을 ORDER BY 절 보다 먼저 처리되는 WHERE절에서 처리하므로 정렬 후 원하는 데이터를 얻기 위해서는 인라인 뷰를 이용해야 한다.

  • EX) 사원 테이블에서 급여가 높은 3명을 내림차 순 정렬
SELECT ENAME, SAL
FROM EMP(SELECT ENAME, SAL 
FROM EMP ORDER BY SAL DESC) 
WHERE ROWNUM < 4;

서브쿼리 맛보기

서브 쿼리를 어디에 기술했는가에 따라 의미가 달라진다.

SELECT -> SCALAR
FROM -> INLINEVIEW : 메인쿼리의 컬럼 사용 가능
WHERE -> 거의 모든 서브쿼리
GROUP BY -> 서브쿼리X
HAVING -> 거의 모든 서브쿼리
ORDER -> 거의 사용X SCALAR

profile
응애에요

0개의 댓글