写点什么

MySQL SQL 脚本语句加上数据库存在判断

作者:Andy
  • 2023-05-28
    北京
  • 本文字数:1078 字

    阅读完需:约 4 分钟

一、问题描述


在使用 MySQL 的过程中,为了提高效率,通常需要应用脚本文件。


在很多时候,通常在脚本文件中编写创建数据库表,以及针对数据库表的增删改查操作。


但是,在导入文件后,为了能够正确使用,都需要在所有语句开头增加使用指定数据库的语句。


use xxx_database;
复制代码


这是因为 MySQL 是基于 schema 的结构特点,因此,必须使用明确的数据库才行。


那么,问题来了,每次调用 SQL 脚本文件,都得去编写 use 语句,显得非常麻烦。


因此,有没有一个可以省略这个步骤,不用这么麻烦每次都要编写 use 的方法呢?


答案是有的。


二、解决方案


我们可以使用创建数据库表的语法,来解决以上问题。


语句很简单,如下所示:


CREATE DATABASE IF NOT EXISTS xxx_database DEFAULT CHARACTER SET = utf8mb4;
复制代码


这样,就不用每次都要去编写 use 语句了。


我们可以这样编写,举例如下:


# Create Database# ------------------------------------------------------------CREATE DATABASE IF NOT EXISTS xxx_database DEFAULT CHARACTER SET = utf8mb4;
Use xxx_database;
# Dump of table app# ------------------------------------------------------------
DROP TABLE IF EXISTS `App`;
CREATE TABLE `App` ( `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID', `Name` varchar(500) NOT NULL DEFAULT 'default' COMMENT '应用名', `OrgId` varchar(32) NOT NULL DEFAULT 'default' COMMENT '部门Id', `OrgName` varchar(64) NOT NULL DEFAULT 'default' COMMENT '部门名字', `OwnerName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ownerName', `OwnerEmail` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ownerEmail', `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal', `DataChange_CreatedBy` varchar(64) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀', `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `DataChange_LastModifiedBy` varchar(64) DEFAULT '' COMMENT '最后修改人邮箱前缀', `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间', PRIMARY KEY (`Id`), KEY `AppId` (`AppId`(191)), KEY `DataChange_LastTime` (`DataChange_LastTime`), KEY `IX_Name` (`Name`(191))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用表';
复制代码


用户头像

Andy

关注

强准备+强信念+强执行 2019-11-21 加入

以前是T型人才,当下是π型人才,未来是梳子型人才

评论

发布
暂无评论
MySQL SQL脚本语句加上数据库存在判断_Andy_InfoQ写作社区