MySQL에서는 하나의 SQL 문을 여러 줄에 걸쳐 자유롭게 작성할 수 있습니다. 그 이유는 MySQL이 문(statement)의 끝을 판단할 때 입력 줄의 끝이 아니라 종료 세미콜론(;)을 기준으로 삼기 때문입니다.
예제
mysql> Select *
-> from
-> stock_item;
+------------+-------+----------+
| item_name | Value | Quantity |
+------------+-------+----------+
| Calculator | 15 | 89 |
| Notebooks | 63 | 40 |
| Pencil | 15 | 40 |
| Pens | 65 | 32 |
| Shirts | 13 | 29 |
| Shoes | 15 | 29 |
| Trousers | 15 | 29 |
+------------+-------+----------+
7 rows in set (0.00 sec)위 예제에서 볼 수 있듯이, 하나의 SELECT 쿼리를 여러 줄로 나누어 입력했음에도 MySQL은 종료 세미콜론을 만나기 전까지는 아무런 결과를 반환하지 않습니다. 세미콜론이 입력된 순간에 비로소 전체 문장을 실행하고 결과를 출력합니다.
자유 형식(Free-format) 입력 지원
이러한 동작 방식 때문에 MySQL은 자유 형식(free-format) 입력을 인식한다고 말할 수 있습니다. 즉, MySQL은 사용자가 입력하는 각 줄을 개별적인 명령으로 처리하지 않고, 줄바꿈과 상관없이 입력 내용을 계속 모아 두었다가 종료 세미콜론을 발견하면 그때 비로소 문장을 완성하여 실행합니다.
덕분에 긴 쿼리나 복잡한 조인문을 들여쓰기와 줄바꿈을 활용해 가독성 좋게 정리하여 작성할 수 있으며, 이는 코드 유지보수와 디버깅에도 큰 도움이 됩니다.