MySQL的SQL语句注释的应用

MySQL的SQL语句里面是可以加注释的

例如:
"select * from t1"可以写成
"/* tag  */select * from t1"
这个tag可以扩展成很多格式,这样在MySQL的日志中就可以看到这个tag

但是我在5.0和5.5版本中,象上面的注释,并不会显示出来,还是直接显示"select * from t1"

研究了一下,可以改成这样:

"/*!90000 tag  */select * from t1"

"!"后的5位数字代表MySQL版本号,上面这个语句的意思是只有MySQL版本号大于9.0的时候,注释内容才会被执行

由于目前也没有9.0版本,所以注释内容是不会被执行的,但是在LOG日志和慢查询日志里可以看到语句中的tag注释,在show full processlist中也可以看到SQL语句中的注释tag


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的时候,也会看到如下一些注释,表示只有版本等于或大于5.1(50100表示5.1,50500表示5.5)时才支持分区语句
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 /*!40001 SQL_NO_CACHE */ * FROM `tbMail_1`;
SQL_NO_CACHE告知MySQL不要把查询结果存储在查询缓存中


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值