- SQL 문장으로 조회된 데이터들을 다양한 목적에 맞게 특정한 칼럼을 기준으로 정렬하여 출력하는데 사용한다.
- ORDER BY절에 칼럼명 대신 ALIAS 명이나 칼럼 순서를 나타내는 정수도 사용 가능하다.
- DEFAULT 값으로 오름차순(ASC)이 적용되며 DESC 옵션을 통해 내림차순으로 정렬이 가능하다.
ASC,DESC가 헷갈려서 보헤미안 랩소디 마냥 에오~ 거리면서 외웠다.- SQL 문자의 제일 마지막에 위치한다.
- SELECT 절에서 정의하지 않은 컬럼도 사용가능하다.
Oracle에서는 NULL을 가장 큰 값으로 취급하며
SQL Server에서는 NULL을 가장 작은 값으로 취급한다.
SELECT 칼럼명 [ALIAS]
FROM 테이블명
[WHERE 조건식]
[GROUP BY 칼럼이나 표현식]
[HAVING 그룹 조건식]
ORDER BY 칼럼이나 표현식[ASC 또는 DESC]
오름차 - 작은 것에서 큰 것
내림차 - 반대
오름차 - 오래된 날짜에서 밑으로 갈 수록 최신
내림차 - 반대
SELECT ALIAS -> FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
SELECT 절의 ALIAS와 FROM 절을 묵음으로 생각하고
왜 구했어요(WGHSO) 라며 외웠다
- 메모리에 모든 칼럼을 올리므로 ORDER BY에서 SELECT에 정의 안된 칼럼을 써도 된다.
- Oracle의 경우 정렬이 완료된 후 데이터의 일부가 출력되는 것이 아닌 데이터의 일부가 먼저 추출된 후 데이터에 대한 정렬 작업이 일어난다.
Oracle은 ROWNUM 조건을 ORDER BY 절 보다 먼저 처리되는 WHERE절에서 처리하므로 정렬 후 원하는 데이터를 얻기 위해서는 인라인 뷰를 이용해야 한다.
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