2.1.8 Order by 절

YJ·2022년 8월 29일
0

2.1.8 Order by 절

ORDER BY 정렬

SELECT 칼럼명 [ALIAS명]
FROM 테이블명
[WHERE 조건식]
[GROUP BY 칼럼이나 표현식]
[HAVING 그룹조건식]
[ORDER BY 칼럼이나 표현식 [ASC 또는 DESC]];
  • ORDER BY 절에 칼럼명 대신 SELECT 절에서 사용한 별명 사용 가능
  • 또한, 칼럼 순서를 나타내는 정수 사용 가능하나, 유지보수성이나 가독성이 떨어짐
  • ORDER BY 절에서 칼럼명, 별명, 칼럼순서(정수)를 같이 혼용하는 것도 가능
  • 기본적으로 오름차순 적용(ASC), 내림차순은 DESC
  • SQL 문장 맨 마지막 위치
  • 숫자형 데이터 타입은 오름차순으로 정렬했을 경우에 가장 작은 값부터 출력
  • 날짜형 데이터 타입은 오름차순 정렬했을 경우 날짜 값이 가장 빠른 값이 먼저 출력
  • Oracle은 NULL 값을 가장 큰값으로 간주, 오름차순 정렬 시 가장 마지막에 위치, 내림차순은 가장 위
  • SQL Server는 NULL 값을 가장 작은값으로 간주, 오름차순 정렬 시 가장 상위에 위치

SELECT 문장 실행 순서

5. SELECT 칼럼명 [별명]
1. FROM 테이블명
2. WHERE 조건식
3. GROUP BY 칼럼이나 표현식
4. HAVING 그룹조건식
6. ORDER BY 칼럼이나 표현식;
  • 발췌 대상 테이블을 참조하여 WHERE 조건에 맞지 않는 데이터는 제거한다.

  • 그 다음 행들을 소그룹화 한다.

  • 소그룹화 된 행들을 조건에 맞는 것만 출력한다.

  • 그리고서 조건에 맞는 행들 중 선택된 칼럼들만 뽑아낸다.

  • 마지막으로 뽑아낸 칼럼들을 정렬한다. 


  • ORDER BY 절에는 SELECT 목록에 나타나지 않은 문자형 항목이 포함될 수 있음.

  • 단 SELECT DISTINCT를 지정하거나, SQL 문장에 GROUP BY 절이 있거나 또는 SELECT 문에 UNION 연산자가 있으면 열 정의가 SELECT 목록에 표시 되어야 함.

TOP N 쿼리

ROWNUM

SELECT ENAME, SAL
FROM (SELECT ENAME, SAL
    FROM EMP
    ORDER BY SAL DESC)
WHERE ROWNUM < 4;
  • ORDER BY 절이 없으면 Oracle의 ROWNUM 조건과 SQL Server의 TOP 절은 같은 성능을 보이게 된다
  • 오라클에서는 ORDER BY 절이 사용되는 경우, ROWNUM의 조건을 제일 먼저 처리 함.

TOP() 

TOP (Expression) [PERCENT][WITH TIES]

SELECT TOP(2) WITH TIES ENAME, SAL
FROM EMP
ORDER BY SAL DESC;
  • 반면 SQL Server는 TOP 조건을 사용하게 되면 별도 처리 없이 관련 ORDER BY 절의 데이터 정렬 후 원하는 일부 데이터만 쉽게 출력할 수 있음.
profile
💻귀찮으니 필요할 때만 쓰는 Computer Vision 일지 ㅇㅇ💻

0개의 댓글