之前一直不明白
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標...