要获取一张表的列本身的数据,首先要了解sqlserver中的五张系统表
sysobjects,syscolumns,systypes,sysindexes,sysindexkeys

sysobjects,每个数据库都有一张这样的系统表,它记录了所有数据库对象,比如我们从里面可以获取主键,表对象名等
sysindexes,每个数据库都有一张这样的系统表,它记录了所有表的索引,包括索引对象名等
sysindexkeys,每个数据库都有一张这样的系统表,它记录了所有的索引与对应的列
syscolumns,每个数据库都有一张这样的系统表,它记录了所有表的列,我们从里面可以获取表的某一列的序号,名称,是否可以为空等。
systypes,每个数据库都有一张这样的系统表,它记录了所有的数据类型,我们从里面可以获取表的某一列数据类型的名称,比如:varchar,int等

sysobjects里有个xtype字段,char(2)类型,它记录的是对象的类型:比如PK是主键,S是用户表,P是存储过程等,都是大写的,还有一个name字段,记录的是对象的名称
sysindexes里有个name字段,记录了对名象名称,还有个indid字段,记录了索引编号
sysindexkeys里有个indid字段,记录了索引编号,还有个colid,记录了列编号
syscolumns里也有个xtype字段,int类型,但它记录的却是本列数据类型的代码,一些数字,这些数字与systypes表里的xtype对应起来,这样就可以从systypes表中获取数据类型的名称了,还有个colid字段,记录了列编号,还有个name字段,记录了列名,colorder字段记录了列序号
systypes里有个xtype,int类型,记录了本列数据类型的代码,还有个name字段,记录了数据类型名

syscolumns,sysindexes,sysindexkeys中的id字段对应的是所属表的id,而不是自己数据的id
syscolumns,sysindexes,sysindexkeys中的数据不带有唯一性,因为这是所有表共用一个系统表,所以colid,indid之类的都只是在id即表名不同的情况下唯一

这样,跟据以上的分析,我们就能得到一个表的字段的具体信息了
从syscolumns中得到列序号,列名,是否可以为空
从syscolumns和systypes中得到数据类型
从全部五张表中得到主键信息
可以看出,主要是得到主键用的代码多啊!

select  a.colorder Number,
a.name ColumnName,
b.name Type,
(case when a.isnullable=1 then 'Y'else 'N' end) AllowNull,
(case when
(SELECT count(*) FROM sysobjects WHERE name IN
(SELECT name FROM sysindexes WHERE id = a.id AND indid in
(SELECT indid FROM sysindexkeys WHERE id = a.id AND colid in
(SELECT colid FROM syscolumns WHERE id = a.id AND name = a.name)))
AND xtype = 'PK')>0 then 'Y' else 'N'end) IsPrimaryKey
from  syscolumns a left join systypes b on  a.xtype=b.xusertype
where a.id=OBJECT_ID('b') order by a.colorder

转载于:https://www.cnblogs.com/ljzforever/archive/2009/04/13/1434790.html

sqlserver中获取一张表中列的数据相关推荐

  1. oracle查表字段长度,oracle中查询某张表中的字段名,字段类型,字段长度等信息...

    oracle中查询某张表中的字段名,字段类型,是否为空,字段长度等信息 --更改某张表的字段类型长度 alter table bill_info modify IDCARD VARCHAR2 (30) ...

  2. 获取多张表中的数据_趣说:什么是数据结构和算法

    相信你的电脑里面 应该有这么一个 视频教程文件夹 不用我说 在这里面肯定是你 精心收藏的精华教程 不辞辛劳的你 按照每个优秀的老师 都分门别类的安排好 每一系列的精品教程 当你心血来潮之时 亦或是求知 ...

  3. MySQL中对比两张表是否有不同数据

    1.使用union all关联两张表,完事使用临时表或者说派生表的方式来进行数据对比. SELECT t1.pk, t1.c1 FROM t1 UNION ALL SELECT t2.pk, t2.c ...

  4. mysql获取多张表中的数据_mysql 之多表查询

    阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建一个数据库,那数据库里 ...

  5. mysql获取多张表中的数据_mysql之多表查询

    1.新建的一个数据库db3 create database db3 charset utf8; 2.为db3数据库创建两张表和数据 (1)创建person表 create tableperon ( i ...

  6. c datatable导入mysql_《项目经验》–简单三层使用DataTable向数据库表批量导入数据—向SqlServer一张表中导入数据 | 学步园...

    向数据库的一张表中添加数据,可以采用单个添加,即一条数据.一条数据的添加:也可以采用批量导入,依次将好些条数据写入数据库的一张表中.文本借助实例<添加系列信息>讲解一种向数据库批量导入数据 ...

  7. mysql 和 sqlserver中备份一张表的区别

    sqlserver中备份一张表 SELECT * into qa_buglist_bak FROM qa_buglist 不管表的数据有多大,速度很快: mysql中上述语句就无效了,须得新建一张表, ...

  8. EXCEL中两列合并成一列以及根据相同列的值将表中一列的值复制到另一张表中?

    今在做EXCEL时遇两问题,现和大家分享如下: 1.如何将表中两列值合并到一列,并按照一定的分隔符进行分割,公式如下: 假如:要将F和G的值 合并到H列并按逗号","隔开:  H1 ...

  9. excel比较两个表中数据 提取相同列 合并到同一张表中

    比较两个表中数据 提取相同列 合并到同一张表中 =VLOOKUP(A2,Sheet3!A:B,1,0) A2:表示 被查找的值 Sheet3!:表示哪张表 A:B:表示查找区域 1:表示提取哪列的值 ...

  10. c++获取sqlite3数据库表中所有字段的方法

    常用方法: 1.使用sqlite3_get_table函数 2.获取sqlite创建表的sql语句字符串,然后进行解析获取到相应的字段 3.采用配置文件的方式,将所有字段名写入配置文件 方法1:使用s ...

最新文章

  1. python之内置函数
  2. 高等数学思维导图_直击高数重点!这份思维导图请收下
  3. 05-移动端开发教程-CSS3兼容处理
  4. Lambda-函数式接口(1)
  5. c++学习笔记之继承和多态
  6. CPU 可以跑多快?地球到火星的距离告诉你!
  7. c语言平面向量加法考点,平面向量的加减法怎么死活都不会?有没有什么口诀?例如:向量AB+BC=?向量OA-OB=?向量AB-CB=?有没有什么口诀!...
  8. (转)Clang 比 GCC 编译器好在哪里?
  9. WiFi曝出安全漏洞几近“裸奔”:运营商能借机收割一波红利吗?
  10. Spring整合JavaMail
  11. 商业计划书范文3000_商业计划书范文(精选)
  12. 数学 - 泰勒公式,常见麦克劳林公式及Maple函数拟合
  13. 使用Axis2创建一个Web Service的客户端 - 子非鱼,安知鱼之乐? - CSDNBlog
  14. 设置wsl2桥接模式和设置ip
  15. obs多推流地址_手把手教你-OBS录屏使用
  16. (,)的用法逗号表达式
  17. PS网页设计教程XXVI——如何在PS中创建一个专业的网页布局
  18. Acunetix Web Vulnerability Scanner使用指导书
  19. 华为云虚拟专用网络VPN,助力现代企业云上业务创新发展 为助力企业实现创新发展
  20. 三角形周长最短问题_九年级数学,二次函数中三角形周长的最值问题,解题思路很重要...

热门文章

  1. oracle定时清理回收站,电脑设置定时清理回收站的操作方法
  2. TensorFlow by Google神经网络深度学习的 Hello World Machine Learning Foundations: Ep #1 - What is ML?
  3. linux pxe dhcp 讲解,RHEL 5 PXE+DHCP+NFS+SFTP无人职守网络安装配置
  4. 输入n个整数,输出其中最小的k个
  5. 从有序数组中找出某个数出现的次数
  6. mySQL常用操作及基础知识
  7. conda常用命令和基础知识整理
  8. css 点击效果_纯 CSS 实现吸附效果
  9. 现代通信原理10.1:带宽无限信道下采用低通滤波器(LPF)接收时的误码性能分析
  10. Servlet和JSP