mysql中 !40000 DROP DATABASE IF EXISTS `top_server` 这中注释有什么作用?
需求描述:
今天在進行mysqldump實驗,使用--add-drop-databases參數,于是在生成的SQL文件中,就出現了.
/*!40000 DROP DATABASE IF EXISTS `top_server`*/;這種類似于注釋的內容,查詢了一下
在這里記錄下.
操作過程:
1.使用--add-drop-database參數進行數據庫的備份
[mysql@redhat6 MysqlDb_Backup]$ mysqldump -uroot -p --single-transaction --master-data --flush-logs --add-drop-database --databases top_server test01 > Backup_Tables_2018-04-09.sql Enter password:備注:使用--add-drop-database選項之后,就會在生成的SQL文件中增加drop database選項,即還原時先對DB進行刪除.
2.查看生成的SQL備份文件
-- MySQL dump 10.13 Distrib 5.5.57, for linux-glibc2.12 (x86_64) -- -- Host: localhost Database: top_server -- ------------------------------------------------------ -- Server version 5.5.57-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 */;-- -- Position to start replication or point-in-time recovery from --CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000018', MASTER_LOG_POS=107;-- -- Current Database: `top_server` --/*!40000 DROP DATABASE IF EXISTS `top_server`*/; #在SQL文件中增加了該語句,使用該文件還原時會先刪除數據庫.CREATE DATABASE /*!32312 IF NOT EXISTS*/ `top_server` /*!40100 DEFAULT CHARACTER SET latin1 */;USE `top_server`;-- -- Table structure for table `dept` --3.將/*!40000 DROP DATABASE IF EXISTS `top_server`*/;語句直接放到mysql控制臺中執行
mysql> /*!40000 DROP DATABASE IF EXISTS `top_server`*/; Query OK, 62 rows affected (0.28 sec)mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test01 | | test02 | | test03 | | ziler | +--------------------+ 7 rows in set (0.00 sec)備注:發現top_server數據庫已經被刪除了,說明這個SQL語句不是注釋是可以執行的語句.
4.經過查詢,發現該類似于注釋的語句的特點
注釋格式:
/*!?MySQL-specific code?*/
備注:在注釋部分中的SQL語句就會被執行,注釋的開頭多了個嘆號.
另外,也可以在!號的后面加版本號
/*!version_number?MySQL-specific code?*/
備注:此時版本號的作用是,只有當Mysql的版本大于等于這個版本號的時候,注釋中的SQL語句才會被執行
?
小結:
/*!?MySQL-specific code?*/ 這種注釋是mysql注釋中的特殊一種,通過使用嘆號在注釋中,注釋中的代碼就會被執行.
在本例子中,只有當Mysql Server的版本大于Mysql 4的時候,這個語句才能被執行.
總結
以上是生活随笔為你收集整理的mysql中 !40000 DROP DATABASE IF EXISTS `top_server` 这中注释有什么作用?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 同步一张表、复制过滤设置
- 下一篇: 正则表达式-匹配数字范围