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
廣告