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 Name 3.获取所有表名 SELECT Name FROM DatabaseName..SysObjects Where XType=‘U‘ ORDER BY Name XType=‘U‘:表示所有用户表; XType=‘S‘:表示所有系统表; 4.获取所有字段名: SELECT Name FROM SysColumns WHERE id=Object_Id(‘TableName‘) 5.获取数据库所有类型 select name from systypes 6.获取主键字段 SELECT name FROM SysColumns WHERE id=Object_Id(‘表名‘) and colid=(select top 1 keyno from sysindexkeys where id=Object_Id(‘表名‘)) [综合网络资料整理] 1.获取所有数据库名: (2)、SELECT name FROM sysobjects WHERE type = ‘U‘ AND sysstat = ‘83‘ 注意:一般情况只需要type = ‘U‘,但有时候会有系统表混在其中(不知道什么原因),加上后面一句后就能删除这些系统表了
(2)、SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND "syscolumns.id = object_id(‘tableName‘) 注意点:
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张系统表中寻找的,关系比较复杂,大致可以表示为:
另外的SQL代码 select syscolumns.name, systypes.name, syscolumns.length from syscolumns left join systypes on syscolumns. xusertype =systypes. xusertype where id=(select id from sysobjects where name=‘订货主档‘); go; 或者用这样的写法,执行结果一样: select syscolumns.name, systypes.name, syscolumns.length from syscolumns,systypes where (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 30
select syscolumns.name, systypes.name, syscolumns.length from syscolumns left join systypes on syscolumns.xtype=systypes.xtype where 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 syscolumns left join systypes on syscolumns.xusertype=systypes.xusertype where id=(select id from sysobjects where name=‘DepartmentSalaryInfo‘); go
exec sp_procedure_params_rowset @procedure_name = ‘DepartmentSalaryInfo‘; 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.name, systypes.name, syscolumns.length from syscolumns left join systypes on syscolumns.xusertype=systypes.xusertype where id=(select id from sysobjects where name=‘DepartmentSalaryInfo‘);
|
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。