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

作者:一碗面 时间:2024-01-22 07:51:05 

一、视图的基本概念

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

二、 视图能做什么

导出数据; 在导出数据时,常常需要多个表联合查询,这个时候就可以使用视图;转换字段,如把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

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

(三)查询:

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

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

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

(四)备注

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

3.2 插入数据

实验一

往视图中插入一条数据:

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

解释:

往视图中插入数据时,能够往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,所以自然不能读取到数据。

实验二

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 视图数据的增删改查教程

3.3 修改数据

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

解释

能够对数据进行修改,但是只能修改一张表中的数据。

查看下图,修改基于两个表的字段:

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

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

3.4 删除数据

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

小结:

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

实验:

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

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

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

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

(三)结果说明:

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

来源:https://uzong.blog.csdn.net/article/details/77954476

标签:SqlServer,视图,数据,增删改查
0
投稿

猜你喜欢

  • opencv中cv2.minAreaRect函数输出角度问题详解

    2023-09-08 06:38:47
  • 利用Python和C语言分别实现哈夫曼编码

    2021-08-12 09:59:49
  • zeroclipboard 单个复制按钮和多个复制按钮的实现方法

    2024-04-22 13:02:59
  • Python Playwright 文本框操作技巧

    2023-01-15 20:59:21
  • 对python 中class与变量的使用方法详解

    2023-12-27 19:22:10
  • SQL重复记录处理(查找,过滤,删除)

    2008-11-17 20:47:00
  • Python中的map、reduce和filter浅析

    2021-07-13 23:57:08
  • python局域网ip扫描示例分享

    2022-10-19 08:43:45
  • Python单例模式的两种实现方法

    2023-03-03 12:31:09
  • Java+MySql图片数据保存与读取的具体实例

    2024-01-22 01:07:31
  • vue.js 动态组件详解

    2024-04-29 13:09:58
  • 微信小程序request请求后台接口php的实例详解

    2023-11-11 14:24:04
  • sqlserver数据库移动数据库路径的脚本示例

    2024-01-28 05:06:49
  • 树莓派+摄像头实现对移动物体的检测

    2022-05-28 19:57:26
  • pycharm 终端部启用虚拟环境详情

    2022-04-01 17:52:59
  • MySQL为例讲解JDBC数据库连接步骤

    2024-01-25 06:14:52
  • Tensorflow的常用矩阵生成方式

    2023-03-27 16:03:55
  • python 对key为时间的dict排序方法

    2021-03-22 17:09:59
  • Django rest framework如何自定义用户表

    2022-03-12 01:15:02
  • 在 WordPress 的页眉(header)和页脚(footer)添加代码方法

    2023-08-19 21:34:45
  • asp之家 网络编程 m.aspxhome.com