怎么在Sql Server中对视图数据进行增删改查操作

  介绍

本篇文章给大家分享的是有关怎么在Sql Server中对视图数据进行增删改查操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

一、视图的基本概念

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

二,视图能做什么

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

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

三,视图操作

<强> 3.1查询数据

(一)准备素材:

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

SELECT  TOP  1000年,[appliancesName]   ,,,(appliancesType)   ,,,(代码)   ,,,(* * brandId * *)   ,,,(标准)   ,,,(appliancesStatus)   ,,,(appliancesIsNew)   ,,,(appliancesIsKey)   ,,,(appliancesRemark)   ,,,(appliancesId)   以前,得到sfa_t_appliances

另外一张表字典表

, SELECT  TOP  1000年,[* * RowID * *]   ,,,(PRowID)   ,,,(DicKey)   ,,,(DicVal)   ,,,(状态)   以前,得到sfa_t_TSysDictionary

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

(二)创建视图:

create  view  appliances_view (id、名称、名牌)   as    select  s.appliancesId s.appliancesName d.DicVal   得到sfa_t_appliances 年代,sfa_t_TSysDictionary  d   where  s.brandId =d。RowID

怎么在Sql Server中对视图数据进行增删改查操作

(三)查询:

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

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

怎么在Sql Server中对视图数据进行增删改查操作

(四)备注

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

<强> 3.2插入数据

实验一

往视图中插入一条数据:

怎么在Sql Server中对视图数据进行增删改查操作

解释:

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

create  view  appliances_view (id、名称、名牌)   as    select  s.appliancesId s.appliancesName d.DicVal   得到sfa_t_appliances 年代,sfa_t_TSysDictionary  d   where  s.brandId =d。RowID

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

实验二

怎么在Sql Server 中对视图数据进行增删改查操作

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

实验三

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

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

怎么在Sql Server 中对视图数据进行增删改查操作

小节:

使用INSERT语句进行插入操作的视图必须能够在基表(组成视图查询的表)中插入数据,否则会操作失败。

如果视图上没有包括基表中所有属性为not null的行,那么插入操作会由于哪些列的NULL值而失败。

补充

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

怎么在Sql Server中对视图数据进行增删改查操作