Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 문에서 \G와 세미콜론(;)을 함께 사용하면 어떻게 될까?

\G와 세미콜론(;)의 역할

MySQL에서 \G 옵션은 명령문을 MySQL 서버로 전송하여 실행하는 역할을 하고, 세미콜론(;)은 명령문의 끝을 알리는 구분자 역할을 합니다. 흥미로운 점은 두 종료 기호가 서로 다른 결과 집합 출력 형식을 가진다는 것입니다. \G는 결과를 세로(vertical) 형식으로, 세미콜론은 표(tabular) 형식으로 출력합니다.

그렇다면 하나의 MySQL 문에 이 둘을 동시에 사용하면 어떻게 될까요? MySQL은 먼저 만나는 종료 기호를 기준으로 결과를 출력하고, 나머지 하나에 대해서는 오류를 반환합니다. 아래 예제를 통해 쉽게 이해할 수 있습니다.

예제 1: 세미콜론(;)을 먼저 사용한 경우

mysql> Select CURDATE();\G
+------------+
| CURDATE()  |
+------------+
| 2017-11-06 |
+------------+
1 row in set (0.00 sec)
ERROR:
No query specified

위 문장에서는 세미콜론(;)이 먼저 나오고 그다음에 \G 옵션이 위치합니다. 따라서 결과가 표(tabular) 형식으로 출력됩니다. 이후 MySQL은 \G 옵션에 해당하는 별도의 쿼리가 없다고 판단하여 "No query specified" 오류를 반환합니다.

예제 2: \G를 먼저 사용한 경우

mysql> Select CURDATE()\G;
*************************** 1. row ***************************
CURDATE(): 2017-11-06
1 row in set (0.00 sec)
    ERROR:
No query specified

반대로 위 문장에서는 \G 옵션이 먼저 나오고 그다음에 세미콜론(;)이 위치합니다. 따라서 결과가 세로(vertical) 형식으로 출력됩니다. 이후에는 세미콜론(;)에 해당하는 쿼리가 없기 때문에 마찬가지로 "No query specified" 오류가 발생합니다.

정리

\G와 세미콜론(;)을 하나의 문에 함께 사용하면 MySQL이 먼저 만나는 종료 기호에 따라 출력 형식이 결정되며, 남은 종료 기호는 빈 쿼리로 처리되어 오류가 발생합니다. 따라서 실무에서는 한 문장에 하나의 종료 기호만 사용하는 것이 바람직합니다.