前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sql Server各系统表说明及使用案例

Sql Server各系统表说明及使用案例

作者头像
Vaccae
发布2019-07-24 11:00:12
6030
发布2019-07-24 11:00:12
举报
文章被收录于专栏:微卡智享

前言

我们平时写一般的SQL语句的时候,可能不会用到系统表,不过在一些特殊的情况下就会用到了,比如说在系统运用的时候,我们根据日期动态创建的数据表,如果要从里面获取数据的时候最好需要加上判断这个表是否存在,如果存在我们就从表里面取数据,如果不存在就跳出。

我们先介绍一下各个系统表的作用,后面再取几个例子来说明用法。

SQL系统表

  • sysaltfiles 主数据库 保存数据库的文件
  • syscharsets 主数据库 字符集与排序顺序
  • sysconfigures 主数据库 配置选项
  • syscurconfigs 主数据库 当前配置选项
  • sysdatabases 主数据库 服务器中的数据库
  • syslanguages 主数据库 语言
  • syslogins 主数据库 登陆帐号信息
  • sysoledbusers 主数据库 链接服务器登陆信息
  • sysprocesses 主数据库 进程
  • sysremotelogins 主数据库 远程登录帐号
  • syscolumns 每个数据库 列
  • sysconstrains 每个数据库 限制
  • sysfilegroups 每个数据库 文件组
  • sysfiles 每个数据库 文件
  • sysforeignkeys 每个数据库 外部关键字
  • sysindexs 每个数据库 索引
  • sysmenbers 每个数据库 角色成员
  • sysobjects 每个数据库 所有数据库对象
  • syspermissions 每个数据库 权限
  • systypes 每个数据库 用户定义数据类型
  • sysusers 每个数据库 用户

代码演示

1.判断数据表存在

我们要从数据库里查询付款流水的信息,付款流水表默认的是txsPayFlow表,后面的tXsPayFlow$201805是代表2018年5月的付款流水,这个表是每个月自动创建的,所以如果我们要查2018年5月的销售时就要从代年月的分割表里查询。

正常来说我们查一下18年5月的流水直接就写

因为我们的软件里没有做6月的月结,所以6月的表没创建,如果我们这里要查6月的数据,用上面的方法会直接报错了

这个时候我们的系统表就起到作用了,上面写到sysobjects可以看到数据库的对象,所以我们首先判断这个表是否在系统里存在,如果存在取数据,不存在输出无此表信息。

这样代码就可以正常运行了。

2.给数据表里增加字段

一般我们程序升级的时候,数据库有可能也会增加字段,为了多次执行不报错,我们在添加字段的时候就需要判断表里面是否有这个字段。

判断我们要增加字段的表里是否有这个字段用到了sysobjects,syscolumns这两个表,通过两个表里的ID关联,来判断是否有我们要增加的列

例:我们要在balance表里面增加一个sflag的列。

通过关联查询我们可以看到系统表里的列

这样我们写增加一个sflag的列的代码

当执行完第一次时,下面提示的命令已成功完成,我们从数据库里已经看到了列也增加了

然后我们再执行一次

下面的提示里面就告诉我们列已经存在了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档