반응형
목차
SQL SELECT 쿼리 실행 순서😀
SELECT 쿼리에서 실행 순서는 아래와 같다.
부끄럽지만 처음엔 저런 순서가 있는 지 몰랐고 최근에 알았다.
아무것도 모르는 초보 시절엔 그냥 썼다고 치면 시간이 흐르면서는 점점 이해하면서 쓰려고 한다.
저 순서를 반드시 기억하고 쿼리를 작성해야 하며 이에 따른 퍼포먼스의 차이가 크다.
예시 SELECT SQL😄
SELECT
JOB_ID
,AVG(SALARY) SAL_AVG
FROM
EMPLOYEES2 e
WHERE
SALARY > 13000
GROUP BY
JOB_ID
HAVING
COUNT(*) > 1
ORDER BY SAL_AVG DESC
;
위 간단한 쿼리문에서도 내부적으로는 6단계를 거친다.
저 실행 순서를 하나씩 뜯어 보겠다.😎
FROM절
쿼리의 첫번 째 실행순서인 FROM절에서 아래처럼 EMPLOYEES2 테이블의 전체 데이터를 가지고 온다.
-- EMPLOYEES2테이블의 전체 데이터 조회
FROM EMPLOYEES2
WHERE절
WHERE절에서는 전체 데이터에서 아래처럼 조건에 맞는 결과를 필터링한다.
-- 급여가 13000 이상인 데이터 필터링
WHERE SALARY > 13000
GROUP BY절
GROUP BY절에서는 WHERE절로 필터링된 데이터를 그룹핑하는 작업을 한다.
(GROUP BY한 컬럼으로 중복제거 후 그룹화함)
GROUP BY절 사용 시 그룹함수를 사용할 수 있음(count(), sum(), avg() 등)
-- JOB_ID를 기준으로 그룹핑
GROUP BY JOB_ID
HAVING절
HAVING절은 GROUP BY한 데이터에 조건을 줄 때 사용됨
HAVING절에서는 집계함수를 조건으로 사용가능
WHERE절과는 다른용도로 사용됨(WHERE절은 FROM절 다음에 나온 데이터 필터링, 즉 GROUP BY 전에 필터링)
-- GROUP BY한 데이터가 1개 이상인 것만 조회
HAVING COUNT(*) > 1
SELECT절
여러 조건들 필터링한 최종 데이터에서 출력할 데이터를 선택하는 절이 SELECT절이다.
-- 조건 처리 후 출력할 데이터 선택
SELECT JOB_ID, AVG(SALARY) SAL_AVG
ORDER BY 절🤩
마지막 어떤 데이터를 출력할지 정한 뒤 선택사항으로 row의 순서를 정렬해주는 절이 ORDER BY 절이다.
-- 평균값을 SAL_AVG로 별칭을 주고 그로 내림차순 정렬
ORDER BY SAL_AVG DESC
참조 : 마이자봉 블로그, 2020.03.17, https://myjamong.tistory.com/172
반응형
'IT > DBMS' 카테고리의 다른 글
[Oracle] Oracle 중복데이터 제거(feat. delete from table + group by having) (0) | 2022.11.29 |
---|---|
[Oracle] system 계정 비밀번호 만료/비밀번호 변경(feat. ORA-00988) (0) | 2022.11.28 |
[PostGreSQL] 현재 실행중인 SQL 조회, 종료 (0) | 2022.11.28 |
[Oracle] oracle 쿼리 로그 보기 (0) | 2022.11.28 |
[PostGreSQL] 테이블/테이블 목록 조회 (0) | 2022.11.28 |