MySQL對標準SQL的注釋擴充套件

2021-05-01 07:21:12 字數 2389 閱讀 8456

之前一直不明白

mysql

注釋中的嘆號是什麼東西,直到看了下邊的

manual

文件中的內容。

mysql

伺服器包含一些其他

sql dbms

中不具備的擴充套件。注意,如果使用了它們,將無法把**移植到其他

sql伺服器。在某些情況下,你可以編寫包含

mysql

擴充套件的**,但仍保持其可移植性,方法是用

「/*... */」

注釋掉這些擴充套件。在本例中,

mysql

伺服器能夠解析並執行注釋中的**,就像對待其他

mysql

語句一樣,但其他

sql伺服器將忽略這些擴充套件。例如:

select /*! straight_join */ col_name from table1,table2 where ...

如果在字元

「!」後新增了版本號,僅當

mysql

的版本等於或高於指定的版本號時才會執行注釋中的語法:

create /*!32302 temporary */ table t (a int);

這意味著,如果你的版本號為

3.23.02

或更高,

mysql

伺服器將使用

temporary

關鍵字。

今天是在看

5.1的

partition

表的show create table

的時候,又去想這個問題的,如下為乙個

partition

表的建立語法:只有版本大於

5.1才會去做注釋裡邊的內容。我不明白的是

5.1怎麼是

50100

這麼個表示,

ms二級版本

create table `log_data` (

`hap_date` date default null,

`uin` int(11) default null

) engine=innodb default charset=utf8 /*!50100 partition by list (to_days(hap_date)) (partition p_20080523 values in (733550) engine = innodb) */

還有乙個是以前很迷惑的,在

mysqldump

過程中那些

select

都是帶有

sql_no_cache

的,不知道為什麼,其實

manual

裡邊都有解釋

select /*!40001 sql_no_cache */ * from `tbmail_1`;

·        sql_no_cache

告知mysql

不要把查詢結果儲存在查詢快取中。請參見

5.13

節,「mysql

查詢高速緩衝

」。對於乙個使用

union

或子查詢的查詢,本選項會影響查詢中的

select。其實

mysqldump

結果sql

裡邊很多這樣的東東:

代表了各個版本

mysql

引進的一些東東。

Mysql對SQL注釋的擴充套件

之前一直不明白mysql注釋中的嘆號是什麼東西,直到看了下邊的manual文件中的內容。mysql伺服器包含一些其他sql dbms中不具備的擴充套件。注意,如果使用了它們,將無法把 移植到其他sql伺服器。在某些情況下,你可以編寫包含mysql擴充套件的 但仍保持其可移植性,方法是用 注釋掉這些擴...

mysql對標準sql的goup by進行了擴充套件

標準sql語法中,對select語句執行group by操作的話,select選擇的列必須出現在group by子句中,也就是說先要明確根據什麼分組,然後才能選擇分沒分組。不過mysql資料庫不完全是這樣,只要mysql資料庫不是執行在ansi模式下 什麼是執行模式,簡單講就是指支援的sql語法,執...

mysql 標準sql 久違的SQL標準

很久沒有什麼工作需要參考sql標準了,乃至於sql 2011的更新都一直沒有去關注過。sql標準一路走來,可以說是略顯老態了,參與的廠商比較少,關注的人也少了。絕大多數人提起sql標準,涉及的內容其實是sql89或sql92裡頭最基本或者說最核心的一部分。其實,自從 很久沒有什麼工作需要參考sql標...