小白菜系列之——SQLServer数据库的系统视图查询

举报
小糖饼最甜呀 发表于 2022/04/25 00:09:45 2022/04/25
【摘要】 今天总结了一部分SQLServer数据库的查询系统视图的SQL语句,特来记录并分享一下。查询内容主要分为两部分:查询系统视图。查询字段类型并转换。先简单说明一下什么是视图?视图:视图是一个在基础表上通过sql语句创建的虚拟的表。系统数据则理解为数据库系统的视图,创建数据库时就有了。系统数据库与用户数据库都有系统视图。 SQL语句分享该SQL语句用于显示指定表名的字段序号、字段名、字段类型、注...

今天总结了一部分SQLServer数据库的查询系统视图的SQL语句,特来记录并分享一下。
查询内容主要分为两部分:

  • 查询系统视图。
  • 查询字段类型并转换。

先简单说明一下什么是视图?

视图:视图是一个在基础表上通过sql语句创建的虚拟的表。

系统数据则理解为数据库系统的视图,创建数据库时就有了。系统数据库与用户数据库都有系统视图。

SQL语句分享

该SQL语句用于显示指定表名的字段序号、字段名、字段类型、注释内容。

// tablename替换成需要查询的表名
SELECT row_number() OVER(ORDER BY column_id) AS num, col.name, t.name AS type, CONVERT(nvarchar(200), ep.value) AS remark 
FROM sysobjects obj 
LEFT JOIN sys.columns col ON obj.id = col.object_id 
LEFT JOIN sys.extended_properties ep ON ep.major_id = obj.id AND ep.minor_id = col.column_id 
LEFT JOIN dbo.systypes t ON col.system_type_id = t.xusertype 
WHERE obj.name='tablename'

这是一个很长的SQL语句,且该SQL语句涉及的系统视图较多,大家也可以使用select语句自己查看一下这些系统视图中的内容。

视图内容查询

系统视图的内容查询方式与表是一样的。下面以sys.tables视图为例,其他系统视图类似。
// 查询数据库中sys.tables中的所有的信息

// sys.tables是系统表
SELECT * FROM sys.tables

JOIN说明

用于在数据库中连接两个表,数据库连接方式分别是:

  • INNER JOIN
  • LEFT JOIN
  • RIFHT JOIN
  • FULL JOIN

其中除了INNER JOIN是内连接外,其他三种都是OUTER JOIN。即:

  • INNER JOIN:内连接,左右两个表取连接条件的交集;
  • LEFT OUTER JOIN:以左边表为准,显示左表所有内容,若是右表按照条件有内容,则显示对应内容,若无,显示null;
  • RIFHT OUTER JOIN:以右边表为准,显示右表所有内容,若是左表按照条件有内容,则显示对应内容,若无,显示null;
  • FULL OUTER JOIN:显示左右两个表的并集,若按照条件无内容,则对应显示null;

CONVERT说明

查询语句中使用CONVERT进行数据类型转换。而进行数据类型转换前,需要先查询确认原始数据类型,才能正确使用CONVERT函数。

  • 用于查询字段的数据类型
    查询sys.extended_properties中的字段类型语句如下:
// fieldname替换成需要查询的字段名
SELECT SQL_VARIANT_PROPERTY(fieldname, 'BaseType') FROM sys.extended_properties
  • 用于字段类型转换
    假设字段的数据类型是nvarchar,则进行类型转换如下:
// fieldname替换成需要查询的字段名,且该字段的数据类型是nvarchar
SELECT CONVERT(nvarchar(200), fieldname) as remark from sys.extended_properties

最后,如有问题,欢迎指出。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。