设为首页 收藏本站
查看: 1960|回复: 0

[经验分享] 读数据库所有表和表结构的sql语句了(mssql)

[复制链接]

尚未签到

发表于 2018-10-22 08:21:29 | 显示全部楼层 |阅读模式
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.获取所有数据库名:
  (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>  (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>  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>  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>  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>  1:获取当前数据库中的所有用户表
  select Name from sysobjects where xtype='u' and status>=0
  2:获取某一个表的所有字段

  select name from syscolumns where>  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'


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-624726-1-1.html 上篇帖子: ERROR! The server quit without updating PID file 下篇帖子: 修改vnc server
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表