当前位置:文档之家› SQL获取所有数据库名、表名、储存过程以及参数列表

SQL获取所有数据库名、表名、储存过程以及参数列表

1.获取所有用户名:SELECT name FROM Sysusers where status='2' and islogin='1'islogin='1'表示帐户islogin='0'表示角色status='2'表示用户帐户status='0'表示糸统帐户2.获取所有数据库名:SELECT Name FROM Master..SysDatabases ORDER BY Name3.获取所有表名SELECT Name FROM DatabaseName..SysObjects Where XType='U' ORDER BY NameXType='U':表示所有用户表;XType='S':表示所有系统表;4.获取所有字段名:SELECT Name FROM SysColumns WHERE id=Object_Id('TableName')5.获取数据库所有类型select name from systypes6.获取主键字段SELECT name FROM SysColumns WHERE id=Object_Id('表名') and colid=(select top 1 keyno from sysindexkeys where id=Object_Id('表名'))[综合网络资料整理]1.获取所有数据库名:(1)、Select Name FROM Master..SysDatabases order by Name2.获取所有表名:(1)、Select Name FROM SysObjects Where XType='U' orDER BY NameXType='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.isnullable,syscolumns.length FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND "syscolumns.id = object_id('tableName')注意点:(a)这里为了重点突出某些重要内容,选取了其中几项信息输出。

(b)syscolumns表中只含有数据类型编号,要获取完整的名字需要从systypes 表中找,一般用户使用的数据类型用xusertype对应比较好,不会出现一对多的情况。

(c)syscolumns.length得到的是物理内存的长度,所以nvarchar和varchar 等类型在数据库中的显示是这个的一半。

4、得到表中主键所包含的列名:SELECT FROMsyscolumns,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 = 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代码select , , syscolumns.length from syscolu mnsleft join systypes on syscolumns. xusertype =systypes. xusertype where id=(select id from sysobjects where name='订货主档');go;或者用这样的写法,执行结果一样:select , , syscolumns.length from syscolu mns,systypeswhere(syscolumns.id=object_id('订货主档')and syscolumns.xusertype=systypes.xusertype)order by syscolumns.colorder;go执行结果:(字段只出现一次,正常)订单号码int 4客户编号nvarchar 10员工编号int 4订单日期datetime 8要货日期datetime 8送货日期datetime 8送货方式int 4运费money 8收货人nvarchar 80送货地址nvarchar 120送货城市nvarchar 30送货行政区nvarchar 30送货邮政编码nvarchar 20送货国家地区nvarchar 30select , , syscolumns.length from syscolu mnsleft join systypes on syscolumns.xtype=systypes.xtypewhere id=(select id from sysobjects where name='订货主档');go;执行结果:(部分字段出现两次,数据类型不同)订单号码 int 4客户编号 nvarchar 10客户编号 sysname 10员工编号 int 4订单日期 datetime 8订单日期出生日期类型 8要货日期 datetime 8要货日期出生日期类型 8送货日期 datetime 8送货日期出生日期类型 8送货方式 int 4运费 money 8运费薪水类型 8收货人 nvarchar 80收货人 sysname 80送货地址 nvarchar 120送货地址 sysname 120送货城市 nvarchar 30送货城市 sysname 30送货行政区 nvarchar 30送货行政区 sysname 30送货邮政编码 nvarchar 20送货邮政编码 sysname 20送货国家地区 nvarchar 30送货国家地区 sysname 30查询存储过程DepartmentSalaryInfo所有的信息,信息包含在系统视图syscolumns,systypes中select syscolumns.*, systypes.*from syscolumnsleft join systypes on syscolumns.xusertype=systypes.xusertypewhere id=(select id from sysobjects where name='DepartmentSalaryInf o');goexec sp_procedure_params_rowset @procedure_name ='Department SalaryInfo';go执行结果:北风贸易 dbo DepartmentSalaryInfo;1 @RETURN_VALUE 0 4 0 NULL 0 3 NULL NULL 10 NULL NULL int int北风贸易 dbo DepartmentSalaryInfo;1 @department 1 1 0 NULL 1 129 10 10 NULL NULL NULL varchar varchar北风贸易 dbo DepartmentSalaryInfo;1 @average 2 2 0 NULL 1 6 NULL NULL 19 NULL NULL money money北风贸易 dbo DepartmentSalaryInfo;1 @maximum 3 2 0 NULL 1 6 NULL NULL 19 NULL NULL money money北风贸易 dbo DepartmentSalaryInfo;1 @minimum 4 2 0 NULL 1 6 NULL NULL 19 NULL NULL money money--存储过程中的参数名,参数类型,参数长度select , , syscolumns.length from syscolumns left join systypes on syscolumns.xusertype=systypes.xusertypewhere id=(select id from sysobjects where name='DepartmentSalaryInfo');。

相关主题