天天看點

将SQL SERVER中所有表的列資訊顯示出來

将SQL SERVER中所有表的列資訊顯示出來  

 正在作一個關于SQL SERVER資料庫導入Excel檔案的程式,要讀取資料庫中的列的資訊,從網上找了很多資料,終于總結出來比較理想的sql語句,執行後傳回的列分别是:表名、列名、列類型、列長度、列描述、是否主鍵,語句如下:

将SQL SERVER中所有表的列資訊顯示出來

SELECT SysObjects.Name as tb_name, SysColumns.Name as col_name, SysTypes.Name as col_type, SysColumns.Length as col_len, isnull(SysProperties.Value,SysColumns.Name) as col_memo,

将SQL SERVER中所有表的列資訊顯示出來

case when SysColumns.name in 

将SQL SERVER中所有表的列資訊顯示出來

(select 主鍵=a.name

将SQL SERVER中所有表的列資訊顯示出來

FROM syscolumns a

将SQL SERVER中所有表的列資訊顯示出來

 inner join sysobjects b on a.id=b.id   and b.xtype='U' and  b.name<>'dtproperties'

将SQL SERVER中所有表的列資訊顯示出來

 where   exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (

将SQL SERVER中所有表的列資訊顯示出來

  SELECT name FROM sysindexes WHERE indid in(

将SQL SERVER中所有表的列資訊顯示出來

   SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid

将SQL SERVER中所有表的列資訊顯示出來

  ))) 

将SQL SERVER中所有表的列資訊顯示出來

and  b.name=SysObjects.Name 

将SQL SERVER中所有表的列資訊顯示出來

)

将SQL SERVER中所有表的列資訊顯示出來

 then 1 else 0 end as is_key

将SQL SERVER中所有表的列資訊顯示出來
将SQL SERVER中所有表的列資訊顯示出來

 FROM SysObjects,SysTypes,SysColumns 

将SQL SERVER中所有表的列資訊顯示出來

LEFT JOIN SysProperties ON (Syscolumns.Id = Sysproperties.Id AND

将SQL SERVER中所有表的列資訊顯示出來

 Syscolumns.Colid = Sysproperties.Smallid)

将SQL SERVER中所有表的列資訊顯示出來
将SQL SERVER中所有表的列資訊顯示出來

 WHERE (Sysobjects.Xtype ='u' OR Sysobjects.Xtype ='v') 

将SQL SERVER中所有表的列資訊顯示出來

AND Sysobjects.Id = Syscolumns.Id AND SysTypes.XType = Syscolumns.XType 

将SQL SERVER中所有表的列資訊顯示出來

AND SysTypes.Name <> 'sysname' AND Sysobjects.Name Like '%' ORDER By SysObjects.Name, SysColumns.colid 

将SQL SERVER中所有表的列資訊顯示出來

如果隻想操作一個表的,那麼把最後的%換成表名就可以了。