執行下面sql語句,然後導出結果到Excel,可以當做是數據庫字典
SELECT sysobjects.NAME AS
表名稱,
--------------as 的作用:爲字段起一個別名
--sysproperties.[value] AS 表說明 , ----------[ ]方括號的作用:爲了避免和關鍵字衝突
syscolumns.NAME AS
字段名稱,
--properties.[value] AS 字段說明 ,
systypes.NAME AS
字段類型,
syscolumns.length AS
字段長度,
Isnull(Columnproperty(syscolumns.id, syscolumns.NAME, 'Scale'), 0) AS
小數位數,
--isnull---(待測數據,返回值).當待測數據爲空時返回返回值,當大策數據爲非null時,反回待測數據
CASE
WHEN syscolumns.isnullable = 0 THEN ''
ELSE ' √ '
END AS
是否爲空,
CASE
WHEN syscomments.text IS NULL THEN ''
ELSE syscomments.text
END AS
缺省值,
CASE
WHEN Columnproperty(syscolumns.id, syscolumns.NAME, 'IsIdentity') = 1
THEN
' √ '
ELSE ''
END AS
遞增字段,
CASE
WHEN sysindexes.NAME IS NULL THEN ''
ELSE sysindexes.NAME
END AS
索引名稱,
CASE
WHEN sysindexkeys.keyno IS NULL THEN ''
ELSE CONVERT(VARCHAR(10), sysindexkeys.keyno)
END AS
索引位置,
CASE
WHEN sysindexes.indid = 1 THEN ' 聚集索引 '
WHEN sysindexes.indid > 1
AND sysindexes.indid <> 255 THEN ' 非聚集索引 '
WHEN sysindexes.indid IS NULL THEN ''
ELSE ' 其他 '
END AS
索引類型,
CASE
WHEN EXISTS (SELECT 1
FROM sysobjects
WHERE xtype = 'PK'
AND NAME IN (SELECT NAME
FROM sysindexes
WHERE indid IN
(SELECT indid
FROM sysindexkeys
WHERE id = syscolumns.id
AND colid =
syscolumns.colid))) THEN
' √ '
ELSE ''
END AS
主鍵,
CASE
WHEN sysforeignkeys.constid IS NULL THEN ''
ELSE ' √ '
END AS
外健
FROM syscolumns -- 數據表字段
INNER JOIN sysobjects -- 數據對象
ON sysobjects.id = syscolumns.id
INNER JOIN systypes -- 數據類型
ON syscolumns.xtype = systypes.xtype
LEFT OUTER JOIN syscomments -- 註釋信息
ON syscolumns.cdefault = syscomments.id
LEFT OUTER JOIN sysindexkeys -- 索引中的鍵或列的信息
ON sysindexkeys.id = syscolumns.id
AND sysindexkeys.colid = syscolumns.colid
LEFT OUTER JOIN sysindexes -- 數據庫 索引表
ON sysindexes.id = sysindexkeys.id
AND sysindexes.indid = sysindexkeys.indid
LEFT OUTER JOIN sysforeignkeys
ON sysforeignkeys.fkeyid = syscolumns.id
AND sysforeignkeys.fkey = syscolumns.colid
WHERE ( sysobjects.xtype = 'U' )
ORDER BY sysobjects.id,
syscolumns.colid