Sql Server 视图数据的增删改查教程

Admin 2021-05-11 群英技术资讯 4059 次浏览

       视图是SQL学习中很重要的一个知识点,是需要掌握的,对此,这篇文章就给大家介绍一下关于视图的概念,使用和视图的增删查改操作,有这方面学习需要的朋友就继续往下看吧。

       一、视图的基本概念

       视图是用于查询的另外一种方式。 与实际的表不同,它是一个虚表;因此数据库中只存在视图的定义,而不存在视图中相对应的数据,数据仍然存放在原来的基本表中。视图是一种逻辑对象。

       二、 视图能做什么

       导出数据; 在导出数据时,常常需要多个表联合查询,这个时候就可以使用视图;转换字段,如把status(0/1 Int类型)字段转换成启用/停用(文字) ,然后用视图保存定义。

       数据安全,可以给视图加密。

       三、视图操作

       3.1 查询数据

       (一)准备素材:

       使用两张表,其中一张是家电表,另外一张字典表(只需要知道这两张表有一个连接字段brandID-RowID:注意两个表没有强制使用外键约束),准备好素材

SELECT TOP 1000 [appliancesName]
  ,[appliancesType]
  ,[code]
  ,[**brandId**]
  ,[standard]
  ,[appliancesStatus]
  ,[appliancesIsNew]
  ,[appliancesIsKey]
  ,[appliancesRemark]
  ,[appliancesId]
 FROM sfa_t_appliances

       另外一张表字典表

 SELECT TOP 1000 [**RowID**]
  ,[PRowID]
  ,[DicKey]
  ,[DicVal]
  ,[Status]
 FROM sfa_t_TSysDictionary

       说明:sfa_t_appliances 表中的字段brandId 与 sfa_t_TSysDictionary表中的rowid做关联。

       (二)创建视图:

create view appliances_view(id,name,brandName)
as 
select s.appliancesId,s.appliancesName,d.DicVal
from sfa_t_appliances s,sfa_t_TSysDictionary d
where s.brandId = d.RowID

       (三)查询:

       查询数据,可以将视图看做一张实实在在的数据表,能够执行各种查询操作。

       如下图所示,执行一个查询操作:

       (四)备注

       有些书上说:可以对任何查询结果进行排序,但是只有当视图包括Top子句时才能排序视图。这样看来书上确实是有问题的。动手实践出真知

       3.2 插入数据

       实验一

       往视图中插入一条数据:

       解释:

       往视图中插入数据时,能够往sfa_t_appliances 中插入数据。但是视图为什么读取不到呢?

create view appliances_view(id,name,brandName)
as 
select s.appliancesId,s.appliancesName,d.DicVal
from sfa_t_appliances s,sfa_t_TSysDictionary d
where s.brandId = d.RowID

       注意视图的创建语法:是通过关联关系获取到的数据。注意观看视图的三个字段的来源。自然,在appliancesID为112233的记录中没有brandID,所以自然不能读取到数据。

       实验二

       说明: 往只含一个基本字段中插入数据是完全没有问题的。上图也插入成功了。

       实验三

       将多个基表的字段都插入试试:

insert into appliances_view(id,name,brandName) values(112234,'视图','冰箱')

       小节:

       使用INSERT语句进行插入操作的视图必须能够在基表(组成视图查询的表)中插入数据,否则会操作失败。如果视图上没有包括基表中所有属性为not null的行,那么插入操作会由于哪些列的NULL值而失败。

       补充

       通过视图可以向数据库表中插入数据,修改数据和删除表中数据。如果视图的SELECT语句中包含了DISTINCT、表达式(如计算列和函数),或FROM子句中引用多个表,或者引用不可更新的视图,或有Group by 或者having子句,那么都不能通过视图操作数据。

       3.3 修改数据

       解释

       能够对数据进行修改,但是只能修改一张表中的数据。查看下图,修改基于两个表的字段:

       失败了,说明只能修改一张表中的字段。

3.4 删除数据

       小结:

       如果一个视图链接了两个以上的基表,则不允许进行数据删除操作。如果视图中的列是常数或者几个字符串列值得和,那么尽管插入和更新操作时不允许的,但是却可以进行删除操作。

       实验:

       (一) 创建基于一个表的视图:

       (二)执行删除操作结果:

       (三)结果说明:

       基于一个表的视图是能够执行删除操作的。

       以上就是关于sql server视图操作的介绍,对于视图数据的增删改查操作,大家都是需要去掌握的,希望大家阅读完这篇文章有收获,更多sql server视图操作的方法可以浏览其他文章。

群英智防CDN,智能加速解决方案

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服