mysql中/*!40000 DROP DATABASE IF EXISTS `top_server`*/;这中注释有什么作用?

本文介绍了MySQL中一种特殊的注释格式,即以/*!开头的注释,并解释了其执行机制及版本控制特性。通过实例演示如何使用--add-drop-database参数进行数据库备份,并展示了特殊注释在SQL文件中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求描述:

  今天在进行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

转载于:https://www.cnblogs.com/chuanzhang053/p/8761609.html

DROP DATABASE IF EXISTS `ry-config`; CREATE DATABASE `ry-config` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; USE `ry-config`; /******************************************/ /* 表名称 = config_info */ /******************************************/ CREATE TABLE `config_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(128) DEFAULT NULL COMMENT 'group_id', `content` longtext NOT NULL COMMENT 'content', `md5` varchar(32) DEFAULT NULL COMMENT 'md5', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', `c_desc` varchar(256) DEFAULT NULL COMMENT 'configuration description', `c_use` varchar(64) DEFAULT NULL COMMENT 'configuration usage', `effect` varchar(64) DEFAULT NULL COMMENT '配置生效的描述', `type` varchar(64) DEFAULT NULL COMMENT '配置的类型', `c_schema` text COMMENT '配置的模式', `encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥', PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info'; 帮我把这个语句改为mysql语句格式,并且将注释给我删除
03-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值