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 编号和列编号,一项一项对应起来后 就能找到列名了.
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 编号和列编号,一项一项对应起来后 就能找到列名了.
相关文章推荐
- SQL Server 中获取数据库所有表及其字段名称、类型、长度的SQL
- SQL Server 2008中获取数据库所有表及其字段名称、类型、长度的SQL
- Sql Server获取SQL所有数据库名、所有表名、所有字段名
- SQL Server 2008中获取数据库所有表及其字段名称、类型、长度的SQL
- 获取SQL所有用户名、数据库名、所有表名、所有字段名
- asp.net获取SQL所有数据库名、所有表名、所有字段名
- 获取SQL所有数据库名、所有表名、所有字段名、表字段长度
- sql语句查询Oracle|sql server|access 数据库里的所有表名,字段名
- asp.net获取SQL所有数据库名、所有表名、所有字段名、列描述
- SQL语句获取所有数据库名、表名、字段名、表字段长度
- Sql :获取数据库所有表及其字段名称、类型、长度 (也可以指定单张或若干张表的详细信息。。。)
- SQL语句获取所有数据库名、表名、字段名、表字段长度
- 如何获取SQL Server所有的数据库名、表名、字段名及字段类型?
- SQL语句获取所有数据库名、表名、字段名、表字段长度
- SQL Server 2008 获取所有数据库名,表名,字段名
- SQL语句获取所有数据库名、表名、字段名、表字段长度
- SQL语句获取所有数据库名、表名、字段名、表字段长度
- 获取SQL Server 2005所有数据库名、所有表名、所有字段名
- 获取SQL所有用户名、数据库名、所有表名、所有字段名
- SQL获取所有用户名,数据库名、所有表名、所有字段名及字段类型