【原創】SQL Server中查詢數據庫及表的信息語句


/*
--  本文件主要是匯總了 Microsoft SQL Server 中有關數據庫與表的相關信息查詢語句。

--  下面的查詢語句中一般給出兩種查詢方法,
--    A方法訪問系統表,適應於SQL 2000/2005/2008/2008 R2,但是在微軟的聯機幫助中特意說明這些系統表
--  在后續版本的 Microsoft SQL Server 將刪除該功能。請避免在新的開發工作中使用該功能。
--
--  B方法訪問系統視圖,為微軟推薦使用方法,對於今后新版本 SQL Server 兼容性比較好。
--  兩種方法存在細微差別,下面的網址給出了系統表與函數以及系統視圖與函數之間的映射。
--    http://technet.microsoft.com/zh-cn/library/ms187997.aspx

*/

--1、查詢數據庫中有哪些表名
select name, id FROM sysobjects o where o.type = 'U'                 -- A
select name, [object_id] FROM sys.objects o where o.type = 'U';      -- B
--其中where條件還可按下面改:
    A:type = 'K'   B:type = 'PK'       --主鍵
    type = 'P'        --     存儲過程
    type = 'S'       --    系統表
    type = 'V'       --    視圖 
    
--2、查詢表的字段名稱和數據類型
--舊方法
select 'TableName' as TableName
    ,c.name as ColumnName
    ,t.name as DataType
from syscolumns c
join systypes t
on c.xtype = t.xtype  and c.id=object_id( N'TableName');
--新方法
select 'TableName' as TableName
    , c.name as ColumnName
    , t.name as DataType
from sys.COLUMNS c
join sys.types t
on        c.system_type_id = t.system_type_id  
    and c.object_id=object_id( N'TableName');
--information_schema.columns    
select column_name
    ,data_type                            --系統提供的數據類型。
    ,IS_NULLABLE                        --列的為空性。如果列允許 NULL,則該列將返回 YES。否則,返回 NO。
    ,COLUMN_DEFAULT                        --列的默認值。沒有,返回 NULL。
    ,CHARACTER_MAXIMUM_LENGTH            --二進制數據、字符數據或文本和圖像數據的最大長度(字符)。對於 xml 和大值類型數據,為 -1.否則,返回 NULL。
    ,CHARACTER_OCTET_LENGTH                --二進制數據、字符數據或文本和圖像數據的最大長度(字節)。對於 xml 和大值類型數據,為 -1.否則,返回 NULL。
    ,NUMERIC_PRECISION                    --近似數字數據、精確數字數據、整數數據或貨幣數據的精度。否則,返回 NULL。
    ,NUMERIC_PRECISION_RADIX            --近似數字數據、精確數字數據、整數數據或貨幣數據的精度基數。否則,返回 NULL。
    ,NUMERIC_SCALE                        --近似數字數據、精確數字數據、整數數據或貨幣數據的小數位數。否則,返回 NULL。                     
from information_schema.columns 
where table_name = 'TableName';     

--3、查詢表中的主鍵
select b.name as tableName, a.name as PK_Name 
FROM sysobjects a
join sysobjects b
on  a.type = 'K' and b.type = 'U' 
    and a.parent_obj = b.id
    and b.name = 'TableName'
    
select b.name as tableName, a.name as PK_Name 
FROM sys.objects a
join sys.objects b
on  a.type = 'PK' and b.type = 'U' 
    and a.parent_object_id = b.object_id
    and b.name = 'TableName'
    
--4、查詢表中的索引
EXEC sp_helpindex N'tableName'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM