sql server 视图操作(Sql Server 视图数据的增删改查教程)
sql server 视图操作
Sql Server 视图数据的增删改查教程一、视图的基本概念
视图是用于查询的另外一种方式。 与实际的表不同,它是一个虚表;因此数据库中只存在视图的定义,而不存在视图中相对应的数据,数据仍然存放在原来的基本表中。视图是一种逻辑对象。
二、 视图能做什么
导出数据; 在导出数据时,常常需要多个表联合查询,这个时候就可以使用视图;转换字段,如把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 删除数据
小结:
如果一个视图链接了两个以上的基表,则不允许进行数据删除操作。如果视图中的列是常数或者几个字符串列值得和,那么尽管插入和更新操作时不允许的,但是却可以进行删除操作。
实验:
(一) 创建基于一个表的视图:
(二)执行删除操作结果:
(三)结果说明:
基于一个表的视图是能够执行删除操作的。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持开心学习网。如有错误或未考虑完全的地方,望不吝赐教。
- sqlserver分区查询语句(SQL Server中的集合运算: UNION, EXCEPT和INTERSECT示例代码详解)
- sqlserver表导入数据(在SQLserver数据库之间进行传表和传数据的图文教程)
- sqlserver如何生成xml文件(实现SQL Server 原生数据从XML生成JSON数据的实例代码)
- SqlServer 英文单词全字匹配详解及实现代码(SqlServer 英文单词全字匹配详解及实现代码)
- linux安装sqlserver 2008 r2(Ubuntu 下安装SQL Server教程)
- sqlserver的图形表(SQL Server纵表与横表相互转换的方法)
- sqlserver中根据类型分组(SQL SERVER 分组求和sql语句)
- sqlserver游标实例(Sql Server临时表和游标的使用小结)
- sqlserver2008手动备份方法(MSSQL 2008 自动备份数据库的设置方法)
- SqlServer索引的原理与应用详解(SqlServer索引的原理与应用详解)
- sqlserver表分区步骤(行转列之SQL SERVER PIVOT与用法详解)
- sql server提供的聚合函数(SQLServer行列互转实现思路聚合函数)
- sqlserver新建表参数错误(Sql Server中判断表、列不存在则创建的方法)
- sqlserver使用简介(SQL Server Page结构深入分析)
- sqlserver2014怎么重新激活(解决Windows 10家庭版安装SQL Server 2014出现.net 3.5失败问题)
- sqlserver带参数的存储过程(SQL Server 日期和时间的内部存储过程)
- TVB负评王连续挑战警察角色《使徒行者3》中将饰演卧底(TVB负评王连续挑战警察角色使徒行者3中将饰演卧底)
- 《精英律师》剧照首曝光,实力演员飙戏,演绎律政职场百态(精英律师剧照首曝光)
- 靳东领衔打造高精职场 新丽出品《精英律师》曝定妆照(靳东领衔打造高精职场)
- 靳东新剧《精英律师》定档,众星云集,这剧可追(靳东新剧精英律师定档)
- 精英律师 廖佳敏封印恋情曝光,顾婕马失前蹄 你个老不死的(廖佳敏封印恋情曝光)
- 以家人之名广受好评,剧情生动引起观众共鸣,演员张新成圈粉无数(以家人之名广受好评)
热门推荐
- echarts 高级图表教程(Echarts图例组件的属性与源代码)
- python编写pygame游戏怎么打包(python使用pygame模块实现坦克大战游戏)
- php中isset函数有什么功能(PHP中的empty、isset、isnull的区别与使用实例)
- 如何配置ftp服务器连接(云服务器设置ftp服务器配置怎么操作?)
- 网站503错误
- python的多线程比多进程效率高(Python中单线程、多线程和多进程的效率对比实验实例)
- apache服务器配置https(Apache Rewrite url重定向功能的简单配置)
- webpack配置项流程先后顺序(Webpack中publicPath使用详解)
- textarea换行属性(处理textarea中的换行和空格)
- canvas进阶教程(原生canvas制作画图小工具的踩坑和爬坑)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9