MySQL 使用IF EXISTS和IF NOT EXISTS关键字创建表

MySQL 使用IF EXISTS和IF NOT EXISTS关键字创建表

在MySQL中,如果你要创建一张表,通常的做法是使用CREATE TABLE语句。但是,在实际应用中,有时候你需要先判断这个表是否存在,如果存在就删除这个表然后重新创建,如果不存在就直接创建这个表。这个时候,你就需要使用IF EXISTS和IF NOT EXISTS关键字来实现这个功能。

阅读更多:MySQL 教程

使用IF EXISTS和IF NOT EXISTS

IF EXISTS和IF NOT EXISTS是MySQL中用来判断一个表是否存在的关键字。使用这两个关键字可以有效地避免在重复创建表的时候出现错误。

1. 如果表存在就删除它,然后重新创建

DROP TABLE IF EXISTS 表名;
CREATE TABLE 表名 (列名1 数据类型1, 列名2 数据类型2, ...);

例如,如果我们要删除表student并重新创建它,可以使用以下命令:

DROP TABLE IF EXISTS student;
CREATE TABLE student (
   id INT(11) NOT NULL AUTO_INCREMENT,
   name VARCHAR(50) NOT NULL,
   age INT(11) NOT NULL,
   PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这个命令首先判断student表是否存在,如果存在就删除它,然后重新创建一个新的student表。

2. 如果表不存在就直接创建

CREATE TABLE IF NOT EXISTS 表名 (列名1 数据类型1, 列名2 数据类型2, ...)

例如,如果我们要创建一个新的表score,可以使用以下命令:

CREATE TABLE IF NOT EXISTS score (
   id INT(11) NOT NULL AUTO_INCREMENT,
   student_id INT(11) NOT NULL,
   course_id INT(11) NOT NULL,
   score INT(11) DEFAULT NULL,
   PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这个命令会先判断表score是否存在,如果不存在就直接创建score表。

代码示例

以下是一个完整的代码示例:

-- 如果student表存在就删除它,然后重新创建
DROP TABLE IF EXISTS student;
CREATE TABLE student (
   id INT(11) NOT NULL AUTO_INCREMENT,
   name VARCHAR(50) NOT NULL,
   age INT(11) NOT NULL,
   PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 如果score表不存在就创建
CREATE TABLE IF NOT EXISTS score (
   id INT(11) NOT NULL AUTO_INCREMENT,
   student_id INT(11) NOT NULL,
   course_id INT(11) NOT NULL,
   score INT(11) DEFAULT NULL,
   PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

总结

在MySQL中,使用IF EXISTS和IF NOT EXISTS这两个关键字可以有效地避免在重复创建表的时候出现错误。如果你想判断一个表是否存在并删除它,然后重新创建该表,可以使用DROP TABLE IF EXISTS语句和CREATE TABLE语句;如果你想在表不存在的情况下创建该表,则可以使用CREATE TABLE IF NOT EXISTS语句。这些语句可以大大简化你的工作流程,并减少错误。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程