본문 바로가기
📁 Database

[ DataBase ] SELECT 쿼리 실행 순서

by 깸뽀 2023. 2. 16.
728x90

📌 SQL 쿼리문의 실생순서

 

 

FROM 절 ( + JOIN)

  • 조회하는 테이블 전체를 가져온다.
  • 테이블에 별칭(Alias)을 붙였을 경우 출력되어야 할 컬럼 값 앞에 해당 테이블의 별칭을 꼭 붙인다.
  • 예제
/*
1. [ USER ] 테이블에서
2. 모든 컬럼을 출력한다.
*/
SELECT * 
FROM USER 
;

/*
[ USER ] - pk:user_id / [ TEAM ] - fk:user_id
1. [ USER ] 테이블과 [ TEAM ] 테이블에서 
2. 같은 user_id를 갖고 있는 데이터 중 
3. [ USER ] 테이블의 name 정보와 [ TEAM ] 테이블의 team_name 정보를 출력함
*/
SELECT a.name, b.team_name
FROM USER as a JOIN TEAM as b ON a.user_id = b.user_id;

 

WHERE 절

  • FROM절에서 읽어온 테이블에서 조건에 맞는 결과만 갖도록 데이터를 필터링한다.
  • 예제
/*
1. [ USER ] 테이블에서 
2. name 정보에서 앞,뒤로 '민'이라는 글자가 들어가 있는
3. 모든 컬럼을 출력한다.
*/
SELECT *
FROM USER
WHERE name LIKE '%민%'

 

 

GROUP BY 절

  • 선택한 컬럼으로 그룹핑한다.
  • GROUP BY 절에 컬럼을 정의하려면 SELECT 절에 반드시 존재해야 하며, 없을 경우 집계함수 처리를 해야 한다.
    • 집계함수: SUM(), MIN(), MAX(), AVG() 등
  • 예제
/*
1. 상품테이블에
2. cost가 100인 데이터를
4. 가격, 상품명 별 그룹핑 한 후
5. 가격, 상품명, 갯수를 출력한다.
*/
SELECT cost, pr_name, count(*)
FROM product
WHERE cost = '500'
GROUP BY cost, pr_name
;

 

 

 

HAVING 절

  • 그룹핑 후에 각 그룹에 사용되는 조건 절이다. ( ≠ WHERE )
  • HAVING 절의 조건을 WHERE절에도 사용할 수 있는 경우라면 WHERE절에 사용하는 것이 바람직하다.
    • why? HAVING 절은 각 그룹에 조건을 걸기 때문에 퍼포먼스가 떨어진다.
  • 예제
/*
1. 상품테이블에
2. cost가 100인 데이터를 ( WHERE에서 1차 필터를 거친다)
4. 가격, 상품명 별 그룹핑 한 데이터 중
5. 갯수가 1개 이상인 ( HAVING 에서 2차 필터를 거친다)
6. 가격, 상품명, 갯수를 출력한다.
*/
SELECT cost, pr_name, count(*)
FROM product
WHERE cost = '500'
GROUP BY cost, pr_name
HAVING count(*) > 1
;

 

 

SELECT 절

  • 조건을 만족하는 데이터 중 SELECT 절에 명시한 컬럼을 출력해 준다. 

 

ORDER BY 절

  • 행의 순서에 대한 정렬을 해 준다.
  • ASC - 오름차순(default)  / DESC - 내림차순
  • 예제
-- 오름차순
SELECT pr_name
FROM product
ORDER BY pr_name
;

-- 내림차순
SELECT pr_name
FROM product
ORDER BY pr_name DESC
;

 

LIMIT 절

  • 결과 중 몇개의 행을 보여줄 지 선택한다.
  • 예제
/*
모든 데이터 중 상위 3개만 출력된다.
*/
SELECT pr_name
FROM product
ORDER BY pr_name DESC
LIMIT 3
;

 

 

 

📖 참고

728x90

댓글