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

简介: 原文: SQL获取所有数据库名、表名、储存过程以及参数列表1.获取所有用户名:SELECT name FROM Sysusers where status='2' and islogin='1'islogin='1'表示帐户islogin='0'表示角色status='2'表示用户帐户status='0'表示糸统帐户2.
原文: SQL获取所有数据库名、表名、储存过程以及参数列表

1.获取所有用户名:
img_a6339ee3e57d1d52bc7d02b338e15a60.gifSELECT name FROM Sysusers 
where status='2' and islogin='1'
img_a6339ee3e57d1d52bc7d02b338e15a60.gifislogin
='1'表示帐户
img_a6339ee3e57d1d52bc7d02b338e15a60.gifislogin
='0'表示角色
img_a6339ee3e57d1d52bc7d02b338e15a60.gifstatus
='2'表示用户帐户
img_a6339ee3e57d1d52bc7d02b338e15a60.gifstatus
='0'表示糸统帐户
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
2.获取所有数据库名:
img_a6339ee3e57d1d52bc7d02b338e15a60.gifSELECT Name FROM Master..SysDatabases ORDER BY Name
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
3.获取所有表名
img_a6339ee3e57d1d52bc7d02b338e15a60.gifSELECT Name FROM DatabaseName..SysObjects Where XType
='U' ORDER BY Name
img_a6339ee3e57d1d52bc7d02b338e15a60.gifXType
='U':表示所有用户表;
img_a6339ee3e57d1d52bc7d02b338e15a60.gifXType
='S':表示所有系统表;
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
4.获取所有字段名:
img_a6339ee3e57d1d52bc7d02b338e15a60.gifSELECT Name FROM SysColumns WHERE id
=Object_Id('TableName')
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
5.获取数据库所有类型
img_a6339ee3e57d1d52bc7d02b338e15a60.gifselect name from systypes 
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
6.获取主键字段
img_a6339ee3e57d1d52bc7d02b338e15a60.gifSELECT  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':
表示所有系统表;<?xml:namespace prefix="O"?>

   (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)这里为了重点突出某些重要内容,选取了其中几项信息输出。
    
bsyscolumns表中只含有数据类型编号,要获取完整的名字需要从systypes表中找,一般用户使用的数据类型用xusertype对应比较好,不会出现一对多的情况。
    
csyscolumns.length得到的是物理内存的长度,所以nvarcharvarchar等类型在数据库中的显示是这个的一半。

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
中存有表中的列信息和表idsysobjects表中存有主键名字(即PK_Table类似)和表idsysindexes中存 有主键名字和表idindex编号,sysindexkeys中存有表idindex编号和列编号,一项一项对应起来后就能找到列名了。

 

另外的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所有的信息,信息包含在系统视图syscolumnssystypes

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');



1:获取当前数据库中的所有用户表
select Name from sysobjects where xtype='u' and status>=0
2:获取某一个表的所有字段
select name from syscolumns where id=object_id('表名')
3:查询用户创建的所有数据库
select * from master..sysdatabases D where sid not in(select sid from
master..syslogins where name='sa')
或者
select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01
4:查询某一个表的字段和数据类型
select column_name,data_type from information_schema.columns
where table_name = '表名'
[n].[标题]:
Select * From TableName Order By CustomerName
[n].[标题]:
8.如何修改数据库的名称:
sp_renamedb 'old_name', 'new_name'
9.只复制一个表结构,不复制数据
select top 0 * into [t1] from [t2]
10.连接远程数据库
select * from OPENDATASOURCE('SQLOLEDB','Data Source=远程ip;User
ID=sa;Password=密码').库名.dbo.表名
11.获取当前oracle数据库中的所有表
select table_name from user_tables
12 .获取当前oracle表中所有字段的类型
SELECT
      COLUMN_NAME,DATA_TYPE,DATA_LENGTH,NULLABLE
FROM
         USER_TAB_COLS where TABLE_NAME='teacher';
目录
相关文章
|
5天前
|
SQL Oracle 关系型数据库
sql语句创建数据库
在创建数据库之前,请确保你有足够的权限,并且已经考虑了数据库的安全性和性能需求。此外,不同的DBMS可能有特定的最佳实践和配置要求,因此建议查阅相关DBMS的官方文档以获取更详细和准确的信息。
|
3天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
|
5天前
|
SQL 缓存 数据库
sql 数据库优化
SQL数据库优化是一个复杂且关键的过程,涉及多个层面的技术和策略。以下是一些主要的优化建议: 查询语句优化: 避免全表扫描:在查询时,尽量使用索引来减少全表扫描,提高查询速度。 使用合适的子查询方式:子查询可能降低查询效率,但可以通过优化子查询的结构或使用连接(JOIN)替代子查询来提高性能。 简化查询语句:避免不必要的复杂查询,尽量使SQL语句简单明了。 使用EXISTS替代IN:在查询数据是否存在时,使用EXISTS通常比IN更快。 索引优化: 建立合适的索引:对于经常查询的列,如主键和外键,应创建相应的索引。同时,考虑使用覆盖索引来进一步提高性能。 避免过多的索引:虽然索引可以提高查询
|
5天前
|
SQL XML 数据库
sql导入数据库命令
在SQL Server中,数据库导入可通过多种方式实现:1) 使用SSMS的“导入数据”向导从各种源(如Excel、CSV)导入;2) BULK INSERT语句适用于导入文本文件;3) bcp命令行工具进行批量数据交换;4) OPENROWSET函数直接从外部数据源(如Excel)插入数据。在操作前,请记得备份数据库,并可能需对数据进行预处理以符合SQL Server要求。注意不同方法可能依版本和配置而异。
|
12天前
|
SQL 数据库
数据库SQL语言实战(二)
数据库SQL语言实战(二)
|
12天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
39 3
|
15天前
|
SQL 监控 数据库
数据库管理与电脑监控软件:SQL代码优化与实践
本文探讨了如何优化数据库管理和使用电脑监控软件以提升效率。通过SQL代码优化,如使用索引和调整查询语句,能有效提高数据库性能。同时,合理设计数据库结构,如数据表划分和规范化,也能增强管理效率。此外,利用Python脚本自动化收集系统性能数据,并实时提交至网站,可实现对电脑监控的实时性和有效性。这些方法能提升信息系统稳定性和可靠性,满足用户需求。
52 0
|
8天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
45 2
|
24天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
105 0
|
24天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)