获取SQL所有数据库名、所有表名、所有字段名
1.获取所有数据库名:
Select Name FROM Master..SysDatabases ORDER BY Name
2.获取所有表名:
Select Name FROM DatabaseName..SysObjects Where XType='U' ORDER BY Name
XType='U':表示所有用户表;
XType='S':表示所有系统表;
3.获取所有字段名:
Select Name FROM SysColumns Where id=Object_Id('TableName')
下面是获取表名,大小,类型等
Select
(case when a.colorder=1 then d.name else '' end)表名, a.colorder 字段序号, a.name 字段名,
(case when COLUMNPROPERTY(a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识,
(case when (Select count(*) FROM sysobjects Where (name in
(Select name FROM sysindexes Where (id = a.id) AND (indid in
(Select indid FROM sysindexkeys Where (id = a.id) AND (colid in
(Select colid FROM syscolumns Where (id = a.id) AND (name = a.name))))))) AND
(xtype = 'PK'))>0 then '√' else '' end) 主键, b.name 类型, a.length 占用字节数,
COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度,
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,
(case when a.isnullable=1 then '√'else '' end) 允许空,
isnull(e.text,'') 默认值,
isnull(g.[value],'') AS 字段说明
FROM syscolumns a left join systypes b on a.xtype=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
order by a.id,a.colorder
(case when a.colorder=1 then d.name else '' end)表名, a.colorder 字段序号, a.name 字段名,
(case when COLUMNPROPERTY(a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识,
(case when (Select count(*) FROM sysobjects Where (name in
(Select name FROM sysindexes Where (id = a.id) AND (indid in
(Select indid FROM sysindexkeys Where (id = a.id) AND (colid in
(Select colid FROM syscolumns Where (id = a.id) AND (name = a.name))))))) AND
(xtype = 'PK'))>0 then '√' else '' end) 主键, b.name 类型, a.length 占用字节数,
COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度,
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,
(case when a.isnullable=1 then '√'else '' end) 允许空,
isnull(e.text,'') 默认值,
isnull(g.[value],'') AS 字段说明
FROM syscolumns a left join systypes b on a.xtype=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
order by a.id,a.colorder
SQL 2005:
sysproperties SQL2005中應該用:sys.extended_properties
如:
Select
表名 = CASE WHEN A.COLORDER=1 THEN D.NAME ELSE ' ' END,
表說明 = CASE WHEN A.COLORDER=1 THEN ISNULL(F.VALUE, ' ') ELSE ' ' END,
欄位序號 = A.COLORDER,
欄位名 = A.NAME,
標識 = CASE WHEN COLUMNPROPERTY( A.ID,A.NAME, 'ISIDENTITY ')=1 THEN '√ 'ELSE ' ' END,
主鍵 = 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(COLUMNPROPERTY(A.ID,A.NAME, 'SCALE '),0),
允許空 = CASE WHEN A.ISNULLABLE=1 THEN '√ 'ELSE ' ' END,
預設值 = 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
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
ORDER BY
如:
Select
表名 = CASE WHEN A.COLORDER=1 THEN D.NAME ELSE ' ' END,
表說明 = CASE WHEN A.COLORDER=1 THEN ISNULL(F.VALUE, ' ') ELSE ' ' END,
欄位序號 = A.COLORDER,
欄位名 = A.NAME,
標識 = CASE WHEN COLUMNPROPERTY( A.ID,A.NAME, 'ISIDENTITY ')=1 THEN '√ 'ELSE ' ' END,
主鍵 = 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(COLUMNPROPERTY(A.ID,A.NAME, 'SCALE '),0),
允許空 = CASE WHEN A.ISNULLABLE=1 THEN '√ 'ELSE ' ' END,
預設值 = 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
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
ORDER BY
版权声明:
作者:Kiyo
链接:https://www.wkiyo.cn/html/2008-06/i571.html
来源:Kiyo's space
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
共有 0 条评论