检查 MariaDB 中是否存在表的 4 种方法
以下是检查 MariaDB 数据库中是否存在表的四种方法。
该表information_schema.TABLES
该表包含有关服务器上各种非表(信息架构数据库中的表除外)和视图的信息。information_schema.TABLES``TEMPORARY
下面是查询此表的示例:
SELECT
TABLE_SCHEMA,
TABLE_NAME,
TABLE_TYPE
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets';
结果:
+————–+————+————+ | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | +————–+————+————+ | PetHouse | pets | BASE TABLE | +————–+————+————+
在这里,我返回了从调用的数据库调用的基表。查询此内容而不按以下方式筛选结果会从所有数据库返回基表。在不按筛选方式的情况下查询它返回所有表类型。Pets``PetHouse``TABLE_SCHEMA``TABLE_TYPE
如果我们不需要所有这些信息,我们可以这样做:
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets'
);
结果:
1
或者我们可以得到计数:
SELECT COUNT(TABLE_NAME)
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets';
结果:
+——————-+ | COUNT(TABLE_NAME) | +——————-+ | 1 | +——————-+
命令SHOW TABLES
该命令列出给定数据库中的非表、序列和视图。我们可以使用 theclause 将其缩小到给定的类型。SHOW TABLES``TEMPORARY``WHERE
我们还可以使用 themodifier 返回显示类型的第二列:FULL
SHOW FULL TABLES
WHERE Table_Type LIKE 'BASE TABLE'
AND Tables_in_pethouse LIKE 'Pets';
结果:
+——————–+————+ | Tables_in_pethouse | Table_type | +——————–+————+ | Pets | BASE TABLE | +——————–+————+
在本例中,数据库名称为,因此第一列为。pethouse``Tables_in_pethouse
命令SHOW TABLE STATUS
命令类似于命令,但提供有关每个(非)表的更广泛信息。SHOW TABLE STATUS``SHOW TABLES``TEMPORARY
例:
SHOW TABLE STATUS
FROM PetHouse
WHERE Name = 'Pets';
结果:
+——+——–+———+————+——+—————-+————-+—————–+————–+———–+—————-+———————+————-+————+——————–+———-+—————-+———+——————+———–+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | Max_index_length | Temporary | +——+——–+———+————+——+—————-+————-+—————–+————–+———–+—————-+———————+————-+————+——————–+———-+—————-+———+——————+———–+ | Pets | InnoDB | 10 | Dynamic | 8 | 2048 | 16384 | 0 | 32768 | 0 | NULL | 2021-04-01 15:42:43 | NULL | NULL | utf8mb4_general_ci | NULL | | | 0 | N | +——+——–+———+————+——+—————-+————-+—————–+————–+———–+—————-+———————+————-+————+——————–+———-+—————-+———+——————+———–+
客户mariadb-show
另一种方法是使用实用程序。mariadb-show
要使用此选项,请打开命令行提示符/终端窗口并运行以下命令(替换为您感兴趣的数据库):pethouse
mariadb-show pethouse;
结果:
+—————+ | Tables | +—————+ | Owners | | PetTypes | | Pets | | vownercount | | vpetcount | | vpetsowners | | vpetstypes | | vpettypecount | +—————+
这将返回视图和表。
输出仅显示您具有某些权限的数据库、表或列的名称。
如果未给出数据库,则显示所有匹配的数据库。如果未给出表,则显示数据库中所有匹配的表。如果未给出列,则显示表中所有匹配的列和列类型。
客户端也可以按以下方式运行:mysqlshow
mysqlshow pethouse;
该实用程序接受相当多的选项,例如(以便您可以传递用户名),(以便您可以传递密码)等。--user``--password
有关选项的完整列表,请参阅MariaDB 的文档。
在创建表之前检查表是否已存在
如果需要创建不存在的表,则可以使用 the语句的子句。如果表不存在,则将创建该表。如果它已存在,则不会创建它。IF NOT EXISTS``CREATE TABLE