为了账号安全,请及时绑定邮箱和手机立即绑定

CREATE TABLE IF NOT EXISTS 表名

语句中的 IF NOT EXISTS 是什么作用呢

正在回答

3 回答

  1. 如果不加IF NOT EXISTS,那么如果要创建的表已经存在时,系统就会报错表示已经存在此表。

    例如,已经存在emp表,执行:create table emp( id int(2)) ;

    结果报错:ERROR 1050 (42S01): Table 'emp' already exists(意思是:emp表已经存在。)


  2. 而加了之后,即使表名已存在也不会报错,也会“执行”,但不会创建新的表。

    例如,在第1点的基础上,执行:create table if not exists emp( id int(2)) ;

    结果不会报错:Query OK, 0 rows affected, 1 warning (0.05 sec)


  3. 验证方法,可以通过desc emp;语句,看看在执行第1点和第2点之后,emp表的字段结构有没有发生改变。(前提:事先创建好emp表)


  4. 下图是在已经存在emp表的情况下,用带有IF NOT EXISTS的语句再次创建emp表,结果可以发现:没有报错,但也不会覆盖旧表。


    https://img1.sycdn.imooc.com//5ba7761300016ccb05810557.jpg


0 回复 有任何疑惑可以回复我~

字面意思就是: 如果 不 存在. 在创建表的时候使用最明显的效果就是, 如果你当前的数据库有重名的表, 不会提示错误信息. 之前的课老师讲过, 写不写都行, 对表的创建没有影响.

0 回复 有任何疑惑可以回复我~

如果不加IF NOT EXISTS,那么如果要创建的表名已经存在时,系统就会报错表示已经存在此表。

加了之后即使表名已存在也不会报错,也会执行,但是新的表不会覆盖旧表。

0 回复 有任何疑惑可以回复我~
#1

画方为圆

那会出现2个名字一样的表?
2017-02-21 回复 有任何疑惑可以回复我~
#2

未入门_寻门

纠正一点:加了IF NOT EXISTS之后,如果表名已存在,则不会创建新的表。
2018-09-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
与MySQL的零距离接触
  • 参与学习       396886    人
  • 解答问题       3353    个

本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识

进入课程

CREATE TABLE IF NOT EXISTS 表名

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信