SqlServer视图(view)

--上节回顾
--1.什么是事务
--2.事务的特征
--原子性、一致性、隔离性、持久性
--3.与事务相关的t-sql命令
--开启事务:begin transaction
--提交事务:commit transaction
--回滚事务:rollback transaction


----------------视图------------------
--首先思考一个问题:查询上机记录信息。
--计算机名、会员名称、上机开始时间、上机结束时间、金额


select  cp.chvComputerName, ci.chvUserName, ri.dtmStart, ri.dtmEnd, ri.mnyFee
from TblRecordInfo as ri--as表示为表取别名
inner join TblCardInfo as ci on ri.intCardId=ci.intCardId--内连接用inner join,同时应该为两张表指定连接字段
inner join TblComputer as cp on ri.intComputerId=cp.intComputerId

--评价:上述书写sql查询语句的方式太繁琐,每次书写的时候都会感觉很复杂

--思考:到底有木有一种非常方便的操作方式,能够实现一样的查询效果

--答案:肯定有:视图来解决

--什么是视图

--注意点:
--1.视图中的数据并没有保存在视图中,它仅仅保留查询的结果
--  这些记录是保存在表当中的

--如何创建视图,创建视图有相应的语法
create view view_RecordDetail
as
  select  cp.chvComputerName, ci.chvUserName, ri.dtmStart, ri.dtmEnd, ri.mnyFee
  from TblRecordInfo as ri--as表示为表取别名
  inner join TblCardInfo as ci on ri.intCardId=ci.intCardId--内连接用inner join,同时应该为两张表指定连接字段
  inner join TblComputer as cp on ri.intComputerId=cp.intComputerId
 
 --如何使用视图:使用方式和表一样
 select * from view_recorddetail
 go
 
 --视图是不是只能用来进行查询操作???
 --不是的,视图也可以用来进行新增\修改\删除
 
 --利用学生信息表进行视图的增删改操作
 create table TblStudent
 (
   intStudentId int primary key identity,
   chvStudentName nvarchar(30) not null,
   dtmBirthday datetime null,
   chvCeilPhone nvarchar(11) not null
 )
 go
 
 --创建视图:学生id、学生姓名、学生出生日期
 create view view_Student
 as
   select intstudentid, chvstudentname,dtmbirthday from TblStudent
  
 go

--通过视图完成对学生信息的新增
insert into view_student
(chvstudentname,dtmbirthday)
values
('zhangsan', '1989-9-9')
go
--上述sql会执行失败,原因是:学生的手机号不能为空

--如果修改视图
alter view view_student
as
   select intstudentid, chvstudentname,dtmbirthday, chvCeilPhone from TblStudent
go  
--新增数据
insert into view_student
(chvstudentname,dtmbirthday, chvCeilPhone)
values
('zhangsan', '1989-9-9','13698766666')
go
--验证,数据是在视图中还是在表中
select * from TblStudent;
go
select * from view_student
 
--通过视图进行数据修改

update view_student
  set chvceilphone = '13666666666'
where chvstudentname = 'zhangsan'
go

select * from view_student
go

--通过视图删除数据
delete from view_student
where chvstudentname='zhangsan'
go

select * from view_student;
select * from TblStudent;
go

--如何删除视图
--如何视图存在,则删除;否则不执行删除操作
if exists (select 1 from sys.sysobjects where name='view_student')
begin
  print '视图存在,即将删除...'
  drop view view_student
end
else
begin
  print '视图不存在'
end

alter view view_RecordDetail
as
  select cp.intComputerId, ci.intCardId,  cp.chvComputerName, ci.chvUserName, ri.dtmStart, ri.dtmEnd, ri.mnyFee
  from TblRecordInfo as ri--as表示为表取别名
  inner join TblCardInfo as ci on ri.intCardId=ci.intCardId--内连接用inner join,同时应该为两张表指定连接字段
  inner join TblComputer as cp on ri.intComputerId=cp.intComputerId
 
select * from view_recorddetail
go

--如果执行下面的语句:
--A:失败  B:tblcomputer中的记录被删除 
--c:recoredinfo表中的记录被删除  d:B+C
delete from view_recorddetail
where intComputerId=2
--答案:A  
--原因:视图或函数 'view_recorddetail' 不可更新,因为修改会影响多个基表。


--是否是只要视图由多张表组成,那么就不能执行删除操作
--否定的,是可以删除的,只是要满足指定的条件

 

 


 

转载于:https://www.cnblogs.com/changjiang/archive/2012/07/23/2605292.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android中的广播Broadcast详解

今天来看一下Android中的广播机制,我们知道广播Broadcast是Android中的四大组件之一,可见他的重要性了,当然它的用途也很大的,比如一些系统的广播:电量低、开机、锁屏等一些操作都会发送一个广播,具体的And…

sql check约束_在SQL中使用CHECK约束

sql check约束Basically, CHECK constraint is used to LIMIT in columns for the range of values. We can use this constraint for single or multiple columns. 基本上, CHECK约束用于限制值范围内的列 。 我们可以将此约束用于单列或多列。 In single column,…

.NET线程池

摘要 深度探索 Microsoft .NET提供的线程池, 揭示什么情况下你需要用线程池以及 .NET框架下的线程池是如何实现的,并告诉你如何去使用线程池。 内容 介绍 .NET中的线程池 线程池中执行的函数 使用定时器 同步对象的执行 异步I/O操作 监视线程池 死锁 有关…

折线分割平面

Input输入数据的第一行是一个整数C,表示测试实例的个数&#xff0c;然后是C 行数据&#xff0c;每行包含一个整数n(0<n<10000),表示折线的数量。Output对于每个测试实例&#xff0c;请输出平面的最大分割数&#xff0c;每个实例的输出占一行。Sample Input2 1 2Sample Ou…

《c++特性》

目录多态构造函数和析构函数存在多态吗&#xff1f;虚函数表虚析构函数纯虚函数和抽象类运行时多态和编译时多态的区别继承设计实例指针对象和普通对象的区别正确初始化派生类方式继承和赋值的兼容规则protected 和 private 继承基类与派生类的指针强制转换如何用C实现C的三大特…

Scala中的while循环

在Scala中的while循环 (while loop in Scala) while loop in Scala is used to run a block of code multiple numbers of time. The number of executions is defined by an entry condition. If this condition is TRUE the code will run otherwise it will not run. Scala中…

Linux操作系统启动过程

在做开发的过程中&#xff0c;突然发现&#xff0c;要对系统做一些有意义的改变&#xff0c;必须要对操作系统的启动过程有一定的了解&#xff0c;不然就是修改你都不知道从哪里下手啊&#xff0c;然后就是找来资料看&#xff0c;去网上看别人的博客&#xff0c;有了前一周一些…

方法命名的区别

GetDecimalFromString ExtractDecimal 这2个方法名那个比较好呢。上边的明显的是中式英语&#xff0c;单词拼凑而成的。下边的更加流畅一些。方法名称取名还是很有要求的。要通俗易懂还要符合文法。从上边的可以扩展出什么想法呢。 ExtractDecimalExtractDoubleExtractInt16Ext…

工作排序问题

Problem statement: 问题陈述&#xff1a; Given an array of jobs where every job has a deadline and a profit. Profit can be earned only if the job is finished before the deadline. It is also given that every job takes a single unit of time, so the minimum p…

牛客网与leetcode刷题(高频题中简单or中等的)

目录1、反转链表2、排序3、先序中序后序遍历4、最小的k个数5、子数组的最大累加和6、 用两个栈实现队列7、142. 环形链表 II8、20. 有效的括号9、最长公共子串(动态规划),磕磕绊绊10、二叉树之字形层序遍历11、重建二叉树12、LRU缓存13、合并两个有序链表15、大数加法16、一个二…

AMUL的完整形式是什么?

AMUL&#xff1a;阿南德牛奶联盟有限公司 (AMUL: Anand Milk Union Limited) AMUL is an abbreviation of Anand Milk Union Limited. It is an Indian milk product cooperative dairy organization that is based in the small town of Anand in the state of Gujarat. AMUL …

mochiweb 源码阅读(十一)

大家好&#xff0c;今天周六&#xff0c;继续接着上一篇&#xff0c;跟大家分享mochiweb源码。上一篇&#xff0c;最后我们看到了mochiweb_socket_server:listen/3函数&#xff1a; listen(Port, Opts, State#mochiweb_socket_server{sslSsl, ssl_optsSslOpts}) ->case moch…

Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能 (转)

转载请注明出处&#xff1a;http://blog.csdn.net/guolin_blog/article/details/9255575 最 近项目中需要用到ListView下拉刷新的功能&#xff0c;一开始想图省事&#xff0c;在网上直接找一个现成的&#xff0c;可是尝试了网上多个版本的下拉刷新之后发现效果都不怎么理 想。有…

Python中的append()和extend()

列出append()方法 (List append() method) append() method is used to insert an element or a list object to the list and length of the List increased by the 1. append()方法用于将元素或列表对象插入列表&#xff0c;并且列表长度增加1。 Syntax: 句法&#xff1a; …

红黑树的实现

目录1、红黑树原理1、红黑树性质2、变换规则&#xff08;从插入结点的角度来讲&#xff09;1.变色2.左旋3.右旋3、删除结点需要注意的地方2、代码1、定义结点以及构造函数2、定义红黑树类以及声明它的方法3、左旋4、右旋5、插入操作6、修正操作7、删除操作3、参考链接1、红黑树…

118 - ZOJ Monthly, July 2012

http://acm.zju.edu.cn/onlinejudge/showContestProblems.do?contestId339 都是赛后做的。。。弱爆了 A题是找由2和5组成的数字的个数 直接打个表就行了 只是比赛的时候不知道怎么打表啊。。 View Code #include<cstdio> #include<cstring> #include<algorith…

edp1.2和edp1.4_EDP​​的完整形式是什么?

edp1.2和edp1.4EDP​​&#xff1a;电子数据处理 (EDP: Electronic Data Processing) EDP is an abbreviation of Electronic Data Processing. It alludes to the functioning of operations of commercial data, documents processing of storing, with the use of a compute…

高效读书心得

1.尽量阅读中文版 虽然有人英文很强&#xff0c;有的翻译很差&#xff0c;但AnyWay 中文阅读与理解的时间&#xff0c;略读与快速定位感兴趣内容的速度还是要快一些。 2.即时批注、总结笔记与交流 虽然爱书&#xff0c;但发现最有效的读书方式还是不断的制造脂批本&…

《MySQL——增删改查以及常用语法》

目录登录和退出MySQL服务器基本语法&#xff08;增删改查&#xff09;登录和退出MySQL服务器 # 登录MySQL 密码 $ mysql -u root -p12345612 # 退出MySQL数据库服务器 exit;基本语法&#xff08;增删改查&#xff09; -- 显示所有数据库 show databases;-- 创建数据库 CREA…

WCF简介

一、简介 WCF是Windows Communication Foundation缩写&#xff0c;是Microsoft为构建面向服务的应用提供的分布式通信编程框架&#xff0c;是.NET Framework 3.5的重要组成部分。使用该框架&#xff0c;开发人员可以构建跨平台、安全、可靠和支持事务处理的企业级互联应用解决方…