程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql /*! */的含義

mysql /*! */的含義

編輯:MySQL綜合教程

mysql /*! */的含義   在MySQL的SQL語句或SQL文件經常看到如下用戶:

SELECT /*!40001 SQL_CACHE */ * FROM pre_common_syscache WHERE cname IN ('ipbanned')/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

 

  這只是一個hint啊。40001 SQL_CACHE, 意味著數據庫要緩存整個SQL語句。還有SQL_NO_CACHE的hint   /* ....  */ 在大部分語言中都一樣是注釋。這個之中的語句是不被執行的。但MYSQL中 為了保持兼容,比如從mysqldump 導出的SQL語句能被其它數據庫直接使用,它把一些特有的僅在MYSQL上的語句放在 /*! ... */ 中,這樣這些語句如果在其它數據庫中是不會被執行,但在MYSQL中它會執行。   1.8.4. MySQL對標准SQL的擴展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關鍵字。  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved