SQL SERVER 獲取表結構信息《轉載》

獲取表信息
                             
SELECT
     表名       
= case when a.colorder=1 then d.name else '' end,
     表說明     
= case when a.colorder=1 then isnull(f.value,'') else '' end,
     字段名     
= a.name,
     主鍵       
= case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
                     
SELECT name FROM sysindexes WHERE indid in(
                        
SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '' else '' end,
     類型       
= b.name,
     佔用字節數
= a.length,
     長度       
= COLUMNPROPERTY(a.id,a.name,'PRECISION'),
     默認值     
= isnull(e.text,''),
     字段說明   
= isnull(g.[value],'')
FROM
     syscolumns a
left join
     systypes b
on
     a.xusertype
=b.xusertype
inner join
     sysobjects d
on
     a.id
=d.id  and d.xtype='U' and   d.name<>'dtproperties'
left join
     syscomments e
on
     a.cdefault
=e.id
left join
     sysproperties g
on
     a.id
=g.id and a.colid=g.smallid  
left join
     sysproperties f
on
     d.id
=f.id and f.smallid=0
where
     d.name
='LW_Equipment_Stock_List'    --如果只查詢指定表,加上此條件


     獲取表內所有字段
    
Select   Name   From SysColumns Where ID=OBJECT_ID('TableName') Order By ColID

下邊是關於 Sysobjects的介紹

經常我們要查詢表的索引,約束,相關性,觸發器的屬性,那麼要知道sysobjects這個表的字段的意思,那麼不管要查什麼都沒有問題!

Sysobjects:SQL-SERVER的每個數據庫內都有此係統表,它存放該數據庫內創建的所有對象,如約束、默認值、日誌、規則、存儲過程等,每個對象在表中佔一行。以下是此係統表的字段名稱和相關說明。
Name,id,xtype,uid,status:分別是對象名,對象ID,對象類型,所有者對象的用戶ID,對象狀態。
對象類型(xtype)。可以是下列對象類型中的一種:
C = CHECK 約束
D = 默認值或 DEFAULT 約束
F = FOREIGN KEY 約束
L = 日誌
FN = 標量函數
IF = 內嵌表函數
P = 存儲過程
PK = PRIMARY KEY 約束(類型是 K)
RF = 複製篩選存儲過程
S = 系統表
TF = 表函數
TR = 觸發器
U = 用戶表
UQ = UNIQUE 約束(類型是 K)
V = 視圖
X = 擴展存儲過程
當xtype='U' and status>0代表是用戶建立的表,對象名就是表名,對象ID就是表的ID值。
用: select * from misa.dbo.sysobjects where xtype='U' and status>0 就可以列出庫misa中所有的用戶建立的表名。

SELECT * FROM SYSOBJECTS WHERE PARENT_OBJ = OBJECT_ID( 'CS') AND XTYPE='TR'
列出表cs的所有屬性,上面是trigger!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章