如何快速查詢資料庫檢視表(View)的欄位資訊

今天遇到長官要求提供所需的資料訊息,因為要求的資料欄位是由多個資料表組合而成時,要一個一個去查看原始資料表相當費時。本文將介紹如何使用 SQL 指令快速查詢檢視表的欄位資訊。

為什麼需要這個查詢?

  • 快速了解檢視表的結構
  • 檢查欄位的資料類型和限制
  • 節省查看原始資料表的時間
  • 方便進行資料庫文件製作

各資料庫系統的查詢方式

Microsoft SQL Server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT 
c.name AS ColumnName,
t.name AS DataType,
c.max_length AS MaxLength,
c.precision AS NumericPrecision,
c.scale AS NumericScale,
c.is_nullable AS IsNullable,
ISNULL(dc.definition, '') AS DefaultValue
FROM sys.views v
INNER JOIN sys.columns c ON v.object_id = c.object_id
INNER JOIN sys.types t ON c.user_type_id = t.user_type_id
LEFT JOIN sys.default_constraints dc ON c.default_object_id = dc.object_id
WHERE v.name = '檢視表名稱'
ORDER BY c.column_id;

MySQL/MariaDB

1
2
3
4
5
6
7
8
9
10
11
SELECT 
COLUMN_NAME,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH,
NUMERIC_PRECISION,
NUMERIC_SCALE,
IS_NULLABLE,
COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = '資料庫名稱'
AND TABLE_NAME = '檢視表名稱';

Oracle

1
2
3
4
5
6
7
8
9
10
11
SELECT 
COLUMN_NAME,
DATA_TYPE,
DATA_LENGTH,
DATA_PRECISION,
DATA_SCALE,
NULLABLE,
DATA_DEFAULT
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME = '檢視表名稱'
ORDER BY COLUMN_ID;

PostgreSQL

1
2
3
4
5
6
7
8
9
10
11
SELECT 
a.attname AS column_name,
pg_catalog.format_type(a.atttypid, a.atttypmod) AS data_type,
a.attnotnull AS is_not_null,
pg_catalog.pg_get_expr(d.adbin, d.adrelid) AS default_value
FROM pg_catalog.pg_attribute a
LEFT JOIN pg_catalog.pg_attrdef d ON (a.attrelid, a.attnum) = (d.adrelid, d.adnum)
WHERE a.attrelid = '檢視表名稱'::regclass
AND a.attnum > 0
AND NOT a.attisdropped
ORDER BY a.attnum;

查詢結果說明

執行上述查詢後,你會得到以下資訊:

  1. 欄位名稱(Column Name):該欄位的名稱
  2. 資料型態(Data Type):如 varchar、int、decimal 等
  3. 最大長度(Max Length):文字類型的最大長度
  4. 數值精確度(Numeric Precision):數值類型的精確度
  5. 小數位數(Numeric Scale):數值類型的小數位數
  6. 是否可為空值(Is Nullable):該欄位是否允許 NULL
  7. 預設值(Default Value):欄位的預設值

使用技巧

  1. 請根據你使用的資料庫系統選擇對應的查詢語法
  2. 將查詢中的「檢視表名稱」替換為你要查詢的檢視表名稱
  3. 若使用 MySQL/MariaDB,記得也要替換「資料庫名稱」
  4. 查詢結果可以匯出成 Excel 方便記錄

結語

這個查詢方式可以讓我們快速了解檢視表的結構,特別適合處理複雜的檢視表或需要製作資料庫文件時使用。善用這些系統表格查詢,可以大幅提升資料庫管理的效率。