如何在 SQL 中獲取表名


在 SQL 資料庫中,通常需要檢索資料庫中的表名列表以瞭解其結構或執行某些操作。每個基於 SQL 的資料庫系統都提供特定方法來查詢其元資料以提取表名。

在本文中,我們將探討如何在流行的關係資料庫系統(包括 MySQL、SQL Server、PostgreSQL 和 Oracle)中獲取表名。我們將介紹通常用於此任務的內建 SQL 查詢和函式。

需要檢索表名?

  • 資料庫探索: 使用新的或不熟悉的資料庫時,我們可能希望探索所有表以瞭解其結構。
  • 自動化: 在自動化指令碼中,動態檢索表名可以幫助執行備份、遷移或報告等任務。
  • 元資料資訊: 在生成文件、執行模式比較或審查資料庫設計時非常有用。

在不同的資料庫中檢索表名

以下是從各種關係資料庫檢索表名的 SQL 查詢。

MySQL

在 MySQL 中,有關表的資訊儲存在一個名為 information_schema 的特殊模式中。我們可以查詢此模式以獲取表名列表。以下是檢索 MySQL 中表名的查詢語法:

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema = 'database_name';

其中:

  • information_schema.tables:包含有關表的元資料。
  • table_schema:指的是資料庫名稱。
  • table_name:儲存表名的列。

示例

以下查詢將返回 employees 資料庫中的表列表:

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema = 'employees';

SQL Server

在 SQL Server 中,我們可以使用 INFORMATION_SCHEMA.TABLES 檢視檢索表名,類似於 MySQL。

SELECT table_name 
FROM information_schema.tables 
WHERE table_type = 'BASE TABLE' AND table_catalog = 'database_name';

其中:

  • table_type = 'BASE TABLE':確保只檢索實際表(而不是檢視)。
  • table_catalog:指的是資料庫名稱。

示例

以下是檢索 SQL Server 中表名的查詢:

SELECT table_name 
FROM information_schema.tables 
WHERE table_type = 'BASE TABLE' AND table_catalog = 'SalesDB';

使用系統表的替代查詢

我們還可以使用 SQL Server 中的系統檢視,例如 sys.tables。此查詢將檢索當前資料庫中所有表的名。

SELECT name FROM sys.tables;

PostgreSQL

在 PostgreSQL 中,我們可以使用 pg_tables 系統目錄來獲取表名。

SELECT tablename 
FROM pg_tables 
WHERE schemaname = 'public';

其中:

  • pg_tables:儲存有關表的元資料的系統目錄。
  • schemaname = 'public':篩選屬於預設模式 public 的表。如果我們使用的是不同的模式,可以更改此設定。

示例

以下查詢將返回 public 模式中的表名。

SELECT tablename 
FROM pg_tables 
WHERE schemaname = 'public';

使用 information_schema 的另一種方法

此查詢實現了相同的結果,但使用了 information_schema 檢視。

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema = 'public' AND table_type = 'BASE TABLE';

Oracle

在 Oracle 中,表元資料儲存在 ALL_TABLES、USER_TABLES 和 DBA_TABLES 檢視中。我們查詢的檢視取決於所需資料的範圍。以下是檢索 Oracle 中表名的查詢。這將檢索當前使用者擁有的表。

SELECT table_name 
FROM user_tables;

要檢索當前使用者可見的表,包括來自其他模式的表,請使用以下查詢:

SELECT table_name 
FROM all_tables;

此查詢將返回 Oracle 中當前使用者擁有的表名。

SELECT table_name 
FROM user_tables;

SQLite

在 SQLite 中,我們可以使用以下 SQL 命令列出當前資料庫中的表名。

SELECT name 
FROM sqlite_master 
WHERE type = 'table';

其中:

  • sqlite_master:儲存資料庫的模式。
  • type = 'table':過濾掉非表物件,如索引和檢視。

以下查詢將列出當前 SQLite 資料庫中的所有表。

SELECT name 
FROM sqlite_master 
WHERE type = 'table';

結論

在 SQL 中檢索表名是一個簡單而強大的操作,可以幫助探索資料庫結構並執行各種自動化或手動任務。不同的資料庫系統提供了類似的方法,通常利用 INFORMATION_SCHEMA 或系統目錄,如 pg_tables、user_tables 和 sqlite_master。

更新於:2024年11月1日

27 次檢視

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告