Hướng dẫn nested comments mysql - nhận xét lồng nhau mysql

Máy chủ MySQL hỗ trợ ba kiểu bình luận:

  • Từ một ký tự # đến cuối dòng.

  • Từ một chuỗi

    /*! MySQL-specific code */
    0 đến cuối dòng. Trong MySQL, kiểu bình luận
    /*! MySQL-specific code */
    0 (Double-Dash) yêu cầu dấu gạch ngang thứ hai được theo sau bởi ít nhất một ký tự khoảng trắng hoặc điều khiển (như không gian, tab, newline, v.v.). Cú pháp này khác một chút so với cú pháp bình luận SQL tiêu chuẩn, như được thảo luận trong Phần & NBSP; 1.7.2.4, ''-'là sự khởi đầu của một bình luận.

  • Từ một chuỗi

    /*! MySQL-specific code */
    2 đến chuỗi
    /*! MySQL-specific code */
    3 sau đây, như trong ngôn ngữ lập trình C. Cú pháp này cho phép một nhận xét mở rộng qua nhiều dòng vì các chuỗi bắt đầu và đóng không cần phải ở cùng một dòng.

Ví dụ sau đây cho thấy cả ba kiểu bình luận:

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;

Nhận xét lồng nhau không được hỗ trợ, và không được chấp nhận; Hy vọng chúng sẽ bị xóa trong bản phát hành MySQL trong tương lai. (Trong một số điều kiện, các bình luận lồng nhau có thể được cho phép, nhưng thường thì không, và người dùng nên tránh chúng.)

Máy chủ MySQL hỗ trợ một số biến thể của các bình luận kiểu C. Chúng cho phép bạn viết mã bao gồm các tiện ích mở rộng MySQL, nhưng vẫn có thể di động, bằng cách sử dụng các nhận xét của biểu mẫu sau:

/*! MySQL-specific code */

Trong trường hợp này, máy chủ MySQL phân tích cú pháp và thực thi mã trong nhận xét vì bất kỳ câu lệnh SQL nào khác, nhưng các máy chủ SQL khác nên bỏ qua các tiện ích mở rộng. Ví dụ: Máy chủ MySQL nhận ra từ khóa

/*! MySQL-specific code */
4 trong câu lệnh sau, nhưng các máy chủ khác không nên:

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

Nếu bạn thêm một số phiên bản sau ký tự

/*! MySQL-specific code */
5, cú pháp trong nhận xét chỉ được thực thi nếu phiên bản MySQL lớn hơn hoặc bằng số phiên bản được chỉ định. Từ khóa
/*! MySQL-specific code */
6 trong nhận xét sau đây chỉ được thực hiện bởi các máy chủ từ MySQL 5.1.10 trở lên:

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

Cú pháp nhận xét vừa được mô tả áp dụng cho cách các câu lệnh SQL của máy chủ MySQLD phân tích các câu lệnh SQL. Chương trình máy khách MySQL cũng thực hiện một số phân tích các câu lệnh trước khi gửi chúng đến máy chủ. .mysqld server parses SQL statements. The mysql client program also performs some parsing of statements before sending them to the server. (It does this to determine statement boundaries within a multiple-statement input line.) For information about differences between the server and mysql client parsers, see Section 4.5.1.6, “mysql Client Tips”.

Nhận xét ở định dạng

/*! MySQL-specific code */
7 không được lưu trữ trên máy chủ. Nếu định dạng này được sử dụng để nhận xét các chương trình được lưu trữ, các ý kiến ​​không được giữ lại trong thân chương trình.

Một biến thể khác của cú pháp bình luận kiểu C được sử dụng để chỉ định gợi ý của trình tối ưu hóa. Gợi ý nhận xét bao gồm một ký tự

/*! MySQL-specific code */
8 sau chuỗi mở nhận xét
/*! MySQL-specific code */
2. Thí dụ:

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

Để biết thêm thông tin, xem Phần & NBSP; 8.9.3, Trình tối ưu hóa gợi ý.

Việc sử dụng các lệnh MySQL dạng ngắn như

SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
0 trong nhiều nhận xét
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
1 không được hỗ trợ. Các lệnh dạng ngắn hoạt động trong các nhận xét phiên bản
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
2 một dòng, cũng như các nhận xét về trình điều chỉnh tối ưu hóa
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
3, được lưu trữ trong các định nghĩa đối tượng. Nếu có một lo ngại rằng các nhận xét về bộ lọc tối ưu hóa có thể được lưu trữ trong các định nghĩa đối tượng để các tệp kết xuất khi được tải lại với
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
4 sẽ dẫn đến việc thực thi các lệnh đó, hoặc gọi MySQL với tùy chọn
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
5 hoặc sử dụng ứng dụng khách tải lại ngoài MySQL.mysql commands such as
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
0 within multiple-line
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
1 comments is not supported. Short-form commands do work within single-line
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
2 version comments, as do
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
3 optimizer-hint comments, which are stored in object definitions. If there is a concern that optimizer-hint comments may be stored in object definitions so that dump files when reloaded with
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
4 would result in execution of such commands, either invoke mysql with the
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
5 option or use a reload client other than mysql.

Máy chủ MySQL hỗ trợ ba kiểu bình luận:

  • Từ một ký tự # đến cuối dòng.

  • Từ một chuỗi

    /*! MySQL-specific code */
    0 đến cuối dòng. Trong MySQL, kiểu bình luận
    /*! MySQL-specific code */
    0 (Double-Dash) yêu cầu dấu gạch ngang thứ hai được theo sau bởi ít nhất một ký tự khoảng trắng hoặc điều khiển (như không gian, tab, newline, v.v.). Cú pháp này khác một chút so với cú pháp bình luận SQL tiêu chuẩn, như được thảo luận trong Phần & NBSP; 1.7.2.4, ''-'là sự khởi đầu của một bình luận.

  • Từ một chuỗi

    /*! MySQL-specific code */
    2 đến chuỗi
    /*! MySQL-specific code */
    3 sau đây, như trong ngôn ngữ lập trình C. Cú pháp này cho phép một nhận xét mở rộng qua nhiều dòng vì các chuỗi bắt đầu và đóng không cần phải ở cùng một dòng.

Ví dụ sau đây cho thấy cả ba kiểu bình luận:

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;

Nhận xét lồng nhau không được hỗ trợ. (Trong một số điều kiện, các bình luận lồng nhau có thể được cho phép, nhưng thường thì không, và người dùng nên tránh chúng.)

Máy chủ MySQL hỗ trợ một số biến thể của các bình luận kiểu C. Chúng cho phép bạn viết mã bao gồm các tiện ích mở rộng MySQL, nhưng vẫn có thể di động, bằng cách sử dụng các nhận xét của biểu mẫu sau:

/*! MySQL-specific code */

Trong trường hợp này, máy chủ MySQL phân tích cú pháp và thực thi mã trong nhận xét vì bất kỳ câu lệnh SQL nào khác, nhưng các máy chủ SQL khác nên bỏ qua các tiện ích mở rộng. Ví dụ: Máy chủ MySQL nhận ra từ khóa

/*! MySQL-specific code */
4 trong câu lệnh sau, nhưng các máy chủ khác thì không:

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

Nếu bạn thêm một số phiên bản sau ký tự

/*! MySQL-specific code */
5, cú pháp trong nhận xét chỉ được thực thi nếu phiên bản MySQL lớn hơn hoặc bằng số phiên bản được chỉ định. Từ khóa
/*! MySQL-specific code */
6 trong nhận xét sau đây chỉ được thực hiện bởi các máy chủ từ MySQL 5.1.10 trở lên:

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

Cú pháp nhận xét vừa được mô tả áp dụng cho cách các câu lệnh SQL của máy chủ MySQLD phân tích các câu lệnh SQL. Chương trình máy khách MySQL cũng thực hiện một số phân tích các câu lệnh trước khi gửi chúng đến máy chủ. .mysqld server parses SQL statements. The mysql client program also performs some parsing of statements before sending them to the server. (It does this to determine statement boundaries within a multiple-statement input line.) For information about differences between the server and mysql client parsers, see Section 4.5.1.6, “mysql Client Tips”.

Nhận xét ở định dạng

/*! MySQL-specific code */
7 không được lưu trữ trên máy chủ. Nếu định dạng này được sử dụng để nhận xét các chương trình được lưu trữ, các ý kiến ​​không được giữ lại trong thân chương trình.

Việc sử dụng các lệnh MySQL dạng ngắn như

SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
0 trong nhiều nhận xét
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
1 không được hỗ trợ.mysql commands such as
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
0 within multiple-line
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
1 comments is not supported.