迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

检查表是否存在于 MySQL 中

作者:迹忆客 最近更新:2023/03/13 浏览次数:

本文提供了几个选项来检查 MySQL 中的表是否存在。在讨论它之前,让我们先看看 MySQL 中的表是什么,以及何时需要检查它的存在。

MySQL 中的表是什么

表是保存所有数据库信息的数据库对象。表格类似于电子表格,因为数据以行和列的方式在逻辑上结构化。

每列显示记录中的一个字段,每一行代表一条不同的记录。我们可以通过简单地调用 create 语句在 MySQL 中创建一个表。

CREATE TABLE table_name (table_id INT);

我们可以执行 drop 语句来永久删除一个表。

DROP TABLE table_name;

有时,当我们想将表部署到数据库时,我们需要确认该表具有唯一的名称,否则,CREATE TABLE 语句会出错。

在另一种情况下,如果我们删除一个不存在的表,我们将再次收到错误。解决方法很简单;我们需要检查一个表是否存在并执行我们想要的操作。

使用信息模式检查 MySQL 中是否存在表

检查表是否存在的一种方法是查询 INFORMATION_SCHEMA.TABLES 视图。为此,我们可以从 INFORMATION_SCHEMA.TABLES 中获取与我们的表同名的表的数量。

CREATE TABLE table_name (table_id INT);
SELECT count(*)
FROM information_schema.TABLES
WHERE TABLE_NAME = 'table_name';

输出:

+----------+
| count(*) |
+----------+
|        1 |
+----------+

如果我们得到零,那么我们的数据库中就没有这样的表,如果我们得到一个非零数,那么这个表就存在。如果你有多个数据库,你可以在 WHERE 语句中检查 TABLE_SCHEMA = 'database_name'

如果你不知道数据库,你可以用 SELECT DATABASE() 查询它。上面带有数据库的代码的修订版本如下。

CREATE TABLE EMPLOYEE (table_id INT);
SELECT count(*) FROM information_schema.TABLES WHERE TABLE_NAME = 'EMPLOYEE'
AND TABLE_SCHEMA in (SELECT DATABASE());

输出:

+----------+
| count(*) |
+----------+
|        1 |
+----------+

使用 SHOW TABLES 命令检查表是否存在于 MySQL

第二种方法也很简单,就是使用 SHOW TABLES。让我们在数据库中创建一个表 sampletable 并检查它是否存在。

CREATE TABLE sampletable (myId INT);
SHOW TABLES LIKE 'sampletable';

输出:

Tables_in_db_3xs4qrcrf (sampletable)
sampletable

如果没有任何表,你可能会得到零行。你需要知道此方法不适用于临时表。

MySQL 中的临时表是一种特殊类型的表,可让你保存一个临时结果集,你可以在单个会话中多次重复使用该结果集。

当查询需要带有 JOIN 子句的单个 SELECT 语句的数据很困难或成本很高时,临时表很有用。

在这种情况下,你可以将即时结果保存在临时表中并使用另一个查询对其进行处理。我们将在下一个方法中讨论适用于临时表的方法。

使用 table_exists() 程序检查表是否存在于 MySQL

MySQL 5.7 之后添加了新的方法来确定表或视图是否存在,包括临时表。在说这个程序之前,我们首先要掌握这个程序。

过程是传统脚本语言中的数据库存储子例程(类似于子程序)。在 MySQL 的情况下,过程是用 MySQL 编写的,并保存在 MySQL 数据库/服务器中。

MySQL 进程包含三个部分:名称、参数列表和 SQL 查询。现在我们可以继续我们的特定过程 table_exists

根据 MySQL 文档:该过程在 OUT 参数中返回表类型。如果具有给定名称的临时表和永久表都存在,则返回 TEMPORARY

让我们检查一下。

CREATE TABLE mytable (id INT PRIMARY KEY);
CALL sys.table_exists('mydatabase', 'mytable', @exists); SELECT @exists;

输出:

+------------+
| @exists    |
+------------+
| BASE TABLE |
+------------+
1 row in set (0.00 sec)

如果数据库中没有这样的表,你将得到一个空结果。

+---------+
| @exists |
+---------+
|         |
+---------+
1 row in set (0.00 sec)

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 MySQL 中声明和使用变量

发布时间:2024/03/26 浏览次数:115 分类:MySQL

当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。

在 MySQL 中实现刷新权限

发布时间:2024/03/26 浏览次数:211 分类:MySQL

本教程介绍了 MySQL 中的刷新权限命令,用于刷新授权表并影响允许的更改。

在 MySQL 中设置时区

发布时间:2024/03/26 浏览次数:93 分类:MySQL

在本教程中,我们将学习如何在 MySQL 服务器中更改时区。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便