第十二章视图的创建和管理视图是从一个或几个基本表导出的表,它与基本表不同,是一个虚表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据存放在原来的基本表中,当基本表中的数据发生变化,从视图中查询出的数据也就随之改变。视图一经定义就可以像基本表一样被查询、删除,也可以在一个视图之上再定义新的视图,但是对视图的更新操作有限制。使用视图有下列优点:1.视图能够简化用户的操作为复杂的查询建立一个视图,用户不必键入复杂的查询语句,只需针对此视图做简单的查询即可。2.视图使用户能以多种角度看待同一数据视图机制能使不同用户从不同视角看待同一数据,适应数据库共享的需要。3.视图能够对机密数据提供安全保护对不同用户定义不同视图,使每个用户只能看到他有权看到的数据。12.1创建视图1.在SQLServerEnterpriseManager中创建视图例1查询有2门或2门以上课程都至少为85分的学生的学号及其课程数。SELECTSno, COUNT(*)FROMscoreWHEREdegree>=85GROUPBY snoHAVING COUNT(*)>=2例2查询所有选课学生的学号、姓名、选课名称及成绩。SELECT student.sno,sname,cname,degreeFROM student, score,courseWHEREstudent.sno=score.snoAND score.cno=course.cno(1)打开SQLServerEnterpriseManager,在数据库school上单击鼠标右键,在弹出的快捷菜单上选择新建”0“视图”。(2)在所出现的窗口的第一个子窗口中单击鼠标右键,将弹出一个“增加表”快捷菜单,如图12.1所示。Xm2me一运行(B)添加表C分组(G)品鑫事福输出[饿序送型排序顺序3男事?aFROEPEO4
第十二章 视图的创建和管理 视图是从一个或几个基本表导出的表,它与基本表不同,是一个虚表,数据库中只存放 视图的定义,而不存放视图对应的数据,这些数据存放在原来的基本表中,当基本表中的数 据发生变化,从视图中查询出的数据也就随之改变。视图一经定义就可以像基本表一样被查 询、删除,也可以在一个视图之上再定义新的视图,但是对视图的更新操作有限制。 使用视图有下列优点: 1. 视图能够简化用户的操作 为复杂的查询建立一个视图,用户不必键入复杂的查询语句,只需针对此视图做简单 的查询即可。 2. 视图使用户能以多种角度看待同一数据 视图机制能使不同用户从不同视角看待同一数据,适应数据库共享的需要。 3. 视图能够对机密数据提供安全保护 对不同用户定义不同视图,使每个用户只能看到他有权看到的数据。 12.1 创 建 视 图 1. 在 SQL Server Enterprise Manager 中创建视图 例 1 查询有 2 门或 2 门以上课程都至少为 85 分的学生的学号及其课程数。 SELECT sno, COUNT(*) FROM score WHERE degree>=85 GROUP BY sno HAVING COUNT(*)>=2 例 2 查询所有选课学生的学号、姓名、选课名称及成绩。 SELECT student.sno,sname,cname,degree FROM student, score,course WHERE student.sno=score.sno AND score.cno=course.cno (1) 打开 SQL Server Enterprise Manager,在数据库 school 上单击鼠标右键,在弹出的快 捷菜单上选择“新建”“视图.”。 (2) 在所出现的窗口的第一个子窗口中单击鼠标右键,将弹出一个“增加表”快 捷菜 单,如图 12.1 所示
(3)在“增加表"快捷菜单中选择“添加表.."功能项,将出现“添加表"对话框。添加表x茶视图函数coursedtpropertiesFcorstudentsyscolumnssyscommentssysdependssysfilegroupssysfilessysfilesisysforeignkeyssysindexes关闭(C)帮助Q添加(A)(4)在图12.2所示的窗口的第2个子窗口中选择创建视图所需的字段,可以指定列的别名、排序方式和规则、分组、HAVING子句上ZRi计VIEWI#置chOeFWYATTDEISE0xB1KBHE屈性图视图名VTEWI选项广GROUPBY扩展项(G)?翰出部刻WITH CUBECWITH ROLLUEDISTINCT值)一加密浏览()全部L)绑定到架构()检查选项()所有者Ledbo■顶端(T)FRERGERTWITH-TIESSQL注释Q)A关闭帮助
(3) 在“增加表”快捷菜单中选择“添加表.”功能项,将出现“添加表”对话框。 (4) 在图 12.2 所示的窗口的第 2 个子窗口中选择创建视图所需的字段,可以指定列的 别名、排序方式和规则、分组、HAVING 子句
(5)上一步完成后,单击保存按钮,出现如图12.3所示的保存视图对话框,在其中输入视图名,并单击“确定“按钮,便完成了视图的创建。X另存为保存该视图为VIEW1]取消确定2.通过视图向导创建视图(1)打开SQLServerEnterpriseManager创建视图育导xATTMENS请选择要使用的向号欢迎使用创建视图向导生好服务爵向号程商导本内导格帮助您创建新镜图,使用本商导,您可以选择提图所引用的数器库。2选择挑的所引用的一个或多个表。选择思望视图所显示的一列缺多列。命名机图井定义限制良聘K上专国国一步00取润2)在欢迎使用向导界面中单击“下一步”,出现如图12.6所示的选择数据库对话框。x创建视图向导一WYATTDENISE选择数据库选择视图将引用的数据库。数据库名称(D)-school上一步下一步>取消(3)在图12.7所示的选择表对话框中选择与视图相关联的表,单击下一步
(5) 上一步完成后,单击保存按钮,出现如图 12.3 所示的保存视图对话框,在其中输入 视图名,并单击“确定“按钮,便完成了视图的创建。 2. 通过视图向导创建视图 (1) 打开 SQL Server Enterprise Manager 2) 在欢迎使用向导界面中单击“下一步”,出现如图 12.6 所示的选择数据库对话框。 (3) 在图 12.7 所示的选择表对话框中选择与视图相关联的表,单击“下一步
创建视图自导一WYATTDENISE\SChOOIx选择对象选择视图格引用的一个或多个对象。表名表所有者包含在视图中dbo区coursedbo区scoredbostudenVteacherdbo口上一步下一步》取消(4)在图12.8所示的选择列对话框中选择视图所需要的列,单击"下一步”创建视图育导一WYATTDENISESChOOIX选择列选择一个或多个将被视图显示的列。例名数据类型选择列口dbo.course.cnochar口char口dbo.course.cname口dbo.course.tnochar口dbo.score.snochar口dbo.score.cnocharnumeric区dhn-dbo.student.snochar口dbo.student.snamechar口dbo.student.ssexchar口dbo.student.sbirthdaydatetime-h.取消《上一步下一步》(5)在图12.9所示的视图限制对话框中输入对视图的限制条件创建视图用导一WYATTDENISEx定义限材或者,使用Transact-SQL语法(WHERE子句)来限制图显示的信息。WHEREstudent.sno-score.snoANDscore.cho-course.cncA<上步下步0>职消
(4) 在图 12.8 所示的选择列对话框中选择视图所需要的列,单击“下一步” (5) 在图 12.9 所示的视图限制对话框中输入对视图的限制条件
(6)在图12.10所示的输入视图名对话框中输入视图名,单击“下一步”x创建视图自导一WYATTDENISE命名视图为视图指定名称。视图名称MVIEW2取消《上一步下一步D>x包创建WYATTDI正在完成创建视图向导6您已经完成了创建下面所显示的视图所需的各个步骤。您还可以在本备口编辑语句以自定义该视图。X自导己完成:视图己创健成功。e], [dbo][score][degree]][dbo][student]铺定)score.cno=course.c完成取消<上一步)3.使用CREATEVIEW语句创建视图用CREATEVIEW语句创建视图其表示形式为:CREATEVIEW<视图名>[(<视图属性列表>)][WITHENCRYPTION|SCHEMABINDING]AS<子查询>[WITHCHECKOPTION]视图属性列表为可选项,可全部省略或全部指定全部省略:由子查询中SELECT目标列中的诸字段组成
(6) 在图 12.10 所示的输入视图名对话框中输入视图名,单击“下一步” 3. 使用 CREATE VIEW 语句创建视图 用 CREATE VIEW 语句创建视图其表示形式为: CREATE VIEW <视图名> [(<视图属性列表>)] [WITH ENCRYPTION|SCHEMABINDING] AS <子查询> [WITH CHECK OPTION] 视图属性列表为可选项,可全部省略或全部指定 ◼ 全部省略: 由子查询中 SELECT 目标列中的诸字段组成