[SQL] 쿼리 실행 순서, SQL 언어 특징(feat. 비절차적, 순차적)
안녕하세요 ! 구마입니다,, ฅᐢ..ᐢ₎♡
오늘 프로그래머스에서 쿼리를 열심히 짜고 있었는데
뭔가 새로운 걸 깨닫게 돼서 글을 써보겠습니다 !
먼저 많이들 알고 계실 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 비절차적 프로그래밍 정의 좀 정리해야겠습니당,,
의미는 다 알지만 더 상세히 알고 싶어졌어요 !
오늘은 이만 자러 가께요 𐔌ᵔ ܸ>⩊< ͡ 𐦯ᡣ𐭩