항상 정렬은 가장 마지막에 수행된다.
FROM -> WHERE -> SELECT -> ORDER BY
테이블을 퍼올리고, 필요한 애들만 솎아낸 다음
어떤 프로젝션이 필요한지 추려내서
열을 보고 정렬하는 것이다.
오라클 쿼리 실행 순서
1. FROM : SQL 테이블 최우선 확인
2. WHERE : 테이블에서 주어진 조건에 맞는 레코드 추출
3. SELECT : 최종적으로 추출된 프로젝션 조회
4. ORDER BY : 추출된 데이터 정렬
FROM은 하드디스크에서 일어나고
SELECT와 WHERE은 메모리에서 일어난다.
처음 emp 테이블을 FROM으로 퍼올린 후
두 번째로 emp를 FROM으로 퍼올릴 때는
하드디스크에서 퍼올리지 않고 캐싱한다.
메모리에 올라와있기 때문이다.
지속적으로 emp를 메모리에서 조회한다면
메모리에서 사라지지 않는다.
다른 테이블을 메모리로 올리다가
메모리가 꽉 차게 되면
그때 emp가 메모리에서 사라진다.
-- ORDER BY 정렬
-- ASC 오름차순(디폴트), DESC 내림차순
SELECT *
FROM emp
WHERE job = 'MANAGER'
ORDER BY ename;
원하는 컬럼을 정렬한다.
디폴트로 ASC가 생략되어 있다.
Ascending의 약자 ASC, 오름차순이다.
반대로 Descending의 약자 DESC가 내림차순이다.
-- ORDER BY 정렬
-- ASC 오름차순(디폴트), DESC 내림차순
SELECT *
FROM emp
WHERE job = 'MANAGER'
ORDER BY ename ASC;
월급을 오름차순으로 정렬한 후,
월급이 같으면 이름도 오름차순으로 정렬한 것이다.
SELECT sal, ename, deptno
FROM emp
ORDER BY sal ASC, ename ASC;
mod( )는 나머지를 계산하는 함수이다.
SELECT mod(sal, 500) 나머지, ename
FROM emp
ORDER BY 1;
SELECT mod(sal, 500) FROM emp; 의 경우에는
ORDER BY에 어떤 걸 적어주어야 할까?
위와 같은 연산 식이 길어지면
ORDER BY 1
혹은 ORDER BY 2
이런 식으로 SELECT 한 컬럼의 순서를 적어주기도 한다.
[출처]
https://cafe.naver.com/metacoding
메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9