Wing Pointer - Text Select
[MySQL] SELECT / FROM / WHERE 절 완전 정복
·
Backend/SQL
프로젝트를 진행하면서 SQL 쿼리문을 작성해 보고, SQLD 시험을 준비하면서도 느낀 점이 있다.바로 `SELECT`, `FROM`, `WHERE` 각 절이 무엇을 담당하는지, 특히 서브쿼리가 어디에서 어떻게 쓰이는지 자주 헷갈렸다는 것이다. 결국 이는 SQL의 실행 순서와 각 절의 역할을 명확히 이해하지 못했기 때문이었다. 이번 글에서는 `SELECT`, `FROM`, `WHERE` 절의 역할과 각 절에서 사용할 수 있는 쿼리(서브쿼리, 함수 등)를 한눈에 정리해 보려 한다. 실제 SQL 실행 순서SQL은 우리가 작성하는 순서대로 실행되지 않는다. 눈에 보이기엔 `SELECT` → `FROM` → `WHERE` 순이지만, 실제로는 아래 순서로 실행된다.실행 순서절역할1`FROM`테이블/조인으로 원본 데..
[MySQL] WHERE은 별칭을 못 쓰는데 GROUP BY는 되는 이유
·
Backend/SQL
프로그래머스 SQL 문제를 풀면서 두 가지 의문이 생겼다. 먼저 `SELECT` 문에서 정의한 별칭을 `SELECT` 절 이전에 실행되는 `GROUP BY`, `HAVING` 절에서 사용할 수 있다는 것과 똑같이 `SELECT` 절 이전에 실행되는 `WHERE` 절은 이 별칭을 사용할 수 없다는 점이다. 예시 코드를 보면 다음과 같다.SELECT HOUR(DATETIME) HOUR, COUNT(*) COUNTFROM ANIMAL_OUTSGROUP BY HOURHAVING 9 이 코드는 문제없이 잘 실행된다. (사실 여기서부터 의문이었다. 왜 `GROUP BY`, `HAVING` 절은 `SELECT` 절보다 늦게 실행되는데 `SELECT` 절에서 정의한 `HOUR`를 사용할 수 있지?) SELECT HOU..