小白菜系列之——SQLServer数据库的系统视图查询
【摘要】 今天总结了一部分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)