SQL获取所有数据库名、表名、储存过程以及参数列表
SQL获取所有数据库名、表名、储存过程以及参数列表
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.获取所有数据库名:
(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 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 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代码
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');
SQL获取所有数据库名、表名、储存过程以及参数列表的更多相关文章
- [转载] SQL获取所有数据库名、表名、储存过程以及参数列表
查询一个数据库中所有表字段属性的sql语句 1.获取所有用户名: SELECT name FROM Sysusers where status='2' and islogin='1' is ...
- sql 查询所有数据库、表名、表字段总结
ms sql server 1.查询所有表select [id], [name] from [sysobjects] where [type] = 'u' order by [name]2.查询所有数 ...
- Sqlserver列出所有数据库名,表名,字段名
Sqlserver列出所有数据库名,表名,字段名 1.获取所有数据库名: ? 1 SELECT Name FROM Master..SysDatabases ORDER BY Name 注 ...
- mysql / pgsql 使用sql语句查询数据库所有表注释已经表字段注释
mysql使用sql语句查询数据库所有表注释已经表字段注释(转载) 场景: 1. 要查询数据库 "mammothcode" 下所有表名以及表注释 /* 查询数据库 ‘mammo ...
- 使用SQL语句清空数据库所有表的数据
使用SQL语句清空数据库所有表的数据 近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的清理,但表非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进 ...
- 【转载】C#常用数据库Sqlserver通过SQL语句查询数据库以及表的大小
在Sqlserver数据库中,一般我们查看数据库的大小可以通过查找到数据库文件来查看,但如果要查找数据表Table的大小的话,则不可通过此方法,在Sqlserver数据库中,提供了相应的SQL语句来查 ...
- SQL中查看数据库各表的大小
SQL中查看数据库各表的大小 编写人:CC阿爸 2014-6-17 在日常SQL数据库的操作中,如何快速的查询数据库中各表中数据的大小. 以下有两种方法供参考: 第一种: create table # ...
- [SQL]获取所有数据库名、获取数据库中表名、获取表中的字段名
--()获取所有数据库名: Select Name FROM Master..SysDatabases order by Name --()获取所有表名 --XType=''U'':表示所有用户表; ...
- oracle 语句之对数据库的表名就行模糊查询,对查询结果进行遍历,依次获取每个表名结果中的每个字段(存储过程)
语句的执行环境是plsql的sql窗口, 语句的目的是从整个数据库中的所有表判断 不等于某个字段的记录数 . 代码如下: declare s_sql clob:=''; -- 声明一个变量,该变量用于 ...
随机推荐
- 学习SQL的点点滴滴(三)-修改数据库的兼容级别
语法 ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = { 80 | 90 | 100 } 参数 database_name 要修改的数据库 ...
- 【MySQL】优化—工欲善其事,必先利其器之EXPLAIN
接触MySQL已经有一段时间了,了解如何优化它也迫在眉睫了,话说工欲善其事,必先利其器.最近我就打算了解下几个优化MySQL中经常用到的工具.今天就简单介绍下EXPLAIN. 环境准备 Explain ...
- Java事务处理全解析(六)—— 使用动态代理(Dynamic Proxy)完成事务
在本系列的上一篇文章中,我们讲到了使用Template模式进行事务管理,这固然是一种很好的方法,但是不那么完美的地方在于我们依然需要在service层中编写和事务处理相关的代码,即我们需要在servi ...
- 织梦如何重新安装 织梦dir 二次安装
一般安装过一次织梦就不需要重新再去下载安装第二次了,我们可以在原有的基础上重新安装一次.这个是织梦cms后台自带的功能,还比较方便,下面小编就分享下如何重装织梦. 如果在本地重装要打开集成环境,在浏览 ...
- 实用的VS工具
工具 1.Visual Studio Visual Studio Productivity Power tool:Visual Studio专业版(及以上)的扩展,具有丰富的功能,如快速查找,导航解决 ...
- ZYB's Premutation POJ5592
Problem Description ZYBZYBZYB has a premutation PPP,but he only remeber the reverse log of each pref ...
- 无法连接远程SQL Server 数据库的原因
1. tcp协议开启 2. 1433端口是否添加防火墙例外
- python 版本问题大全
坑一 一下午的时间又让这个不是问题的问题给白白给浪费了,此片文章仅仅纪念一下浪费掉的宝贵时间 新式类与经典类问题 class qwe: def __init__(self, name): self.n ...
- DEV中dx:ASPxPopupControl 控件的使用(在窗口关闭或隐藏时,清楚文本框中的内容)
//在窗口关闭或隐藏时,清楚文本框中的内容(核心代码) function(s, e) { ASPxClientEdit.ClearGroup('entryGroup'); } <asp:Cont ...
- leetcode 136
136. Single Number Given an array of integers, every element appears twice except for one. Find that ...