前言

一般情况我们下,我们是知道数据库的表、列信息的(因为数据库是我们手动设计),但特殊情况下,如果你只能拿到数据库连接信息,也就是知道的一个数据库名的情况下,你要怎么得到它下面的所有表名,所有列表,以及主键,是否自增?等这些信息,那么本文将给您揭晓这个答案。

内容

废话不多说,直接上码,一码永逸,希望与大家共享。

1、某数据库下的所有表。

代码如下:

SELECT TABLE_NAME FROM 数据库名.INFORMATION_SCHEMA.TABLES 

结果如图:

 

2、某表的所有字段。

代码如下:

SELECT NAME FROM DBO.SYSCOLUMNS WHERE DBO.SYSCOLUMNS.ID=(
SELECT ID FROM DBO.SYSOBJECTS WHERE DBO.SYSOBJECTS.XTYPE = 'U' AND NAME='表名')

结果如图:

3、查询某表中的主键。

代码如下:

EXEC SP_PKEYS 表名

结果如图:

4、查询主键是否为自增。

代码如下:

IF EXISTS(SELECT TOP 1 1 FROM SYSCOLUMNS SC WHERE SC.ID =
(SELECT ID FROM DBO.SYSOBJECTS WHERE DBO.SYSOBJECTS.XTYPE = 'U' AND NAME='表名')
AND COLUMNPROPERTY(SC.ID, SC.NAME, 'ISIDENTITY') = 1)
SELECT 1 as 'ISIDENTITY'
ELSE SELECT 0 as 'ISIDENTITY'

结果如图:

 

5、查询所有字段的类型。

代码如下:

SELECT (SELECT NAME FROM DBO.SYSTYPES WHERE DBO.SYSTYPES.XUSERTYPE=SYSCOLUMNS.XTYPE) AS FILEDTYPE
FROM DBO.SYSCOLUMNS WHERE DBO.SYSCOLUMNS.ID=(
SELECT ID FROM DBO.SYSOBJECTS WHERE DBO.SYSOBJECTS.XTYPE = 'U' AND NAME='表名')

结果如下:

结束

拥有以上代码,基本在数据库“反射”查询的时候,能派上用处,也基本够用了,其原理就是利用SqlServer的内置函数,系统存储方法,以系统表(sysobjects、syscolumns)的id为主导线,展开的查询,其中sysobjects的id等于syscolumns表中的id,注意,每修改一次表结构(即数据列)这个id都会发生改变。

祝大家好运,如果觉得有用,请点击支持,谢谢。

MS SQL查询库、表、列数据结构信息汇总相关推荐

  1. SQL查询库、表,列等的一些操作

    SQL查询库.表,列等的一些操作 转载于:https://www.cnblogs.com/yangleikingly/p/6497499.html

  2. [数据库] SQL查询语句表行列转换及一行数据转换成两列

    本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两列数据的方法.子查询的应用.decode函数的用法.希望文章对你有所帮助~ 1.创建数据库表及插入数据 2.子查询统计不同 ...

  3. mysql 所有表的字段信息_mysql如何查询所有表和字段信息

    mysql查询所有表和字段信息的方法: 1.根据库名获取所有表的信息 SELECT * FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = 'e ...

  4. SQL查询EAS工作流任务节点信息(包含审批信息)

    SQL查询EAS工作流任务节点信息(包含审批信息) 最近有个需求,需要查出EAS工作流所有节点任务信息,网上找了好久没有找到完整SQL,综合后特意记录一下. 需要查哪个表的审批记录只需把 BizObj ...

  5. Sql查询一个表中除了某个字段以外的所有字段的方法

    declare @name varchar(100) declare @sql varchar(1000)SET @sql='select ' DECLARE C11 CURSOR FORselect ...

  6. 大文件表空间+创建大文件表空间+查询数据库表空间类型信息+查询数据库表空间类型信息...

    1用于解决存储文件大小不够的问题 2与普通表空间不同的地方在于大文件表空间只对应唯一一个数据文件或临时文件,普通表空间可最多1022个数据文件或临时文件 3大文件表空间对应文件可达4G个数据块大小,普 ...

  7. sql查询数据库表中重复数值

    sql查询数据库表中重复数值 -- 查询表中id重复的值 select id from 表名 group by id having count(*) > 1--查询表中的重复记录,重复记录是根据 ...

  8. oracle+统计表的字段,统计系统中表的个数与查询所有表的字段信息-Oracle

    统计系统中表的个数与查询所有表的字段信息 –统计系统中表的个数: –表描述字段: –需要字段:Name.Code.Commente select lower(a.TABLE_NAME) || '-' ...

  9. SQL查询成绩表中的每科第三名

    SQL查询成绩表中的每科第三名 题目要求 表格数据 grade表 c_id c_no c_name 1 1 80 1 2 90 1 3 70 1 4 95 2 1 64 2 2 88 2 3 89 2 ...

最新文章

  1. 手把手教你从零上手Python(付安装地址、代码)
  2. css 图片居中放大,不同比例图片居中缩放显示的三种方法
  3. 【转摘】PYTHON 正则表达式
  4. CSS的inline、block与inline-block
  5. wxWidgets:wxFontMapper类用法
  6. Yii 中Criteria常用方法
  7. 单点登录终极方案之 CAS 应用及原理
  8. mysql replicate error
  9. php算次方,php怎么计算几次方
  10. 自动驾驶面试题汇总(2022秋招题库)——持续更新
  11. 《GPUPro》笔记
  12. Android优化方案之--Fragment的懒加载实现
  13. mysql x锁 u锁_讲解更新锁(U)与排它锁(X)的相关知识
  14. LDA话题模型与推荐系统
  15. 一台电子计算机埃尼阿克的介绍,世界之最——第一台电子计算机
  16. python将经纬度标注在地图上_Python 给定的经纬度标注在地图上的实现方法
  17. 美食网页设计作品html,美食网页设计与制作.doc
  18. MES系统在注塑行业中的应用
  19. python就业方向
  20. JZOJ【NOI2017模拟3.30】原谅

热门文章

  1. Redis(零):背景
  2. Angular gitlab持续集成之runner配置
  3. Angular性能优化之脏检测
  4. 在既有系统中打通Apache Ignite、MySQL和Node.js
  5. Caffe学习记录(十一) ICNet分割网络学习
  6. Centos 7初始化脚本
  7. 《全球互联网金融商业模式:格局与发展》——第3章,第3节互联网保险公司...
  8. 用鼠标去控制物体移动的方法
  9. Windows Phone 7 LongListSelector控件实现分类列表和字母索引
  10. 《大话设计模式》读书笔记-索引