SQL Server数据库 第八章 视图及其应用
- 格式:ppt
- 大小:283.00 KB
- 文档页数:30
SQL的视图 1、什么是视图 视图是虚拟的表,是⼀个存储的查询,虽然不需要实际的物理存储,但是也被看作是⼀个数据库对象,对⽤户来说基本上透明的;它与包含数据的表不⼀样,它不包含任何列或数据,它只是包含使⽤时动态检索数据的查询,并且只包含⼀个SELECT语句(不限制⼦查询)。
视图实际上是由预定义查询形式的表所组成的。
视图与表之间的主要区别在于:表占据物理空间,包含实际的饿数据;⽽视图不需要物理空间,不包含数据,它只是从表⾥引⽤数据。
视图只保存在内存⾥,⽽且只需要保存其定义本⾝(查询语句),也就是说视图所需的空间只是定义语句所需要的。
2、视图的⽤途 (1)简化数据访问,简化复杂的SQL,对数据库⾥的数据进⾏归⼀化处理,达到重⽤SQL语句; (2)对数据进⾏保护,起到安全的作⽤,例如只让⽤户访问部分字段信息; (3)维护摘要数据; (4)更改数据格式和表⽰,视图仅仅是⽤来查看存储在别处数据的⼀种设施。
总之,视图具有简单、安全和数据独⽴的优势。
3、视图的使⽤ 在数据库⾥,视图的使⽤⽅式与表是⼀样的;当创建⼀个视图时,实际上是在数据库⾥执⾏了⼀个SELECT语句。
(1)表创建视图CREATE VIEW view_name ASSELECT*FROM table_name[WHERE exp1][WITH CHECK OPTION][GROUP BY] WITH CHECK OPTION选项的⽬的是确保全部的UPDATE和INSERT语句满⾜视图定义⾥的WHERE条件⼦句,这样保证了引⽤的完整性。
WITH CHECK OPTION有两个选项,CASCADED和LOCAL,其中CASCADED是默认选项。
这两个属性都会检查视图的完整性约束和新视图的定义条件,但是LOCAL不检查底层的表,⽽CASCADED会检查。
所以,现对于来说CASCADED更安全些。
(2)视图创建视图CREATE view2 ASSELECT*FROM view1; 如果从基表和从另⼀个视图创建视图具有⼀样的难度和效率,那么⾸选从基表创建视图。
数据库视图的定义及使用实验目的:掌握视图的用法,加深对视图作用的理解。
实验内容:1、创建、修改和删除视图。
2、利用视图进行查询。
实验步骤:说明:对视图的创建、修改和删除均可在可视化界面下操作。
在SQL Server企业管理器中,依次选择数据库――XSGL――视图――鼠标右击――新建视图。
然后通过单击按钮或右击鼠标第一格的空白区域,选择弹出菜单中的“添加表”。
然后拖拽主键到外键,建立关联,点击字段左边的方框选择输出字段。
仅以命令方式来操作:一、视图的创建:1.创建信息系学生信息的视图:create view IS_Student as select sno, sname, sage from student where sdept='IS'2. 创建信息系选修了1号课程的学生的视图:create view IS_S1 as select student.sno, cno, grade from student, sc where student.sno=sc.sno and sdept='IS' and cno='1'3. 建立信息系选修了1号课程且成绩在90分以上的学生的视图: create view as IS_S2 asselect * from IS_S1 where grade>=904. 创建一个反映学生出生年份的视图:create view BT_S(sno, sname, 出生年份) asselect sno, sname, year(date())- sage from student5. 将所有女生的记录定义为一个视图:create view F_student as select * from student where ssex='女'6. 将所有学生的学号和他的平均成绩定义为一个视图:create view S_G(sno, avg_grade) as select sno,avg(grade) from scgroup by sno二、视图结构的修改:6. 将视图F_student修改为信息系的所有女士的视图SQL Server中: alter view F_student as select * from student where ssex='女' and sdept='IS'说明: 视图结构的修改的AS 后的Select语句与创建视图的完全一致, 引入结构修改的目的是为了避免与视图相关的数据库对象的变换, 如触发器, 关联等三、查询视图7. 在信息系的学生视图中查询年龄小于20岁的学生:select * from IS_Student where sage<208. 查询信息系选修了1号课程的学生:select sc.sno, sname from IS_Student, scwhere IS_Student.sno=sc.sno and cno= '1'9. 在视图S_G中查询平均成绩在90分以上的学生的学号和平均成绩:Select * from S_G where avg_grade >=90四、更新视图:10.将信息系学生视图IS_Student中学号为”95002”的学生姓名改为”刘辰”: update IS_Student set sname='刘辰' where sno='95002'比较: update IS_Student set sname=’刘辰’ wheresno=’95003’ 此语句不能实现数据的更新.11. 向信息系学生视图IS_Student中插入一个新的学生记录, 学号为95029,姓名为”赵新”, 年龄为20岁:insert into IS_Student values('95029', '赵新',20)12. 删除信息系学生视图IS_Student中学号为95004的学生的记录:delete from IS_Student where sno='95029'五、删除视图:13. 删除视图IS_S1:drop view IS_S1思考:1. 创建所有学生的基本信息和选课信息的视图2. 基于上述视图查询各系学生各门功课的平均成绩.。
DROP VIEW [数据库名.][框架名称.]视图名[ , …n]
使用DROP VIEW 一次可删除多个视图,删除视图对基表不产生任何影响。
例如,语句DROP VIEW AA ,BB 可同时删除视图对象AA 和BB 。
【任务8.8】 删除视图View1。
在新建查询中输入如下语句,结果如图8.10
所示。
DROP VIEW View1
图8.10 删除视图
8.3 使用SSMS 管理视图
也可以使用SSMS 工具进行创建、删除等管理视图的操作。
8.3.1 使用SSMS 创建视图
选择【新建视图】命令。
打开SSMS ,在【对象资源管理器】中,右键单
击【视图】节点,在弹出的菜单中选择【新建视图】,可以创建视图。
【任务8.9】 创建View4视图。
(1)选择【新建视图】命令。
打开SSMS ,在【对象资源管理器】中,右键单击【视图】节点,在弹出的菜单中选择【新建视图】,如图8.11所示。
(2)在添加表窗口中选择基表。
在出现的添加表窗口中,选中要添加表,然后单击【添加】按钮,也可以根据需要添加视图或函数,这里我们添加Buyers 和
Sales 两个表,添加完毕后,单击【关闭】按钮关闭对话框,如图8.12所示。
图8.11 选择【新建视图】命令 图8.12在添加表对话框中添加需要的表 微课:使用SSMS 创建视图。
SQL SERVER视图的使用一、简介视图可以被看成是虚拟表或存储查询。
可通过视图访问的数据不作为独特的对象存储在数据库内。
数据库内存储的是 SELECT 语句。
SELECT 语句的结果集构成视图所返回的虚拟表。
用户可以用引用表时所使用的方法,在 Transact-SQL 语句中通过引用视图名称来使用虚拟表。
使用视图可以实现下列任一或所有功能:将用户限定在表中的特定行上。
例如,只允许雇员看见工作跟踪表内记录其工作的行。
将用户限定在特定列上。
例如,对于那些不负责处理工资单的雇员,只允许他们看见雇员表中的姓名列、办公室列、工作电话列和部门列,而不能看见任何包含工资信息或个人信息的列。
将多个表中的列联接起来,使它们看起来象一个表。
聚合信息而非提供详细信息。
例如,显示一个列的和,或列的最大值和最小值。
通过定义 SELECT 语句以检索将在视图中显示的数据来创建视图。
SELECT 语句引用的数据表称为视图的基表。
在下例中,pubs 数据库中的 titleview 是一个视图,该视图选择三个基表中的数据来显示包含常用数据的虚拟表:CREATE VIEW titleviewASSELECT title, au_ord, au_lname, price, ytd_sales, pub_idFROM authors AS aJOIN titleauthor AS ta ON (a.au_id = ta.au_id)JOIN titles AS t ON (t.title_id = ta.title_id)之后,可以用引用表时所使用的方法在语句中引用 titleview。
SELECT * FROM titleview一个视图可以引用另一个视图。
例如,titleview 显示的信息对管理人员很有用,但公司通常只在季度或年度财务报表中才公布本年度截止到现在的财政数字。
可以建立一个视图,在其中包含除 au_ord 和 ytd_sales 外的所有titleview 列。
《数据库原理与应用》课程教学大纲一. 适用对象适用于本科学生。
二. 课程性质数据库应用技术是计算机科学中的核心技术之一,以其为核心的各种数据库应用管理,无可争议地改变了政府部门和企事业单位的运营和管理方式。
随着数据库的应用广度和深度的扩展,不单是计算机和信心技术IT从业者,包括技术管理、工程管理甚至决策人员在内的众多行业的读者都开始关心数据库技术。
今天,理解数据库概念以及掌握相关应用技术已经成为人们,特别是青年一代必备的技能。
本课程系统讲述数据库系统的基础理论、基本技术和基本方法。
内容包括:数据库系统的基本概念、数据模型、关系数据库及其标准语言SQL、数据库安全性和完整性的概念和方法、关系规范化理论、数据库设计方法和步骤,数据库恢复和并发控制等事务管理基础知识,关系查询处理和查询优化等。
前序课程:计算机基础、C语言。
三. 教学目的1. 掌握数据库技术的基本概念、原理、方法和技术。
2. 掌握SQL语言查询和编程的基本技术,具备SQL语言编程能力3. 掌握数据库系统安装、配置和数据库管理和维护的基本技能。
4. 掌握设计数据库的理论和基本方法,具备数据库设计的能力5. 了解数据库技术的最新发展。
四. 教材及学时安排教材:赵明渊,数据库原理与应用教程——SQL Server 2014,清华大学出版社,2018年9月学时安排:讲课32学时,实验32学时,共计64学时五. 教学要求(按章节详细阐述);第1章数据库系统概论教学要求:理解数据库和数据库系统的概念;掌握数据库系统的组成,掌握数据库管理系统的功能和组成;掌握数据模型的概念和数据模型的类型;掌握设计数据库的基本方法,具备数据库设计的能力;掌握依据需求分析进行概念设计和逻辑设计的技术和方法,具备根据需求分析阶段收集到的信息画出E-R图,并将E-R图转化为关系模式的能力。
内容要点:1.1:数据库系统1.2:数据模型1.3:数据库系统结构1.4:数据库设计第2章关系数据库系统模型教学要求:掌握关系模型的数据结构、关系的完整性以及关系操作等;掌握关系代数的运算规则;理解关系演算的运算规则;了解SQL语言的特点。
第8章视图的创建与操作使用T-SQL创建与管理视图(外模式)。
8.4.1 使用T-SQL创建视图使用CREATE VIEW命令创建视图,其语法如下:CREATE VIEW 视图名AS SELECT查询子句在创建视图前应考虑如下准则。
●只能在当前数据库中创建视图。
如果使用分布式查询创建视图,则新视图所引用的表和视图可以存在于其他数据库甚至其他服务器中。
●视图名称必须遵循标识符的规则。
●可以在其他视图的基础上创建视图。
●创建视图的查询不能包含ORDER BY子句,除非在SELECT查询语句的SELECT子句后有一个TOP选项。
●不能为视图定义全文索引。
●不能创建临时视图,也不能对临时表创建视图。
下列情况下必须指定视图中列的名称。
●视图中的列是算术表达式、内置函数或常量派生而来的。
●视图中允许有两列或多列具有相同的名称(通常由于视图定义中涉及多个表的连接,因此来自两个或多个不同表的列可能具有相同的名称)。
●希望为视图中的列指定一个与其源列不同的名称时,可以在视图中重新命名列,无论重命名与否,视图列都会继承其源列的数据类型。
若无需在创建视图时指定列名时,SQL Server会为视图中的列指定与创建视图的查询所引用的列相同的名称和数据类型。
选择列表可以是表中列名的完整列表,也可以是其部分列表。
【例8-8】在图书管理数据库“Library”中,由图书表“Book”创建出人民邮电出版社出版的图书视图“View_BookPostTel”。
(1)在SSMS窗口中,单击“新建查询”按钮,在【查询编辑器】中输入如下代码:USE LibraryGOCREATE VIEW View_BookPostTel --创建视图AS --为以下子查询SELECT BID,Bname,Author,Publisher,Price --子查询投影的各列FROM Book --子查询的表WHERE Publisher='人民邮电出版社' --子查询的选择(2)执行上面的T-SQL语句后,运行结果如下:命令已成功完成。
数据库技术(SQLServer)习题与参考答案第一章:1、SQL Server 2005有哪些新增特性?答:SQL Server 2005的新特性主要体现在企业数据管理、开发人员生产力、商务智能三个方面。
企业数据管理体现在高可用性、管理工具、安全性和可伸缩性;开发人员生产力体现在Common Language Runtime集成、集成XML、Transact-SQL增强和SQL服务代理;商务智能体现在分析服务、数据转换服务、报表服务和数据挖掘。
2、SQL Server 2005安装的软件和硬件环境是什么?答:SQL Server 2005安装的软件和硬件环境参见教材6。
3、SQL Server 2005有哪些版本?有哪些服务组件?答:SQL Server 2005包括企业版、标准版、工作组版、开发版和简易版五个版本,服务组件主要有SQL Server 数据库引擎、Analysis Services、Reporting Services、Notification Services、Integration Services等。
4、什么是实例?经常提到的SQL Server 2005服务器和服务器实例是否具有相同的含义?答:实例就是SQL服务器引擎,每个SQL Server数据库引擎实例各有一套不为其他实例共享的系统及用户数据库。
一个SQLServer服务器就是一个实例,一台计算机上,可以安装多个SQLSERVER,每个SQLSERVER就可以理解为是一个实例。
5、默认实例和命名实例有何差别?在安装和使用上有何不同?答:实例又分为“默认实例”和“命名实例”,如果在一台计算机上安装第一个SQLSERVER2005命名设置保持默认的话,那这个实例就是默认实例。
一台计算机上最多只有一个默认实例,也可以没有默认实例,默认实例名与计算机名相同。
除默认实例外,所有数据库引擎实例都由安装该实例的过程中指定的实例名标识。
SQLServer2008R2数据库技术及应用(第3版)-配套习题《SQL Server 2008 R2数据库技术及应用(第3版)》选择题及答案说明:以下选择题除包含了本教材中的选择题外,还扩充了部分选择题和参考答案,供读者学习使用。
第1章数据库系统认知1.数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是(A )。
A.DBS包括DB和DBMS B.DBMS包括DB和DBSC.DB包括DBS和DBMS D.DBS就是DB,也就是DBMS2.下面列出的数据库管理技术发展的3个阶段中,没有专门的软件对数据进行管理的阶段是(D)。
I.人工管理阶段II.文件系统阶段III.数据库阶段A.Ⅰ和Ⅱ B.只有Ⅱ C.Ⅱ和Ⅲ D.只有Ⅰ3.描述数据库整体数据的全局逻辑结构和特性的是数据库的(A )。
A.模式 B.内模式C.外模式4.在修改数据结构时,为保证数据库的数据独立性,只需要修改的是(C)。
A.模式与外模式B.模式与内模式C.三级模式之间的两层映射 D.三级模式5.下列4项中,不属于数据库系统特点的是( C )。
A.数据共享B.提高数据完整性C.数据冗余度高D.提高数据独立性6.数据模型的三个要素是(B )。
A.实体完整性、参照完整性、域完整性B.数据结构、数据操作、数据完整性C.数据增加、数据修改、数据查询D.外模式、模式、内模式7.数据管理技术发展阶段中,文件系统阶段与数据库系统阶段的主要区别之一是数据库系统(B)。
A.有专门的软件对数据进行管理B.采用一定的数据模型组织数据C.数据可长期保存D.数据可共享8.下列选项中(A)不是数据库系统的特点。
A.数据加工B.数据共享C.关系模型D.减少数据冗余9.数据库系统的数据独立性体现在(B)。
A.不会因为数据的变化而影响到应用程序B.不会因为数据存储结构与数据逻辑结构的变化而影响应用程序C.不会因为存储策略的变化而影响存储结构D.不会因为某些存储结构的变化而影响其他的存储结构10.用户或应用程序看到的那部分局部逻辑结构和特征的描述是(C)模式。