迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > 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 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

使用 Mysqldump 备份 MySQL 中的数据

发布时间:2023/05/09 浏览次数:192 分类:MySQL

本篇文章将介绍如何使用 mysqldump 只备份数据。 在这里,我们将探讨 --no-create-info 、--compact 、--skip-triggers 和 --no-create-db 选项。

更新 MySQL 表中的主键

发布时间:2023/05/09 浏览次数:61 分类:MySQL

本篇文章介绍如何更新 MySQL 表中的主键。 我们将使用 ALTER 命令对主键进行任何更改。更新 MySQL 表中的主键 我们可以在多种情况下更新 MySQL 表中的主键。

在 MySQL 中获取命令历史记录

发布时间:2023/05/09 浏览次数:150 分类:MySQL

本文重点介绍了在 Windows 和 Linux 中获取我们已执行的 MySQL 命令历史记录的各种方法。MySQL命令历史

Oracle 的 decode 函数在 MySQL 中的等价物

发布时间:2023/05/09 浏览次数:115 分类:MySQL

本篇文章介绍了三种替代实现,我们可以将它们用作 MySQL 中 Oracle 的 decode() 函数的等价物。 为此,我们将使用 IF()、CASE 以及 FIELD() 和 ELT() 的组合。

在 Linux 中安装 MySQL 客户端

发布时间:2023/05/09 浏览次数:72 分类:MySQL

在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。

在 MySQL 中转换为十进制

发布时间:2023/05/09 浏览次数:150 分类:MySQL

有时,我们可能需要将一种数据类型转换为另一种数据类型。 下面是我们如何使用带有 DECIMAL(M,D) 的 CAST() 和 CONVERT() 函数在 MySQL 中转换为十进制。

在 MySQL 中获取当前日期和时间

发布时间:2023/05/09 浏览次数:145 分类:MySQL

本篇文章我们将学习 NOW()、CURRENT_TIMESTAMP()(也写为 CURRENT_TIMESTAMP)和 SYSDATE() 来获取 MySQL 中的当前日期和时间。 我们还将看到这三个功能之间的比较。在 MySQL 中获取当前日期和时间

更改 MySQL 服务器中的 max_allowed_packet Size

发布时间:2023/05/09 浏览次数:142 分类:MySQL

本篇文章介绍如何更改 MySQL 服务器中的 max_allowed_packet 大小。 为了了解这一点,我们将使用两个操作系统,Windows 10 和 Linux (Ubuntu)。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便