MySQL - SHOW OPEN TABLES 语句



SHOW OPEN TABLES 语句

CREATE TABLE 语句用于在 MYSQL 数据库中创建表。在这里,您需要指定表名以及每一列的定义(名称和数据类型)。

SHOW OPEN TABLES 语句显示当前在表缓存中打开的非临时表列表。除了表名之外,此语句还提供表所在的数据库名称和二进制值(0 或 1),指定表是否正在使用以及是否已锁定。

语法

以下是 SHOW OPEN TABLES 语句的语法:

SHOW OPEN TABLES
   [{FROM | IN} db_name]
   [LIKE 'pattern' | WHERE expr]

示例

以下语句显示有关当前在表缓存中打开的表的信息:

SHOW OPEN TABLES\G;

输出

上述查询产生以下输出:

************* 1. row *************
   Database: mysql
      Table: check_constraints
     In_use: 0
Name_locked: 0
************* 2. row *************
   Database: mysql
      Table: column_type_elements
     In_use: 0
Name_locked: 0
************* 3. row *************
   Database: mysql
      Table: slave_master_info
     In_use: 0
Name_locked: 0
************* 4. row *************
   Database: mysql
      Table: foreign_keys
     In_use: 0
Name_locked: 0
************* 5. row *************
   Database: mysql
      Table: columns
     In_use: 0
Name_locked: 0
************* 6. row *************
   Database: mysql
      Table: foreign_key_column_usage
     In_use: 0
Name_locked: 0
************* 7. row *************
   Database: mysql
      Table: server_cost
     In_use: 0
Name_locked: 0
************* 8. row *************
   Database: mysql
      Table: index_column_usage
     In_use: 0
Name_locked: 0
************* 9. row *************
   Database: mysql
      Table: view_table_usage
     In_use: 0
Name_locked: 0
************* 10. row *************
   Database: mysql
      Table: index_partitions
     In_use: 0
Name_locked: 0
************* 11. row *************
   Database: mysql
      Table: indexes
     In_use: 0
Name_locked: 0
************* 12. row *************
   Database: mysql
      Table: schemata
     In_use: 0
Name_locked: 0
************* 13. row *************
   Database: mysql
      Table: collations
     In_use: 0
Name_locked: 0
************* 14. row *************
   Database: mysql
      Table: table_partition_values
     In_use: 0
Name_locked: 0
************* 15. row *************
   Database: mysql
      Table: table_partitions
     In_use: 0
Name_locked: 0
************* 16. row *************
   Database: mysql
      Table: tables
     In_use: 0
Name_locked: 0
************* 17. row *************
   Database: mysql
      Table: role_edges
     In_use: 0
Name_locked: 0
************* 18. row *************
   Database: mysql
      Table: triggers
     In_use: 0
Name_locked: 0
************* 19. row *************
   Database: test
      Table: contact
     In_use: 0
Name_locked: 0
************* 20. row *************
   Database: mysql
      Table: column_statistics
     In_use: 0
Name_locked: 0
........................
........................
........................

FROM 或 IN 子句

您可以使用 FROM 子句从特定数据库中检索有关当前在表缓存中打开的非临时表的信息。

SHOW OPEN TABLES FROM performance_schema;

输出

以下是上述查询的输出:

数据库 正在使用 名称锁定
performance_schema events_waits_history_long 0 0
performance_schema session_status 0 0
performance_schema events_stages_history_long 0 0
performance_schema events_statements_current 0 0
performance_schema session_variables 0 0
performance_schema threads 0 0

您也可以使用 IN 子句代替 FROM,如下所示:

SHOW OPEN TABLES IN performance_schema;

输出

执行上述查询后,将产生以下输出:

数据库 正在使用 名称锁定
performance_schema events_waits_history_long 0 0
performance_schema session_status 0 0
performance_schema events_stages_history_long 0 0
performance_schema events_statements_current 0 0
performance_schema session_variables 0 0
performance_schema threads 0 0

LIKE 子句

使用 LIKE 子句,您可以指定模式以检索有关当前在表缓存中打开的特定表的信息。以下查询检索名称以单词“information”开头的表的描述。

SHOW OPEN TABLES LIKE 'time%';

输出

查询执行后,将产生如下所示的输出:

数据库 正在使用 名称锁定
mysql time_zone_transition 0 0
mysql time_zone_leap_second 0 0
mysql time_zone_name 0 0
mysql time_zone 0 0
mysql time_zone_transition_type 0 0

WHERE 子句

您可以使用 SHOW OPEN TABLES 语句的 WHERE 子句来检索与指定条件匹配的变量的描述。

示例

假设我们创建了一个包含销售详细信息的表,如下所示:

CREATE TABLE SalesDetails (
   ID INT,
   ProductName VARCHAR(255),
   CustomerName VARCHAR(255),
   DispatchDate date,
   DeliveryTime time,
   Price INT,
   Location VARCHAR(255),
);

现在,创建一个包含客户联系信息的另一个表,创建一个表,如下所示:

CREATE TABLE CustContactDetails (
   ID INT,
   Name VARCHAR(255),
   Age INT,
   Phone BIGINT,
   Address VARCHAR(255),
   Email VARCHAR(50)
);

以下查询显示当前正在使用的打开的表:

SHOW OPEN TABLES WHERE In_use=1;

输出

上述查询生成以下输出:

数据库 正在使用 名称锁定
demo custcontactdetails 1 0
demo salesdetails 1 0
广告
© . All rights reserved.