본문 바로가기

DB/Oracle

SELECT 절의 작성 순서

반응형
SMALL

SELECT 명령어는 함께 사용하는 옵션이 많은 명령어이다. 

 

SELECT, FROMWHEREGROUP BYHAVING , ORDER BY

 

위의 목록은 SELECT에 사용되는 구절들을 쉼표로 구분해 본 것이다. 이 구절들을 사용할 때는 위에서 나열한 순서대로 사용해야 하며 SELECT를 이용하려면 반드시 암기하고 있어야 하는 구절들이다.

 

이 구절들은 앞으로 자세히 알아보겠지만 지금은 간단하게 어떤 역할을 하는지만 짚어보도록 하자. 이 역할들을 이해하려 하지 말고 가볍게 읽어만 가도록 하자.

 

FROM 

SELELCT를 위한 데이터를 지정하는 연산을 담당한다.

 

지금까지 FROM 절에는 테이블명을 사용해왔지만 사실은 서브쿼리, 조인 연산, 유니온 연산 등 격자형 데이터를 만들어내는 연산이 올 수가 있다. 그 내용은 뒤에서 자세히 다루게 될 것이다. 

 

그리고 SELECT 절에서 제일 먼저 실행되는 구절은 FROM 절이라는 점도 기억하다고 하자.

 

WHERE 

FROM 절에서 넘겨 받은 격자형 목록에서 원하는 레코드로 필터링하는 연산을 담당한다.

 

GROUP BY 절

집계 함수를 사용할 때 집계되는 값들의 소규모 그룹을 만든다. 예를 들어서 회원수를 집계하는 것을 성별 회원수 또는 지역별 회원수 처럼 그룹을 나누어서 집계를 하고 싶을 때 사용한다.

 

HAVING 절

집계된 결과를 가지고 필터링을 할 때 사용한다. 일반적으로 필터링은 WHERE 절이 담당하는 것이지만 집계된 함수를 이용하는 필터링은 HAVING을 사용해야만 한다. 이유는 나중에 설명한다.

 

ORDER BY 절

레코드의 정렬 방식을 설정할 수 있다.

 

지금까지 설명한 내용은 SELECT에서 사용되는 구절이며 순서는 반드시 지켜져야 한다. 왜냐하면 각 구절은 DBMS가 수행해야 할 연산 단위들이며, 각 연산은 위와 같은 순서대로 실행 되지 않으면 연산이 비효율 적이기 때문이다.

 

예를 들어서 WHERE 절이 수행되고 ORDER BY 절이 실행 되는 기본 순서로 실행된다면 1억개의 레코드 중에서 2개만 필터링 된 후에 2개만 정렬하면 된다. 하지만 ORDER BY 절이 실행 된 후에 WHERE 절이 수행된다면 1억개의 레코드가 정렬 된 후에 2개만 필터링해서 결과를 만드는 일이 발생한다.

 

따라서 구절의 작성순서는 반드시 지켜줘야 한다. 

반응형
LIST

'DB > Oracle' 카테고리의 다른 글

오라클 SQL 실습용 테이블(SCOTT 계정)  (0) 2025.01.19
Sqlgate 툴에서 한글깨짐  (0) 2025.01.19
SQL Query Logical Order  (0) 2025.01.05
오라클 MERGE INTO 사용법 & 노하우 정리  (0) 2025.01.05
Outer Join  (0) 2024.10.06