MySQL如果不存在一个表则创建

一、问题起因

在前几天从同事那里拿来demo研究的时候,发现数据库名,部分表都一样,只是有的表没有,这时如果需要把两个人的数据库和成一个数据库,就需要处理判断一张表不存在,如存在则不改动,若不存在,则执行创建。


二、处理思路

在同事那里拿到这个数据库的转存文件,然后去手动改动这个.sql转存文件对一些自己不确定自己数据库中是否存在的表,做如下示例处理

转存sql文件时,每个表的导入都是如下创建方式,先判断是否存在,若存在,则删除这张表,重新创建,以下示例均为demo:

DROP TABLE IF EXISTS `student`;#判断时候存在,若存在则执行删除表操作
CREATE TABLE `student` (
  `s_id` varchar(40) NOT NULL,
  `s_name` varchar(255) default NULL,
  `s_age` varchar(255) default NULL,
  `s_msg` varchar(255) default NULL,
  PRIMARY KEY  (`s_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('1', '早晨', '22', '电风扇');
INSERT INTO `student` VALUES ('2', '春节', '32', '发电设备v');
INSERT INTO `student` VALUES ('3', '端午节', '33', '地方');
INSERT INTO `student` VALUES ('4', '清明节', '44', 'dfs ');
INSERT INTO `student` VALUES ('5', '圣诞节', '66', '的');

在导入表时,不想删除以前这张表中的数据,但希望允许转存sql文件中的数据新增时,做如下修改

CREATE TABLE IF NOT EXISTS `student` (#判断这张表是否存在,若存在,则跳过创建表操作,
 `s_id` varchar(40) NOT NULL, 
`s_name` varchar(255) default NULL, 
`s_age` varchar(255) default NULL, 
`s_msg` varchar(255) default NULL, 
PRIMARY KEY (`s_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `student` VALUES ('7', '重阳节', '33', '登高赏菊');


三、建议

在执行新表创建,特别是批量创建时,一定要先对表的存在状态做判断,即使用if exists,不然一旦创建出错,后面的语句将无法执行。



  • 16
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值