查詢元資料

2022-05-10 16:57:08 字數 3147 閱讀 9594

sql server提供了用於獲取資料庫物件的元資料資訊的工具,比如資料庫中有什麼表、表中有什麼列,等等。這些工具包括目錄檢視(catalog view)、資訊架構檢視(information schema view)、系統儲存過程和函式。這一方面的內容在sql server聯機叢書的「查詢 sql server系統目錄(querying the sql server system catalog)「一節有詳細的文件。

目錄檢視

目錄檢視提供了關於資料庫中各物件的非常詳細的資訊,包括sql server特定的資訊。例如,如果想列出資料庫中的各個表,以及它們的架構名稱,只要按以下所示的方法去查詢sys.tables檢視:

1use

tsqlfundamentals200823

select

schema_name(schema_id)

astable_schema_name,name

astable_name

4from

sys.tables;

此處用schema_name函式把表示架構id的整數轉換成它的名稱。

要得到有關某個表的列資訊,可以查詢sys.columns表。例如,以下**返回sales.orders表中的列資訊,包括列名、資料型別(用type_name函式把系統型別id轉換成型別名稱)、最大長度、排序規則名稱,以及是否允許為null。

1 select

2name

ascolumn_name,

3type_name(system_type_id)

ascolumn_type,

4max_length,

5collation_name,

6is_nullable

7from

sys.columns

8where

object_id

=object_id(n'

sales.orders');

資訊架構檢視

資訊架構檢視是位於information_schema架構內的一組檢視,它們以一種標準化的方式來提供元資料資訊。也就是說,這些檢視是基於ansi sql標準而定義的,因此它們自然不會包含sql server特有的元資料。

例如,以下對information_schema.tables檢視的查詢可以列出當前資料庫中的使用者表,以及它們的架構名稱:

1select

table_schema,table_name

2from

information_schema.tables

3where

table_type =n

'base table';

以下對information_schema.columns檢視的查詢提供了有關sales.orders表中各個列的絕大多數的可用資訊:

1select

column_name,data_type,character_maximum_length,collation_name,is_nullable

2from

information_schema.columns

3where

table_schema =n

'sales

'and

table_name =n

'orders';

系統儲存過程

系統儲存過程和函式是在其內部查詢系統目錄,並返回更加「摘要化」的元資料資訊。你可以在sql server聯機叢書中找到有關元資料儲存過程和函式物件的完整列表,以及對它們很詳細的描述,所以此處只列舉幾個例子作為演示。sp_tables儲存過程返回可以在當前資料庫中查詢的物件(比如表和檢視)列表:

1exec

sys.sp_tables;

注意:sys架構是在sql server 2005中引入的。在之前的版本中,系統儲存過程位於dbo架構內。

sp_help儲存過程接受乙個物件名稱作為輸入,返回與之相關的多個結果集,包含了有關物件的一般資訊,以及關於列、索引、約束等物件的資訊。作為例子,以下**返回關於orders表的詳細資訊:

1exec

sys.sp_help

@objname=n

'sales.orders';

sp_helpconstraint儲存過程返回物件中關於約束的資訊。例如,以下**返回orders表中關於約束的資訊:

1exec

sys.sp_helpconstraint

@objname=n

'sales.orders';

還有一組函式可以返回關於資料庫實體(如sql server例項、資料庫、物件、列,等等)的個屬性的資訊。serverproperty函式返回當前資料庫例項的指定屬性資訊。例如,以下**返回當前資料庫例項的版本級別(如rtm、sp1、sp2等):

1select

serverproperty(

'productlevel');

databasepropertyex函式返回指定資料庫的特定屬性的資訊。例如,以下**返回tsqlfundamentals2008資料庫的排序規則的當前設定:

1select

databasepropertyex(n

'tsqlfundamentals2008',

'collation');

objectproperty函式返回指定物件的特定屬性的資訊。例如,以下**的輸出可以表明orders表是否具有主鍵:

1select 

objectproperty

(object_id(n'

sales.orders'),

'tablehasprimarykey');

注意在objectproperty中嵌入的object_id函式。objectproperty函式可以接受的輸入是乙個物件的id,而不是名稱,所以要先用object_id函式取回orders表的id。

columnproperty函式返回指定列上的特定屬性的資訊。例如,以下**的輸出可以表明orders表中的shipcountry列是否可以為null:

1select 

columnproperty

(object_id(n'

sales.orders

'),n

'shipcountry',

'allowsnull');

元資料 and 元資料標準

一般銀行內的系統建設環境分為三個 開發環境 測試環境與生產環境,每乙個系統建設的週期都需要經過前兩個環境才能正式進入生產環境。然而在系統的設計 開發 測試 上線過程中,無論是需求變更還是bug修改都避免不了資料模型也就是元資料的改動。大到庫表結構重新設計,小到乙個字段型別的變更,都可能對程式造成影響...

mysql 元資料 MySQL 元資料

mysql 元資料 你可能想知道mysql以下三種資訊 查詢結果資訊 select,update 或 delete語句影響的記錄數。資料庫和資料表的資訊 包含了資料庫及資料表的結構資訊。mysql伺服器資訊 包含了資料庫伺服器的當前狀態,版本號等。在mysql的命令提示符中,我們可以很容易的獲取以上...

資料治理 元資料 元資料的作用

元資料的主要作用 相信看到這個部落格,您已經對什麼是元資料有了一定的了解,如果還不夠了解可以網上搜一下,也可以參見我的另一篇部落格 資料治理 元資料 定義 url 元資料的作用主要體現在以下幾方面 1 便捷的業務導航 可以讓相關人員更快的理解組織內的業務範圍,業務流程,應用系統,資料類別,歸屬關係等...