您的位置:首页 > 数据库

Sql Server 获取SQL 所有数据库名、所有表名、所有字段名

2011-06-01 11:35 731 查看
Sql Server 获取SQL 所有数据库名、所有表名、所有字段名

1.获取所有数据库名:

(1)、Select Name FROM Master..SysDatabases orDER BY Name

2.获取所有表名:

(1)、Select Name FROM SysObjects Where XType='U' orDER BY Name XType='U':表示所有用户表; XType='S':表示所有系统表;

(2)、SELECT name FROM sysobjects WHERE type = 'U' AND sysstat = '83' 注意:一般情况只需要type = 'U',但有时候会有系统表混在其中 (不知道什么原因),加上后面一句后就能删除这些系统表了

3.获取所有字段名:

(1)、Select Name FROM SysColumns Where id=Object_Id('TableName')

(2)、SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROMsyscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND syscolumns.id = object_id('tableName')

(3)、SELECT sys.systypes.name, sys.syscolumns.name AS typename FROM sys.syscolumns INNER JOIN sys.systypes ON sys.syscolumns.xusertype = sys.systypes.xusertype WHERE (sys.syscolumns.id = OBJECT_ID('tablename')) 注意点: (a)这里为了重点突出某些重要内容,选取了其中几项信息输出。 (b)syscolumns 表中只含有数据类型编号,要获取完整的名字需要从 systypes 表中找,一般用户使用的数据类型用xusertype 对应比较好 ,不会出现一对多的情况。 (c)syscolumns.length 得到的是物理内存的长度,所以nvarchar 和 varchar 等类型在数据库中的显示是这个的一半。

4、得到表中主键所包含的列名: SELECT syscolumns.name FROM syscolumns,sysobjects,sysindexes,sysindexkeys WHERE syscolumns.id = object_id('tablename') AND sysobjects.xtype = 'PK' AND sysobjects.parent_obj = syscolumns.id AND sysindexes.id = syscolumns.id AND sysobjects.name = sysindexes.name AND sysindexkeys.id = syscolumns.id AND sysindexkeys.indid = sysindexes.indid AND syscolumns.colid = sysindexkeys.colid 注意:这是在4 张系统表中寻找的,关系比较复杂,大致可以表示为: syscolumns 中存有表中的列信息和表id,sysobjects 表中存有主键名字(即 PK_Table 类似)和表id,sysindexes 中存有主键名字和表id 和index 编号,sysindexkeys 中存有表id 和index 编号和列编号,一项一项对应起来后 就能找到列名了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐