MYSQL注释
引入:在MYSQL数据库的学习过程中,对数据库进行备份数据时,发现数据库中存在以下的这种注释。
-- MySQL dump 10.13 Distrib 5.7.44, for Win64 (x86_64)
--
-- Host: localhost Database: sys
-- ------------------------------------------------------
-- Server version 5.7.44-log
/*!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 */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */ 是什么呀?带着这样的疑惑,开始了搜索,最终查询得到了以下结果,为了方便自己的知识形成一个完整的体系,将其作为SQL注释内容的一部分。
/*!...*/ 是什么
/*!...*/ 是MYSQL的可执行注释,注释当中的内容会被MYSQL正确解析和执行,但是在其它数据库系统中将作为注释被忽略,它极大提高了数据库脚本的可移植性。
40101、40103、40111 这堆数字是什么?
40101,这是 MySQL 版本号,该数字告诉我们这些语句只有在大于等于该版本的 MySQL 中才能执行, 即在 MySQL 4.1.1(4.01.01)及以上版本的 MySQL 中执行,以此类推。
为什么要用这种注释?
MySQL 包含一些其它 DBMS 中不具备的功能扩展,如果使用了它们,将无法把代码移植到其它 DBMS 中。在某些情况下,你可以编写包含 MySQL 特殊扩展功能的代码,但仍保持其可移植性,方法是用 /*!... */ 注释掉这些扩展。MySQL DBMS 能够解析并执行注释中的代码,就像对待其它 MySQL 语句一样,但其它 DBMS 则将其当成注释,从而忽略这些扩展功能。
总结:所谓的可执行注释指的是在MYSQL中满足版本号要求即可执行的SQL语句,而在其它数据库系统中将作为普通注释直接忽略。
在MYSQL中除了以上的可执行注释,还有其它的注释
-- 单行注释
# 单行注释
/*
多行注释
多行注释
...
*/