SQL

[SQL] 쿼리 실행 순서, SQL 언어 특징(feat. 비절차적, 순차적)

개발자 구마 2024. 12. 6. 23:21

안녕하세요 ! 구마입니다,, ฅᐢ..ᐢ₎♡

오늘 프로그래머스에서 쿼리를 열심히 짜고 있었는데

뭔가 새로운 걸 깨닫게 돼서 글을 써보겠습니다 ! 


 

먼저 많이들 알고 계실 SQL 실행 순서를 적어보겠습니다.

조회 쿼리문은 FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY 총 6단계를 거치게 됩니당

 

FROM ) 어디서 

WHERE ) 어떤 것들을 

GROUP BY ) 어떻게 분류해서 (ex 동물별로, 타입별로)

HAVING ) 분류한 것들에 대한 조건이 

SELECT ) 해당되는 것들을 조회하자

ORDER BY ) 이제 조회한 걸 정렬해줘

 

이렇게 실행되는 건 아주 잘 알고 있었는데 ,,

쿼리 작성하고 실행시켜 보니까 띠용?! 하는 걸 발견했어요

SELECT CAR_TYPE, COUNT(CAR_ID) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%통풍시트%'
OR OPTIONS LIKE '%열선시트%'
OR OPTIONS LIKE '%가죽시트%'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE

 

위에 쿼리로 실행하면

 

이렇게 실행결과가 예쁘게 나오는 걸 볼 수 있습니당,,,

 

 

근데? 아래처럼 실행해보면

SELECT CAR_TYPE, COUNT(CAR_ID) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
GROUP BY CAR_TYPE
WHERE OPTIONS LIKE '%통풍시트%'
OR OPTIONS LIKE '%열선시트%'
OR OPTIONS LIKE '%가죽시트%'
ORDER BY CAR_TYPE

 

이렇게 문법에러가 뜨더군용 ,,, 

위의 쿼리와 아래의 쿼리는 WHERE절과 GROUP BY절에 순서만 다릅니당

 

저는 지금까지,, 똑똑한 SQL이 위에서 기재한 실행 순서대로

키워드를 찾아 실행되는 줄 알고 있었어요 ,, ㅠ

 

바로 요렇게 말이죵 ,, 

지금까지 한 번도 select from where절 쓰는 순서를 어긴 적이 없었나봅니다,,

 

근데 검색해보니 SQL은 절차적 언어가 아니라 비절차적인 언어더라고요!?

그래서 순차적으로 실행되는 건가 ,, ?


이참에 내일은

절차적 프로그래밍 vs 순차적 프로그래밍

절차적 프로그래밍 vs 비절차적 프로그래밍 정의 좀 정리해야겠습니당,,

의미는 다 알지만 더 상세히 알고 싶어졌어요 ! 

 

오늘은 이만 자러 가께요 ‎𐔌ᵔ ܸ>⩊< ͡ 𐦯ᡣ𐭩‎