SQL 복습(SQL 진행순서 및 작성 전 구문 구상)

서준영·2024년 6월 29일

SQL 정리

목록 보기
2/22

-SQL 작성순서-

SELECT
→ FROM
→ JOIN
→ ON
→ WHERE
→ GROUP BY
→ HAVING
→ ORDER BY

-SQL 작동순서-

FROM
→ ON 
→ JOIN 
→ WHERE
→ GROUP BY
→ HAVING
→ SELECT
→ DISTINCT
→ ORDER BY

-SQL 진행순서-

1. 항상 FROM/JOIN으로 시작
→ 조인이 실행되기 전에도 입력 테이블에서 행을 필터링
2. 다음 WHERE로 이동
→ 조인이 적용된 후 데이터 테이블을 필터링하는 데 사용
3. 다음 GROUP BY를 사용
→ 선택한 열을 기준으로 행을 그룹화
4. GROUP BY 이후 HAVING
→ 작업별로 그룹에서 생성된 집계 행을 필터링
5. SELECT 절을 작성
→ 출력에 표시하려는 열은 SELECT 절을 사용하여 선택,
GROUP BY 절을 사용하여 데이터를 그룹화하는 경우 SELECT 문을 사용
6. ORDER BY를 사용
→ 열을 선택한 후 다음 단계는 행을 출력할 순서를 제공
(+ ORDER BY 절을 사용하여 내림차순으로 행을 정렬할 수 있다)
7. 마지막으로 LIMIT절을 작성
→ 쓰기 순서의 마지막 단계는 출력에 표시하려는 행 수를 제한하는 것

-SQL작성 전 구문 정리-

  1. 어떤 테이블에서 데이터를 뽑을 것인가
  2. 어떤 컬럼을 이용할 것인가
  3. 어떤 조건을 지정해야 하는가
  4. 어떤 함수 (수식) 을 이용해야 하는가

예) - 지역과 배달시간을 기반으로 배달수수료 구하기 (식당 이름, 주문 번호 함께 출력) (지역 : 서울, 기타 - 서울일 때는 수수료 계산 * 1.1, 기타일 때는 곱하는 값 없음 시간 : 25분, 30분 - 25분 초과하면 음식 가격의 5%, 30분 초과하면 음식 가격의 10%)

구문이용
1). 어떤 테이블에서 데이터를 뽑을 것인가 → from food_orders
2). 어떤 컬럼을 이용할 것인가 → restaurant_name, order_id, addr, derlivery_time, price
3). 어떤 조건을 지정해야 하는가 → X
4). 어떤 함수 (수식) 을 이용해야 하는가 → if
(답)
select restaurant_name, order_id, delivery_time, price, addr,
case when delivery_time>25 and delivery_time<=30 then price0.05(if(addr like '%서울%', 1.1, 1))
when delivery_time>30 then price1.1(if(addr like '%서울%', 1.1, 1))
else 0 end "수수료"
from food_orders

profile
시리즈나 태그목록으로 보시는게 좋습니다

0개의 댓글