天天看點

SQL Server擷取中繼資料所有方法和示例什麼是中繼資料?怎麼擷取中繼資料?

SQL Server中繼資料

  • 什麼是中繼資料?
  • 怎麼擷取中繼資料?
    • 使用系統存儲過程
    • 使用系統函數
    • 使用系統表
    • 使用資訊架構視圖

什麼是中繼資料?

中繼資料 (metadata) 最常見的定義為"有關資料的結構資料",或者再簡單一點就是"關于資料的資訊",日常生活中的圖例、圖書館目錄卡和名片等都可以看作是中繼資料。在關系型資料庫管理系統 (DBMS) 中,中繼資料描述了資料的結構和意義。比如在管理、維護 SQL Server 或者是開發資料庫應用程式的時候,我們經常要擷取一些涉及到資料庫架構的資訊:某個資料庫中的表和視圖的個數以及名稱 ;某個表或者視圖中列的個數以及每一列的名稱、資料類型、長度、精度、描述等。

怎麼擷取中繼資料?

示例資料庫AdventureWorks2008:github下載下傳位址

使用系統存儲過程

中繼資料常用存儲過程

系統存儲過程 描述
sp_columns 傳回指定表或視圖的列的詳細資訊。
sp_databases 傳回目前伺服器上的所有資料庫的基本資訊。
sp_fkeys 若參數為帶有主鍵的表,則傳回包含指向該表的外鍵的所有表;若參數為帶有外鍵的表名,則傳回所有同過主鍵/外鍵關系與該外鍵相關聯的所有表。
sp_pkeys 傳回指定表的主鍵資訊。
sp_server_info 傳回目前伺服器的各種特性及其對應取值。
sp_sproc_columns 傳回指定存儲過程的的輸入、輸出參數的資訊。
sp_statistics 傳回指定的表或索引視圖上的所有索引以及統計的資訊。
sp_stored_procedures 傳回目前資料庫的存儲過程清單,包含系統存儲過程。
sp_tables 傳回目前資料庫的所有表和視圖,包含系統表。

示例

USE AdventureWorks2008
GO
execute sp_columns 'Person'           

複制

SQL Server擷取中繼資料所有方法和示例什麼是中繼資料?怎麼擷取中繼資料?
execute sp_tables           

複制

SQL Server擷取中繼資料所有方法和示例什麼是中繼資料?怎麼擷取中繼資料?

使用系統函數

中繼資料函數詳細文檔

系統函數 描述
COLUMNPROPERTY 傳回有關列或過程參數的資訊,如是否允許空值,是否為計算列等。
COL_LENGTH 傳回指定資料庫的指定屬性值,如是否處于隻讀模式等。
DATABASEPROPERTYEX 傳回指定資料庫的指定選項或屬性的目前設定,如資料庫的狀态、恢複模型等。
OBJECT_ID 傳回指定資料庫對象名的辨別号
OBJECT_NAME 傳回指定資料庫對象辨別号的對象名。
OBJECTPROPERTY 傳回指定資料庫對象辨別号的有關資訊,如是否為表,是否為限制等。
fn_listextendedproperty 傳回資料庫對象的擴充屬性值,如對象描述、格式規則、輸入掩碼等。

示例

SELECT COLUMNPROPERTY( OBJECT_ID('Person.Contact'),'LastName','PRECISION')AS 'Column Length';           

複制

SQL Server擷取中繼資料所有方法和示例什麼是中繼資料?怎麼擷取中繼資料?
USE AdventureWorks2008
GO
IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 1
   PRINT 'UnitMeasure is a table.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 0
   PRINT 'UnitMeasure is not a table.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') IS NULL
   PRINT 'ERROR: UnitMeasure is not a valid object.';
GO           

複制

SQL Server擷取中繼資料所有方法和示例什麼是中繼資料?怎麼擷取中繼資料?

使用系統表

中繼資料常用系統表

系統表 描述
syscolumns 存儲每個表和視圖中的每一列的資訊以及存儲過程中的每個參數的資訊。
syscomments 存儲包含每個視圖、規則、預設值、觸發器、CHECK 限制、DEFAULT 限制和存儲過程的原始 SQL 文本語句。
sysconstraints 存儲目前資料庫中每一個限制的基本資訊。
sysdatabases 存儲目前伺服器上每一個資料庫的基本資訊。
sysindexes 存儲目前資料庫中的每個索引的資訊。
sysobjects 存儲資料庫内的每個對象(限制、預設值、日志、規則、存儲過程、使用者表等)的基本資訊。
sysreferences 存儲所有包括 FOREIGN KEY 限制的列。
systypes 存儲系統提供的每種資料類型和使用者定義資料類型的詳細資訊。

示例

select * from sysobjects where OBJECT_NAME(ID)='Department';           

複制

SQL Server擷取中繼資料所有方法和示例什麼是中繼資料?怎麼擷取中繼資料?
select * from  sysdatabases;           

複制

SQL Server擷取中繼資料所有方法和示例什麼是中繼資料?怎麼擷取中繼資料?

使用資訊架構視圖

資訊架構視圖基于 SQL-92 标準中針對架構視圖的定義,這些視圖獨立于系統表,提供了關于 SQL Server 中繼資料的内部視圖。資訊架構視圖的最大優點是,即使我們對系統表進行了重要的修改,應用程式也可以正常地使用這些視圖進行通路。是以對于應用程式來說,隻要是符合 SQL-92 标準的資料庫系統,使用資訊架構視圖總是可以正常工作的。

常用視圖

視圖 描述
INFORMATION_SCHEMA .CHECK_CONSTRAINTS 傳回有關列或過程參數的資訊,如是否允許空值,是否為計算列等。
INFORMATION_SCHEMA .COLUMNS 傳回目前資料庫中目前使用者可以通路的所有列及其基本資訊。
INFORMATION_SCHEMA .CONSTRAINT_COLUMN_USAGE 傳回目前資料庫中定義了限制的所有列及其限制名。
INFORMATION_SCHEMA .CONSTRAINT_TABLE_USAGE 傳回目前資料庫中定義了限制的所有表及其限制名。
INFORMATION_SCHEMA .KEY_COLUMN_USAGE 傳回目前資料庫中作為主鍵/外鍵限制的所有列。
INFORMATION_SCHEMA .SCHEMATA 傳回目前使用者具有權限的所有資料庫及其基本資訊。
INFORMATION_SCHEMA .TABLES 傳回目前使用者具有權限的目前資料庫中的所有表或者視圖及其基本資訊。
INFORMATION_SCHEMA .VIEWS 傳回目前資料庫中的目前使用者可

示例

select * from INFORMATION_SCHEMA .CHECK_CONSTRAINTS;           

複制

SQL Server擷取中繼資料所有方法和示例什麼是中繼資料?怎麼擷取中繼資料?
select * from INFORMATION_SCHEMA .TABLES           

複制

SQL Server擷取中繼資料所有方法和示例什麼是中繼資料?怎麼擷取中繼資料?

原創不易,請勿轉載(本不富裕的通路量雪上加霜 )

部落客首頁:https://blog.csdn.net/qq_45034708