zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    零基础学python-2.6 数字与字符串
    零基础学python-2.5 变量与赋值
    零基础学python-2.4 操作符
    零基础学python-2.3 注释
    js原型和原型链
    ES6数据结构Set、Map
    JS高阶函数--------map、reduce、filter
    vue-cli3.0以上项目中引入jquery的方法
    vue项目中使用echarts map报错Cannot read property 'push' of undefined nanhai.js
    js 将时间戳转成时间格式化
  • 原文地址:https://www.cnblogs.com/chuanzhang053/p/8761609.html
Copyright © 2011-2022 走看看