基于SQL2005 SQL2008 表結(jié)構(gòu)信息查詢升級(jí)版的詳解(含外鍵信息)
更新時(shí)間:2013年06月21日 10:50:47 作者:
本篇文章是對(duì)SQL2005 SQL2008 表結(jié)構(gòu)信息查詢升級(jí)版(含外鍵信息)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
SELECT
表名=CASE WHEN a.colorder = 1 THEN d.name ELSE '' END,
表說明=CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END ,
字段序號(hào)=a.colorder ,
字段名=a.name ,
標(biāo)識(shí)=CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END ,
主鍵=CASE WHEN EXISTS (
SELECT 1
FROM dbo.sysindexes si
INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid
INNER JOIN dbo.syscolumns sc ON sc.id = sik.id AND sc.colid = sik.colid
INNER JOIN dbo.sysobjects so ON so.name = so.name AND so.xtype = 'PK'
WHERE sc.id = a.id AND sc.colid = a.colid) THEN '√'
ELSE ''
END ,
外鍵=CASE WHEN tony.fkey is not null and tony.fkey=a.colid THEN '√' ELSE '' END ,
外鍵表=CASE WHEN tony.fkey is not null and tony.fkey=a.colid
THEN object_name(tony.fkeyid) ELSE ''
END ,
外鍵字段=CASE WHEN tony.fkey is not null and tony.fkey=a.colid
THEN (SELECT name FROM syscolumns
WHERE colid=tony.fkey AND id=tony.fkeyid)
ELSE ''
END,
類型=b.name ,
長(zhǎng)度=a.length ,
精度=COLUMNPROPERTY(a.id, a.name, 'PRECISION') ,
小數(shù)位數(shù)=ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) ,
允許空=CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END ,
默認(rèn)值= ISNULL(e.text, ''),
字段說明=ISNULL(g.[value], ''),
創(chuàng)建時(shí)間=d.crdate,
更改時(shí)間=CASE WHEN a.colorder = 1 THEN d.refdate ELSE NULL END
FROM dbo.syscolumns a
LEFT JOIN dbo.systypes b ON a.xtype = b.xusertype
INNER JOIN dbo.sysobjects d ON a.id = d.id AND d.xtype = 'U' AND d.status >= 0
LEFT JOIN dbo.syscomments e ON a.cdefault = e.id
LEFT JOIN sys.extended_properties g ON a.id = g.major_id AND a.colid = g.minor_id
LEFT JOIN sys.extended_properties f ON d.id = f.major_id AND f.minor_id = 0
LEFT JOIN sysobjects htl ON htl.parent_obj=d.id AND htl.xtype='F'
LEFT JOIN sysforeignkeys tony on htl.id=tony.constid
WHERE d.name='tb' --這里輸入包含表名稱的條件
ORDER BY d.id, a.colorder
表名=CASE WHEN a.colorder = 1 THEN d.name ELSE '' END,
表說明=CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END ,
字段序號(hào)=a.colorder ,
字段名=a.name ,
標(biāo)識(shí)=CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END ,
主鍵=CASE WHEN EXISTS (
SELECT 1
FROM dbo.sysindexes si
INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid
INNER JOIN dbo.syscolumns sc ON sc.id = sik.id AND sc.colid = sik.colid
INNER JOIN dbo.sysobjects so ON so.name = so.name AND so.xtype = 'PK'
WHERE sc.id = a.id AND sc.colid = a.colid) THEN '√'
ELSE ''
END ,
外鍵=CASE WHEN tony.fkey is not null and tony.fkey=a.colid THEN '√' ELSE '' END ,
外鍵表=CASE WHEN tony.fkey is not null and tony.fkey=a.colid
THEN object_name(tony.fkeyid) ELSE ''
END ,
外鍵字段=CASE WHEN tony.fkey is not null and tony.fkey=a.colid
THEN (SELECT name FROM syscolumns
WHERE colid=tony.fkey AND id=tony.fkeyid)
ELSE ''
END,
類型=b.name ,
長(zhǎng)度=a.length ,
精度=COLUMNPROPERTY(a.id, a.name, 'PRECISION') ,
小數(shù)位數(shù)=ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) ,
允許空=CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END ,
默認(rèn)值= ISNULL(e.text, ''),
字段說明=ISNULL(g.[value], ''),
創(chuàng)建時(shí)間=d.crdate,
更改時(shí)間=CASE WHEN a.colorder = 1 THEN d.refdate ELSE NULL END
FROM dbo.syscolumns a
LEFT JOIN dbo.systypes b ON a.xtype = b.xusertype
INNER JOIN dbo.sysobjects d ON a.id = d.id AND d.xtype = 'U' AND d.status >= 0
LEFT JOIN dbo.syscomments e ON a.cdefault = e.id
LEFT JOIN sys.extended_properties g ON a.id = g.major_id AND a.colid = g.minor_id
LEFT JOIN sys.extended_properties f ON d.id = f.major_id AND f.minor_id = 0
LEFT JOIN sysobjects htl ON htl.parent_obj=d.id AND htl.xtype='F'
LEFT JOIN sysforeignkeys tony on htl.id=tony.constid
WHERE d.name='tb' --這里輸入包含表名稱的條件
ORDER BY d.id, a.colorder
相關(guān)文章
SQL Server 數(shù)據(jù)庫清除日志的方法
SQLSERVER的數(shù)據(jù)庫日志占用很大的空間,下面提供三種方法用于清除無用的數(shù)據(jù)庫日志文件2012-07-07SQL Server 2005 開啟數(shù)據(jù)庫遠(yuǎn)程連接的方法
這篇文章主要介紹了SQL Server 2005默認(rèn)是不允許遠(yuǎn)程連接的,要想通過遠(yuǎn)程連接實(shí)現(xiàn)MSSQL,數(shù)據(jù)庫備份,需要做如下設(shè)置,需要的朋友可以參考下2015-01-01SqlServer 2005 T-SQL Query 學(xué)習(xí)筆記(1)
SqlServer 2005 T-SQL Query 學(xué)習(xí)筆記(1)2010-02-02SQLSERVER2005 中樹形數(shù)據(jù)的遞歸查詢
在園子里看到一個(gè)文章,涉及到樹形數(shù)據(jù)的遞歸查詢,覺得有更好的方法,就隨手寫一個(gè),以備用之2011-10-10SQL Server2005打開數(shù)據(jù)表中的XML內(nèi)容時(shí)報(bào)錯(cuò)的解決辦法
從SQL Server2005開始提供了一種新的數(shù)據(jù)類型XML type,它允許用戶將數(shù)據(jù)以XML文件的格式直接存儲(chǔ)到數(shù)據(jù)表中2012-02-02SQL Server中的XML數(shù)據(jù)進(jìn)行insert、update、delete
SQL Server 2005/2008增加了對(duì)XML數(shù)據(jù)的支持,同時(shí)也新增了幾種操作XML的方法,本文主要以SQL Server 2008為例介紹如何對(duì)XML數(shù)據(jù)進(jìn)行insert、update、delete。2009-07-07