null第7章 视图及其应用第7章 视图及其应用视图概述1视图的创建和查询2视图的管理和维护3通过视图修改表数据4null本章重点本章重点视图的基本概念
视图的创建、修改与删除
使用视图操作表数据本章难点本章难点视图概念的理解
视图的创建、修改等操作的T-SQL语法第7章 视图及其应用第7章 视图及其应用视图概述1视图的创建和查询2视图的管理和维护3通过视图修改表数据47.1 视图概述7.1 视图概述 所谓视图(View)其实是执行查询语句后所
得到的查询结果,这个查询结果可以仿真成数据
表来使用,所以又有人称它为虚拟数据表。
虽是“虚拟”数据表,可是视图在操作上和数据
表是没什么区别的——凡是数据表可以出现的地
方,通常也就是视图可以露脸的地方,例如
SELECT * FROM 数据表名称SELECT * FROM 视图名称7.1 视图概述7.1 视图概述1、视图的基本概念
视图是一个虚拟表,其结构和数据是建立在对表的查询基础上的。所以视图是从一个或多个表中导出的,视图内容由查询语句定义生成。从表面上看,视图和真实表一样,具有结构和数据,包含一系列带有名称的列和行数据。实质上,表是视图的基础,数据库中只存储了视图定义,而不存放视图所对应的数据,视图所对应的数据存放在视图所引用的表中。
7.1 视图概述7.1 视图概述 以往当我们要查询数据时,一定是很认
真地从设计SELECT语句开始,然后执行查
询语句得到所要的结果。
例:查找选修A002号课程并且成绩及格的学生的姓名及成绩。USE xsgl
SELECT 姓名,成绩
FROM XS, CJ
WHERE XS.学号=CJ.学号
AND 课程号=‘A002’AND 成绩>=60
GO7.1 视图概述7.1 视图概述查询结果:
假如经常要以同样的条件来查询数据时,那么每次都要重复输入相同的查询语句,那一点效率都没有了。若将这个经常要重复使用的查询语句创建成视图,就不用那么麻烦了。7.1 视图概述7.1 视图概述例:
CREATE VIEW 课程及格
AS
SELECT 姓名,成绩
FROM XS, CJ
WHERE XS.学号=CJ.学号
AND 课程号=‘A002’ AND 成绩>=60
GOSELECT * FROM 课程及格7.1 视图概述7.1 视图概述“课程及格”的视图
XS表的“姓名”SELECT 姓名,成绩
FROM XS,CJ
WHERE XS.学号=CJ.学号
AND 课程号=‘A002’ AND 成绩>=60CJ表的“成绩”7.1 视图概述7.1 视图概述2、视图的作用
1) 视图可以集中数据,满足不同用户对数据的不同
要求
对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗
。
2) 简化操作。
视图大大简化了用户对数据的操作。因为在定义视图时,若视图本身就是一个复杂查询的结果集,这样在每次执行相同查询时,不必重新写这些复杂查询语句
3) 定制数据。视图能够实现让不同的用户以不同的方式看到不同或相同的数据集
7.1 视图概述7.1 视图概述4) 安全性。视图可以作为一种安全机制。通过视图用户只能查看和修改他们所能看到的数据。其他数据库或表既不可见也不可访问。
7.1 视图概述7.1 视图概述3、使用视图的注意事项
(1)只有在当前的数据库中才能创建视图
(2)视图的命名必须遵循标识符命名规则,不能与表同名
(3)不能把规则、默认值或触发器与视图相关联
(4)使用视图查询时,若其关联的基本表中添
加了新字段,则必须重新创建视图才能查
询到
(5)如果与视图相关联的表或视图被删除,则
该视图将不能再使用
第7章 视图及其应用第7章 视图及其应用视图概述1视图的创建和查询2视图的管理和维护3通过视图修改表数据47.2 视图的创建和查询7.2 视图的创建和查询1、使用管理工具创建视图
(1)展开xsgl数据库,在“视图”选项上,右键选择“新建视图”
7.2 视图的创建和查询7.2 视图的创建和查询(2)弹出“新建视图”窗口并同时弹出“添加表”对话框
7.2 视图的创建和查询7.2 视图的创建和查询(3)选择相应的列7.2 视图的创建和查询7.2 视图的创建和查询(4)保存视图7.2 视图的创建和查询7.2 视图的创建和查询(5)视图保存成功【提示】
保存视图时,实际上保存的就是视图对应的SELECT查询。
保存的是视图的定义,而不是SELECT查询的结果。7.2 视图的创建和查询7.2 视图的创建和查询2、使用T-SQL语句创建视图
CREATE VIEW 视图的名称
AS 定义视图的SELECT语句不能使用INTO、ORDER BY、COMPUTE或COMPUTE BY7.2 视图的创建和查询7.2 视图的创建和查询练习:
在电子商城数据库WebShop中创建以价格升序排列的“促销”商品的视图vw_SaleGoods。7.2 视图的创建和查询7.2 视图的创建和查询例7.1 创建信息管理专业学生成绩视图CREATE VIEW 信息管理专业学生成绩视图
AS
SELECT cj.学号,xs.姓名,cj.课程号,kc.课程名,cj.成绩
FROM xs,cj,kc
WHERE xs.学号=cj.学号 AND cj.课程号=kc.课程号
AND xs.专业=‘信息管理’
GO7.2 视图的创建和查询7.2 视图的创建和查询例:创建女生档案视图NXS_VIEW ,内容包括所有女生的档案
例:创建学生成绩视图XSCJ_VIEW,包括所有学生所学课程的课程名和成绩
7.2 视图的创建和查询7.2 视图的创建和查询3、使用视图查询
创建视图后,就可以像查询基表那样对视图
进行查询。
例7.2 在信息管理专业学生成绩视图中查询姓名为“王燕”同学的成绩
SELECT * FROM 信息管理专业学生成绩视图
WHERE 姓名=‘王燕’第7章 视图及其应用第7章 视图及其应用视图概述1视图的创建和查询2视图的管理和维护3通过视图修改表数据47.3 视图的管理和维护7.3 视图的管理和维护1、查看视图的定义信息
7.3 视图的管理和维护7.3 视图的管理和维护查看视图定义信息
sp_helptext 视图名7.3 视图的管理和维护7.3 视图的管理和维护2、查看视图与其他对象的依赖关系
sp_depends 视图名7.3 视图的管理和维护7.3 视图的管理和维护3、视图的修改
ALTER VIEW 视图的名称
AS 定义视图的SELECT语句必须是一个已存在于数据库中的视图名称7.3 视图的管理和维护7.3 视图的管理和维护例7.5 修改信息管理专业学生成绩视图,要求包括“专业”字段ALTER VIEW 信息管理专业学生成绩视图
AS
SELECT cj.学号,xs.姓名,cj.课程号,kc.课程名,cj.成绩,xs.专业
FROM xs,cj,kc
WHERE xs.学号=cj.学号 AND cj.课程号=kc.课程号
AND xs.专业=‘信息管理’
GO7.3 视图的管理和维护7.3 视图的管理和维护4、视图的删除
DROP VIEW 视图的名称[,…n]当一次删除多个视图时,视图名称之间用逗号隔开7.3 视图的管理和维护7.3 视图的管理和维护例7.6 删除信息管理专业学生成绩视图DROP VIEW 信息管理专业学生成绩视图第7章 视图及其应用第7章 视图及其应用视图概述1视图的创建和查询2视图的管理和维护3通过视图修改表数据47.4 通过视图修改表数据7.4 通过视图修改表数据 视图是一个虚表,可以当作一个表来操作。
表数据操作包括查询、插入、修改与删除。
视图的建立可以基于一个基本表,也可能基
于多个基本表。所以在做插入、修改与删除这些
更新操作时一定要注意,每一次更新操作只能影
响一个基本表的数据。
7.4 通过视图修改表数据7.4 通过视图修改表数据1、查询数据
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
查询视图的操作与查询基本表一样。
例:通过NXS_VIEW视图查询信息系女生的学号、姓名与总学分。SELECT 学号,姓名,总学分
FROM NXS_VIEW
WHERE 专业='信息管理'7.4 通过视图修改表数据7.4 通过视图修改表数据例:创建学生成绩视图XSCJ_VIEW,包括所有学生所学课程的课程名称和成绩。CREATE VIEW XSCJ_VIEW
AS
SELECT XS.学号,姓名,系名,课程名称,成绩
FROM XS,CJ,KC
WHERE XS.学号=CJ.学号
AND CJ.课程编号=KC.课程编号7.4 通过视图修改表数据7.4 通过视图修改表数据 创建学生平均成绩视图xsavg_view,通过视图xsavg_view查询平均分在75分及以上学生的情况,并按平均分降序排列,当平均分相同时按学号升序排列。CREATE VIEW xsavg_view
AS
SELECT 学号,姓名,AVG(成绩) AS 平均成绩
FROM XSCJ_VIEW
GROUP BY 学号,姓名7.4 通过视图修改表数据7.4 通过视图修改表数据按要求查询视图SELECT *
FROM xsavg_view
WHERE 平均成绩>=75
ORDER BY 平均成绩 DESC,学号7.4 通过视图修改表数据7.4 通过视图修改表数据2、插入数据记录
向视图插入数据时,使用INSERT语句。
例:向视图NXS_VIEW插入如下一条记录INSERT INTO NXS_VIEW
VALUES('2008010101','白云','女','1986-10-20','信息',58,NULL,NULL)7.4 通过视图修改表数据7.4 通过视图修改表数据NXS_VIEWXSINSERT INTO NXS_VIEW
VALUES('2008010101','白云','女','1986-10-20','信息',58,NULL,NULL)7.4 通过视图修改表数据7.4 通过视图修改表数据注意:
(1)在做插入操作时,如果仅是将部分列的数据插入到表中,则必须保证未被插入数据的列允许哦空例,如是上例中的“备注”列。如果未被插入数据的列不允许为空值且没有默认值,则该插入操作不被执行。
(2)当视图所依赖的基本表有多个时,不能向该视图插入数据,因为这样将会影响多个基本表。7.4 通过视图修改表数据7.4 通过视图修改表数据3、修改数据记录
使用UPDATE语句可以通过视图修改基本表的数据
例:通过NXS_VIEW视图将学号为2008010101学生的姓名改为“白小云”SELECT * FROM NXS_VIEW
UPDATE NXS_VIEW
SET 姓名=‘白小云’
WHERE 学号=‘2008010101’7.4 通过视图修改表数据7.4 通过视图修改表数据4、删除数据记录
使用DELETE语句可以通过视图删除基本表的数据
例:通过NXS_VIEW视图删除姓名为’白小云’的记录SELECT * FROM NXS_VIEW
DELETE NXS_VIEW
WHERE 姓名=‘白小云’本章小结本章小结本章主要讨论了视图的概念,视图的创建、修改
与删除,以及通过视图来查询、插入、修改与删
除表数据。
视图是数据的一个独立的对象,视图是一个虚表。
视图所有的操作都可以通过企业管理器与T---SQL语句来完成。T---SQL语句是学习的重点与难点。
视图的定义操作涉及到的T---SQL语句有:本章小结本章小结 创建
CREATE VIEW [〈OWNER〉.] VIEW –NAME [(COLUMN- NAME[,…])]
AS SELECT-STATEMENT
修改
ALTER VIEW [〈OWNER〉.] VIEW –NAME [(COLUMN- NAME[,…])]
AS SELECT-STATEMENT
删除
DROP VIEW-NAME [,…N]
(4) 使用视图进行数据操作的方法与表操作所使用的命令语句基本相同,只需要在语句中将表名称改为视图名称即可。但一定要注意,在进行插入,修改与删除操作时,每一次新操作只能影响一个基本表的数据。习题习题1、什么是视图?它和表有什么区别?
2、在SQL-server2005中,使用视图的好处有哪些?