侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

SQL提取数据库表名及字段名等信息代码示例

数据库  /  管理员 发布于 6年前   179

本文向大家介绍了使用SQL语句提取数据库所有表的表名、字段名的实例代码,在SQLserver 中进行了测试,具体内容如下:

--查询所有用户表所有字段的特征SELECT D.Name as TableName, A.colorder AS ColOrder, A.name AS Name,  COLUMNPROPERTY(A.ID,A.Name, 'IsIdentity') AS IsIdentity,  CASE WHEN EXISTS (SELECT 1 FROM dbo.sysobjects WHERE Xtype = 'PK' AND Name IN (SELECT Name FROM sysindexes WHERE indid IN (SELECT indid FROM sysindexkeys WHERE ID = A.ID AND colid = A.colid)))  THEN 1 ELSE 0 END AS 主键,  B.name AS 类型, A.length AS [长度], A.xprec AS [精度], A.xscale AS [小数], CASE WHEN A.isnullable = 1 THEN 1 ELSE 0 END AS [可为空], ISNULL(E.text, ' ') AS [默认值],  ISNULL(G.[value], ' ') AS [说明]FROM dbo.syscolumns A LEFT OUTER JOIN dbo.systypes B ON A.xtype = B.xusertype INNER JOIN dbo.sysobjects D ON A.id = D.id AND D.xtype = 'U' AND  D.name <> 'dtproperties' LEFT OUTER JOIN dbo.syscomments E ON A.cdefault = E.id  LEFT OUTER JOIN dbo.sysproperties G ON A.id = G.id AND A.colid = G.smallid--WHERE D.Name='tablename' --如果找指定表,把注释去掉ORDER BY 1, 2

------在SQLserver 2005中测试

--查询所有用户表所有字段的特征SELECT  (case when a.colorder=1 then d.name else '' end) as 表名,--如果表名相同就返回空     a.colorder as 字段序号,     a.name as 字段名,     (case when COLUMNPROPERTY( a.id,a.name, 'IsIdentity' )=1 then '√' else '' end) as 标识,     (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 '√' else '' end) as 主键,--查询主键END  b.name as 类型,  a.length as 占用字节数,  COLUMNPROPERTY(a.id,a.name,'PRECISION' ) as  长度,  isnull(COLUMNPROPERTY(a.id,a.name,'Scale' ),0) as 小数位数,  (case when a.isnullable=1 then '√' else '' end) as 允许空,  isnull(e.text,'' ) as 默认值,  isnull(g.[value],'' ) AS 字段说明  FROM syscolumns a left join systypes b  on a.xtype=b.xusertype  inner join sysobjects d  on a.id=d.id and d.xtype='U' and d.name<> 'dtproperties'  left join syscomments e  on a.cdefault=e.id  left join sys.extended_properties g  on a.id=g.major_id AND a.colid = g.minor_id     --where d.name='PE_U_ValliMessage' --所要查询的表  order by a.id,a.colorder

------提取某个表的字段名

SELECT(case when a.colorder=1 then d.name else '' end) N'表名',a.colorder N'字段序号',a.name N'字段名',isnull(g.[value],'') AS N'字段说明',(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else ''end) N'标识',(case when (SELECT count(*)FROM sysobjectsWHERE (name in(SELECT nameFROM sysindexesWHERE (id = a.id) AND (indid in(SELECT indidFROM sysindexkeysWHERE (id = a.id) AND (colid in(SELECT colidFROM syscolumnsWHERE (id = a.id) AND (name = a.name))))))) AND(xtype = 'PK'))>0 then '√' else '' end) N'主键',b.name N'类型',a.length N'占用字节数',COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'长度',isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'小数位数',(case when a.isnullable=1 then '√'else '' end) N'允许空',isnull(e.text,'') N'默认值'FROM syscolumns aleft join systypes bon a.xtype=b.xusertypeinner join sysobjects don a.id=d.id and d.xtype='U' and d.name<>'dtproperties'left join syscomments eon a.cdefault=e.idleft join sys.extended_properties gon a.id=g.major_id AND a.colid = g.minor_id--where条件输入表名where d.name='ConsumeBillBody'order by object_name(a.id),a.colorder

总结

以上就是本文关于SQL提取数据库表名及字段名等信息代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:SQL注入原理与解决方法代码示例、MySQL删除有外键约束的表数据方法介绍、几个比较重要的MySQL变量等,有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!


  • 上一条:
    MSSQL 2008 自动备份数据库的设置方法
    下一条:
    SqlServer批量备份多个数据库且删除3天前的备份
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 分库分表的目的、优缺点及具体实现方式介绍(0个评论)
    • DevDB - 在 VS 代码中直接访问数据库(0个评论)
    • 在ubuntu系统中实现mysql数据存储目录迁移流程步骤(0个评论)
    • 在mysql中使用存储过程批量新增测试数据流程步骤(0个评论)
    • php+mysql数据库批量根据条件快速更新、连表更新sql实现(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2017-06
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-05
    • 2018-10
    • 2018-11
    • 2020-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2021-02
    • 2021-04
    • 2021-07
    • 2021-08
    • 2021-11
    • 2021-12
    • 2022-02
    • 2022-03
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-07
    • 2023-08
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客