MySQL

mysql /*! */ 의미

필유아사 2022. 3. 2. 10:13

Comments(주석)

MySQL Server는 세 가지 주석 스타일을 지원합니다.

  • #(샵)
  • --(이중대시) : MySQL에서 이중 대시(--) 주석은 두 번째 대시 뒤에 최소한 하나의 공백이나 제어 문자(공백, 탭, 개행 문자 등)가 와야 합니다.
  • /* */ : 이 구문을 사용하면 주석을 여러 줄에 걸쳐 확장할 수 있습니다.

다음 예에서는 세 가지 주석 스타일을 모두 보여줍니다.

mysql> SELECT 1+1;     # This comment continues to the end of line
mysql> SELECT 1+1;     -- This comment continues to the end of line
mysql> SELECT 1 /* this is an in-line comment */ + 1;
mysql> SELECT 1+
/*
this is a
multiple-line comment
*/
1;

중첩 주석은 지원되지 않습니다.

MySQL Server는 C 스타일 주석의 특정 변형을 지원합니다. 다음 형식의 주석을 사용하여 MySQL 확장을 포함하지만 이식 가능한 코드를 작성할 수 있습니다.

/*! MySQL-specific code */

이 경우 MySQL 서버는 다른 SQL 문과 마찬가지로 주석 내의 코드를 구문 분석하고 실행하지만 다른 SQL 서버는 무시합니다. 

예를 들어, MySQL Server는 STRAIGHT_JOIN 키워드를 인식하지만 다른 서버는 인식하지 않습니다.

SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...

문자 뒤에 버전 번호를 추가하면 ! MySQL 버전이 지정된 버전 번호보다 크거나 같은 경우에만 주석 내의 구문이 실행됩니다. 다음 주석 의 KEY_BLOCK_SIZE키워드는 MySQL 5.1.10 이상의 서버에서만 실행됩니다.

CREATE TABLE t1(a INT, KEY (a)) /*!50110 KEY_BLOCK_SIZE=1024 */;

위에서 설명한 주석 구문은 mysqld 서버가 SQL 문을 구문 분석하는 데 적용됩니다. 또한 mysql 클라이언트 프로그램은 명령문을 서버로 보내기 전에 구문 분석을 수행합니다. 서버와 mysql 클라이언트 파서의 차이점에 대한 정보는 "mysql 클라이언트" 에서 참조합니다.

/*!12345 ... */ 형식의 주석은 서버에 저장되지 않습니다. 이 형식을 사용하여 stored  procedure에 주석을 달면 주석이 procedure body 문에 유지되지 않습니다.

C 스타일 주석 구문의 또다른 형태는 옵티마이저 힌트를 지정하는 데 사용됩니다.

SELECT /*+ BKA(t1) */ FROM ... ;

자세한 내용은 "Optimizer 힌트" 를 참조합니다.