SQL视图的创建与使用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
USE jwgl GO CREATE VIEW student_view3 WITH ENCRYPTION /* 加密视图 */ AS SELECT course.course_name AS 课程名 , book.book_name AS 书 名 , book.publish_company AS 出版社 , book.author AS 作者 FROM course , book , class_course WHERE (course.book_id = book.book_id AND class_course.course_id= course.course_id) AND (class_course.class_id = 'g99402')
本节首页
15
7.4.4 创建包含集合函数的视图
在视图定义中可以包含GROUP BY和集合函数,从而将这些汇总数据放到 一个“可见”的表中,允许用户对它们做进一步的查询。要注意,出现在 SELECT子句中的列名,要么包含在集合函数中,要么包含在 GROUP BY 子句中。
【例9-4】 使用集合函数SUM和GROUP BY子句以student_course表为基表, 创建一个名为“student_sum_view4”、能显示所有学生学号和总成绩的视 图。 USE jwgl GO CREATE VIEW student_sum_view4 (学号 , 总成绩) AS SELECT student_id , sum(grade) FROM student_course GROUP BY student_id 注意:与水平视图和投影视图不同,本例产生的视图中的行与基本表中的 行不是一一对应的,它是一些行数据的汇总,因此,不能通过视图来修改 数据。
7.4.2 创建投影视图
如果限制用户只能存取表中的部分列的数据,那么,使用这种方 法创建的视图就称为投影视图,即表中列的子集。
【例9-2】创建一个名为“studdent_view2” 的视图,它从数据库 JWGL的student表中查询出性别为“男”的所有学生的学号、姓 名、性别、班级、家庭住址、入学时间、出生年月资料。 USE jwgl GO CREATE VIEW student_view2 AS SELECT student_id AS 学号 , student_name AS 姓名 , sex AS 性别 , class_id AS 班级 , home_addr AS 家庭住址 , entrance_date AS 入学时间 , birth AS 出生年月 FROM student WHERE sex=1 WITH CHECK OPTION
本节首页
17
7.5
查看视图信息
使用系统存储过程查看视图信息 sp_help 数据库对象名称 sp_helptext 视图(触发器、存储过程) sp_depends 数据库对象名称
1. 使用系统存储过程 ① 查看视图的名称、拥有者及创建日期等信息 sp_help student_view1 ② 查看视图的定义脚本 sp_helptext student_view1 ③查看数据的来源 sp_depends student_view1 2. 使用SQL Server Management Studio查看视图 (P164)
他Transact-SQL语句混合使用。
⑤ 尽量避免使用外连接创建视图。
6
7.2.2 使用SQL Server Management Studio创建视图
假设要从student表中建立一个性别为“男”、 包含 student_id、student_name、class_id、sex四列信息的视 图。 使用SQL Server Management Studio创建视图的具体步骤 如下:
项目7 创建与使用视图
7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 视图概述 创建视图 使用视图的优点和缺点 创建视图示例 视图信息的查看 视图的修改、删除与重命名 视图数据的查询、插入、修改与删除 视图的安全性
项目7 创建与使用视图
学习目标:
1、理解视图的概念; 2、掌握视图的创建、查看、修改、删除与重命名; 3、掌握视图数据的查询、插入、修改与删除; 4、掌握视图安全性的常用设置。
本节首页
14
7.4.3 创建联合视图
使用视图的一个原因是简化多表查询,可以生成从多个表中提取数据 的联合视图(joined View)把查询结果表示为一个单独的“可见表”。
【例9-3】创建一个名为“student_view3” 的视图,它是由表course、 book及class_course创建的一个显示“g99402”班所开课程的课程名、 所用教材的教材名、出版社及作者的视图。
7
图9-1 创建视图的窗口
4)点击“添加”,选择表student,再点击“关
闭”。系统呈现如图9-2的视图建立窗口。
8
图9-2 视图建立窗口
9
在SQL查询条件窗格中输入查询条件语句:
SELECT student_id , student_name , class_id , sex FROM student WHERE sex=1
21
7.6.2 视图的删除
删除一个视图,就是删除视图的定义及其赋予的全部权限,而 原先通过视图获得的数据并没有被删除。 删除视图参考表(即基表)的时候,视图不会被删除,视图 必须被单独删除。 删除视图有两种方法,一是使用SQL Server Management Studio删除,二是用DROP VIEW语句删除。
2
7.1 视图概念
视图是一种数据库对象,是从一个或者多个数据表或视 图中导出的虚表,视图的结构和数据是对数据表进行查 询的结果。 视图被定义后便存储在数据库中,通过视图看到的数据 只是存放在基表中的数据。当对通过视图看到的数据进 行修改时,相应的基表的数据也会发生变化,同时,若 基表的数据发生变化,这种变化也会自动地反映到视图 中。 视图可以是一个数据表的一部分,也可以是多个基表的 联合;视图也可以由一个或多个其他视图产生。 一旦视图定义后,就可以用select语句象对真实表一样查 询。
20
table_name:视图基表的名字。
WITH ENCRYPTION:对包含创建视图的SQL脚本进行
加密。 【例9-6】修改视图student_view1的定义,使其从student表中 查询出性别为“女”的所有学生的资料。 USE jwgl GO ALTER VIEW student_view1 AS SELECT * FROM student WHERE sex = 0 本节首页
5
3. 在创建视图的时候,应该考虑以下因素
① 在CREATE VIEW语句中,不能包括ORDER BY、
COMPUTE或者COMPUTE BY 子句,也不能出现INTO 关键字。
② 创建视图所参考基表的列数最多为1024列。 ③ 创建视图不能参考临时表。 ④ 在一个批处理语句中,CREATE VIEW语句不能和其
执行该语句,预览产生的结果。
5)确认结果正确后,点击工具栏上的保存按钮,保存
当前创建的视图,输入视图的名称,点击“确定”按钮, 一个视图就创建完成了。
本项目首页
10
7.3 使用视图的优点和缺点
1. 视图的优点 查询的简单性:将复杂的查询定义为视图,保留用户所 关心的数据内容,简化用户浏览和操作。 安全保护:视图可以设置不同用户对数据的访问权限。 屏蔽数据的复杂性:简化用户对数据库的操作,还可以 使用视图重新组织数据。 2.视图的缺点 性能降低 修改的限制
本节首页
16
7.4.5 创建视图的视图
前面创建的视图都是在表的基础上创建的,在视图的基础上还可 以创建视图。
【例9-5】从视图student_view1创建一个名为“student_view5”,能 查询出班级名为“g99402”的所有学生资料的视图。 USE jwgl GO CREATE VIEW student_view5 AS SELECT * FROM student_view1 WHERE class_id = 'g99402' GO
本项目பைடு நூலகம்页
18
7.6
视图的修改、删除与重命名
视图的修改 7.6.2 视图的删除 7.6.3 视图的重命名
7.6.1
本项目首页
19
7.6.1 视图的修改
1.使用SQL Server Management Studio修改视图 (P165) 2.使用Transact-SQL语句修改视图 ALTER VIEW view_name [(column[,...n])] [WITH ENCRYPTION] AS select_statement [ WITH CHECK OPTION ] 在以上语句的语法中: view_name:被修改的视图的名字。 column_name :在视图中包含的列名。 WITH CHECK OPTION:迫使通过视图进行数据修改的 所有语句必须符合视图定义中设置的条件。
本项目首页
11
7.4 创建视图示例
7.4.1 7.4.2 7.4.3
7.4.4
7.4.5
创建水平视图 创建投影视图 创建联合视图 创建包含集合函数的视图 创建视图的视图
本项目首页
12
7.4.1 创建水平视图
视图的常见用法是限制用户只能够存取表中的某些数据行, 用这种方法产生的视图称为水平视图,即表中行的子集。
1)首先进入SQL Server Management Studio。
2)按顺序展开“数据库”、要创建视图所属的数据库、再展开
“视图”子节点。
3)右边“摘要”窗口显示的是数据库中已经存在的视图,右击窗
口的空白处,在弹出的快捷菜单上选择“新建视图”项,系统弹出 如图9-1的“添加表”窗口,这个窗口用于为新创建的视图提供基础 数据。该窗口有三个选项卡,表、视图及函数,这意味着可以以表、 视图及表值函数为基础数据创建新的视图。
本项目首页
3
7.2 创建视图
7.2.1 使用Transact-SQL语句创建视图 1. 创建视图的SQL语句的语法形式
CREATE VIEW [ < owner > .] view_name [ ( column_name [ ,...n ] ) ] [WITH ENCRYPTION] AS select_statement FROM table_name WHERE search_condition [WITH CHECK OPTION]
【例9-1】在数据库JWGL的表student上创建一个视图 student_view1,视图的数据包括班级号为‘g99402‟ 或 ‘g99403‟所有学生的资料。 USE jwgl GO CREATE VIEW student_view1 AS SELECT * FROM student WHERE (class_id=‟g99402‟ OR class_id=‟g99403‟) 本节首页
件 WITH CHECK OPTION:迫使通过视图执行的所有数据修改 语句必须符合视图定义中设置的条件。 WITH ENCRYPTION:对视图的定义进行加密。
2. 用SQL语句创建视图的步骤
在创建视图时,应首先测试SELECT语句以确保能返回正确的结 果。创建视图的步骤如下: ① 编写用于创建视图的SELECT语句。 ② 对SELECT语句进行测试。 ③ 检查测试结果是否正确,是否和预期的一样。 ④ 创建视图。
其中: view_name:为新创建的视图指定的名字,视图名称必须符合标识符 规则。 column_name:在视图中包含的列名,也可以在SELECT 语句中指定 列名。
4
table_name:视图基表的名字。 select_statement:选择哪些列进入视图的SELECT语句。 WHERE search_condition:基表数据进入视图所应满足的条
本节首页
15
7.4.4 创建包含集合函数的视图
在视图定义中可以包含GROUP BY和集合函数,从而将这些汇总数据放到 一个“可见”的表中,允许用户对它们做进一步的查询。要注意,出现在 SELECT子句中的列名,要么包含在集合函数中,要么包含在 GROUP BY 子句中。
【例9-4】 使用集合函数SUM和GROUP BY子句以student_course表为基表, 创建一个名为“student_sum_view4”、能显示所有学生学号和总成绩的视 图。 USE jwgl GO CREATE VIEW student_sum_view4 (学号 , 总成绩) AS SELECT student_id , sum(grade) FROM student_course GROUP BY student_id 注意:与水平视图和投影视图不同,本例产生的视图中的行与基本表中的 行不是一一对应的,它是一些行数据的汇总,因此,不能通过视图来修改 数据。
7.4.2 创建投影视图
如果限制用户只能存取表中的部分列的数据,那么,使用这种方 法创建的视图就称为投影视图,即表中列的子集。
【例9-2】创建一个名为“studdent_view2” 的视图,它从数据库 JWGL的student表中查询出性别为“男”的所有学生的学号、姓 名、性别、班级、家庭住址、入学时间、出生年月资料。 USE jwgl GO CREATE VIEW student_view2 AS SELECT student_id AS 学号 , student_name AS 姓名 , sex AS 性别 , class_id AS 班级 , home_addr AS 家庭住址 , entrance_date AS 入学时间 , birth AS 出生年月 FROM student WHERE sex=1 WITH CHECK OPTION
本节首页
17
7.5
查看视图信息
使用系统存储过程查看视图信息 sp_help 数据库对象名称 sp_helptext 视图(触发器、存储过程) sp_depends 数据库对象名称
1. 使用系统存储过程 ① 查看视图的名称、拥有者及创建日期等信息 sp_help student_view1 ② 查看视图的定义脚本 sp_helptext student_view1 ③查看数据的来源 sp_depends student_view1 2. 使用SQL Server Management Studio查看视图 (P164)
他Transact-SQL语句混合使用。
⑤ 尽量避免使用外连接创建视图。
6
7.2.2 使用SQL Server Management Studio创建视图
假设要从student表中建立一个性别为“男”、 包含 student_id、student_name、class_id、sex四列信息的视 图。 使用SQL Server Management Studio创建视图的具体步骤 如下:
项目7 创建与使用视图
7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 视图概述 创建视图 使用视图的优点和缺点 创建视图示例 视图信息的查看 视图的修改、删除与重命名 视图数据的查询、插入、修改与删除 视图的安全性
项目7 创建与使用视图
学习目标:
1、理解视图的概念; 2、掌握视图的创建、查看、修改、删除与重命名; 3、掌握视图数据的查询、插入、修改与删除; 4、掌握视图安全性的常用设置。
本节首页
14
7.4.3 创建联合视图
使用视图的一个原因是简化多表查询,可以生成从多个表中提取数据 的联合视图(joined View)把查询结果表示为一个单独的“可见表”。
【例9-3】创建一个名为“student_view3” 的视图,它是由表course、 book及class_course创建的一个显示“g99402”班所开课程的课程名、 所用教材的教材名、出版社及作者的视图。
7
图9-1 创建视图的窗口
4)点击“添加”,选择表student,再点击“关
闭”。系统呈现如图9-2的视图建立窗口。
8
图9-2 视图建立窗口
9
在SQL查询条件窗格中输入查询条件语句:
SELECT student_id , student_name , class_id , sex FROM student WHERE sex=1
21
7.6.2 视图的删除
删除一个视图,就是删除视图的定义及其赋予的全部权限,而 原先通过视图获得的数据并没有被删除。 删除视图参考表(即基表)的时候,视图不会被删除,视图 必须被单独删除。 删除视图有两种方法,一是使用SQL Server Management Studio删除,二是用DROP VIEW语句删除。
2
7.1 视图概念
视图是一种数据库对象,是从一个或者多个数据表或视 图中导出的虚表,视图的结构和数据是对数据表进行查 询的结果。 视图被定义后便存储在数据库中,通过视图看到的数据 只是存放在基表中的数据。当对通过视图看到的数据进 行修改时,相应的基表的数据也会发生变化,同时,若 基表的数据发生变化,这种变化也会自动地反映到视图 中。 视图可以是一个数据表的一部分,也可以是多个基表的 联合;视图也可以由一个或多个其他视图产生。 一旦视图定义后,就可以用select语句象对真实表一样查 询。
20
table_name:视图基表的名字。
WITH ENCRYPTION:对包含创建视图的SQL脚本进行
加密。 【例9-6】修改视图student_view1的定义,使其从student表中 查询出性别为“女”的所有学生的资料。 USE jwgl GO ALTER VIEW student_view1 AS SELECT * FROM student WHERE sex = 0 本节首页
5
3. 在创建视图的时候,应该考虑以下因素
① 在CREATE VIEW语句中,不能包括ORDER BY、
COMPUTE或者COMPUTE BY 子句,也不能出现INTO 关键字。
② 创建视图所参考基表的列数最多为1024列。 ③ 创建视图不能参考临时表。 ④ 在一个批处理语句中,CREATE VIEW语句不能和其
执行该语句,预览产生的结果。
5)确认结果正确后,点击工具栏上的保存按钮,保存
当前创建的视图,输入视图的名称,点击“确定”按钮, 一个视图就创建完成了。
本项目首页
10
7.3 使用视图的优点和缺点
1. 视图的优点 查询的简单性:将复杂的查询定义为视图,保留用户所 关心的数据内容,简化用户浏览和操作。 安全保护:视图可以设置不同用户对数据的访问权限。 屏蔽数据的复杂性:简化用户对数据库的操作,还可以 使用视图重新组织数据。 2.视图的缺点 性能降低 修改的限制
本节首页
16
7.4.5 创建视图的视图
前面创建的视图都是在表的基础上创建的,在视图的基础上还可 以创建视图。
【例9-5】从视图student_view1创建一个名为“student_view5”,能 查询出班级名为“g99402”的所有学生资料的视图。 USE jwgl GO CREATE VIEW student_view5 AS SELECT * FROM student_view1 WHERE class_id = 'g99402' GO
本项目பைடு நூலகம்页
18
7.6
视图的修改、删除与重命名
视图的修改 7.6.2 视图的删除 7.6.3 视图的重命名
7.6.1
本项目首页
19
7.6.1 视图的修改
1.使用SQL Server Management Studio修改视图 (P165) 2.使用Transact-SQL语句修改视图 ALTER VIEW view_name [(column[,...n])] [WITH ENCRYPTION] AS select_statement [ WITH CHECK OPTION ] 在以上语句的语法中: view_name:被修改的视图的名字。 column_name :在视图中包含的列名。 WITH CHECK OPTION:迫使通过视图进行数据修改的 所有语句必须符合视图定义中设置的条件。
本项目首页
11
7.4 创建视图示例
7.4.1 7.4.2 7.4.3
7.4.4
7.4.5
创建水平视图 创建投影视图 创建联合视图 创建包含集合函数的视图 创建视图的视图
本项目首页
12
7.4.1 创建水平视图
视图的常见用法是限制用户只能够存取表中的某些数据行, 用这种方法产生的视图称为水平视图,即表中行的子集。
1)首先进入SQL Server Management Studio。
2)按顺序展开“数据库”、要创建视图所属的数据库、再展开
“视图”子节点。
3)右边“摘要”窗口显示的是数据库中已经存在的视图,右击窗
口的空白处,在弹出的快捷菜单上选择“新建视图”项,系统弹出 如图9-1的“添加表”窗口,这个窗口用于为新创建的视图提供基础 数据。该窗口有三个选项卡,表、视图及函数,这意味着可以以表、 视图及表值函数为基础数据创建新的视图。
本项目首页
3
7.2 创建视图
7.2.1 使用Transact-SQL语句创建视图 1. 创建视图的SQL语句的语法形式
CREATE VIEW [ < owner > .] view_name [ ( column_name [ ,...n ] ) ] [WITH ENCRYPTION] AS select_statement FROM table_name WHERE search_condition [WITH CHECK OPTION]
【例9-1】在数据库JWGL的表student上创建一个视图 student_view1,视图的数据包括班级号为‘g99402‟ 或 ‘g99403‟所有学生的资料。 USE jwgl GO CREATE VIEW student_view1 AS SELECT * FROM student WHERE (class_id=‟g99402‟ OR class_id=‟g99403‟) 本节首页
件 WITH CHECK OPTION:迫使通过视图执行的所有数据修改 语句必须符合视图定义中设置的条件。 WITH ENCRYPTION:对视图的定义进行加密。
2. 用SQL语句创建视图的步骤
在创建视图时,应首先测试SELECT语句以确保能返回正确的结 果。创建视图的步骤如下: ① 编写用于创建视图的SELECT语句。 ② 对SELECT语句进行测试。 ③ 检查测试结果是否正确,是否和预期的一样。 ④ 创建视图。
其中: view_name:为新创建的视图指定的名字,视图名称必须符合标识符 规则。 column_name:在视图中包含的列名,也可以在SELECT 语句中指定 列名。
4
table_name:视图基表的名字。 select_statement:选择哪些列进入视图的SELECT语句。 WHERE search_condition:基表数据进入视图所应满足的条