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的時候,這個語句才能被執行.

 

文檔創建時間:2018年4月9日17:50:38


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM