MySQL数据库基础与实例教程第7章

  • 格式:ppt
  • 大小:2.34 MB
  • 文档页数:72

下载文档原格式

  / 50
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

e
c
c
h
local检查视图 f 检查条件:c>50
a
e
c
h
f
a
b
c
d
e
f
g
h
基本表1
基本表2
基本表3
7.2 触发器
触发器主要用于监视某 1 个表的insert、update 2 以及delete等更新操作, 这些操作可以分别激活 3 该表的insert、update 4 或者delete类型的触发 5 程序运行,从而实现数 据的自动维护。
普通视图不具备”检查”功能.
7.1.6 检查视图
• • 任务布臵4:上机操作,完成本书场景描述4: 检查视图与更新操作的任务要求。 创建成绩不及格的选修试图choose_2_view create view choose_2_view as select * from choose where score<60 with local check option;
表 t
before update trigger after begin before … insert trigger end begin after … delete trigger end begin before … after end
7.2.1 准备工作
使用create trigger语句可以创建一个触发器, 语法格式如下。 create trigger 触发器名 触发时间 触发事件 on 表名 for each row begin 触发程序 end
• • • • 1、设臵available字段的默认值。 alter table course add available int default 0; 2、查询新课程course表的信息 desc course;
select course_no,course_name,up_limit,available from course;
准备工作
使用触发器实现检查约束
使用触发器维护冗余数据 使用触发器模拟外键级联选项 查看触发器的定义
7.2 触发器
触发器主要用于监视某 个表的insert、update 以及delete等更新操作, 这些操作可以分别激活 6 该表的insert、update 7 或者delete类型的触发程 序运行,从而实现数据 的自动维护。
7.1.6 检查视图
视图分为普通视图与检查视图,没有使用‘with check optiom’子句的视图都是普通试图。 通过检查视图更新基表数据时,只有满足 检查条件的更新语句才能成功执行。创建检 查视图的语法格式如下。 create view 视图名 [ (视图字段列表) ] as select语句 with [ local | cascaded ] check option
local 检查 视图与 cascade检 查视图
操作1: 通过该视图执行update 操作,将c赋值为70。 将无法完成此操作 操作2: 通过该视图执行update操 作,将c赋值为70。 此操作可以成功执行
cascaded检查视图 检查条件:c>50 a cascaded检查视图 检查条件:c<60
insert into choose_2_view values (null,'2012004',2,100,now());
• 然后分析普通视图与检查视图之间的区别。
定义的格式不同. 更新基表数据时,检查视图对检查数据先检查,而后更新,不满足 检查视图定义的检查条件,则更新失败。而普通视图不具备“检 查”功能。
7.1.6 local与cascade检查视图
检查视图分为 local 检查视图与 cascade 检查 视图。 with_check_option的值为1时表示local (local视图), 值为2时表示cascade(级联视图,在视图的 基础上再次创建另一个视图)。
7.1.6 local与cascade检查视图
源自文库
删除触发器 使用触发器的注意事项
7.2 触发器
数据库
应用程序 update t set …; insert into t values(...); delete from t …;
a a1 a2 a3 a4
b b1 b2 b3 b4
c c1 c2 c3 c4
d d1 d2 d3 d4
e e1 e2 e3 e4
7.1.1 创建视图
任务布臵1: “对于经常使用的、结构复杂的 select语句,建议将其封装为视图 ”。 例如:为统计每门课程还能供多少同学选修, 定义名为 available_course_view的视图。
create view available_course_view AS select course.course_no,course_name,teacher_name, up_limit,count(*) as student_num, up_limit-count(*) as available from teacher inner join course on teacher.teacher_no=course.teacher_no inner join choose on choose.course_no=course.course_no group by course.course_no; Select * from available_course_view;
7.1.6 检查视图
任务布臵3:上机操作,完成本书场景描述3: 普通视图与更新操作的任务要求。 创建成绩不及格的选修试图choose_1_view create view choose_1_view as select * from choose where score<60;
一、插入数据 insert into choose_1_view values null,'2012003',2,100,now()); select * from choose;
如:p 213-3
create view choose_3_view as select * from choose where score between 0 and 100 with local check option; insert into choose_3_view values (null,'2012005',2,110,now()); insert into choose_3_view values (null,'2012005',2,-12,now()); insert into choose_3_view values (null,'2012005',2,98,now()); select * from choose; select * from choose_3_view;
MySQL数据库基础与实例教程

视图触发器
内容一览
本章首先讲解了 视图以及触发器的 管理及使用,然后 结合“选课系统” 分别介绍视图以及 触发器在该系统中 的应用。
1 视图 2 触发器 3 临时表
4 派生表(Derived Table)
5 视图、子查询、临时表、派生表
作业
• P213 • 1、2、3(检查视图)、4、6。 • 复习 1、2、3(重点第3章)
7.1.3 视图在“选课系统”中的应用
原来的course表的结构: dese course;
从现在开始,新课程course表中比原来的课程 course表多了一个“剩余的学生名 额”available字段。 任务布臵2:上机操作,完成本书场景描述2的 任务要求。
7.1.3 视图在“选课系统”中的应用
7.1.2 查看视图的定义
可以使用下面四种方法查看视图的定义。 2.视图是一个虚表,也可以使用查看表结构 的方式查看视图的定义 desc v1_view。 3.MySQL命令“show tables;”命令不仅显 示当前数据库中所有的基表,也会将所有的 视图罗列出来。
7.1.2 查看视图的定义
可以使用下面四种方法查看视图的定义。 4.MySQL系统数据库information_schema 的views表存储了所有视图的定义,使用下面 的select语句查询该表的所有记录,也可以查 看所有视图的详细信息。 select * from information_schema.views\G
基本表2
数据库
基本表3
7.1 视图
视图中保存的仅仅 是一条select语句, 1 视图中的源数据都来 自于数据库表,数据 2 库表称为基本表或者 3 基表,视图称为 。
创建视图 查看视图的定义 视图在“选课系统”中的应用
4 视图的作用 5 删除视图
7.1 视图
视图中保存的仅仅 是一条select语句, 视图中的源数据都来 自于数据库表,数据 6 库表称为基本表或者 7 基表,视图称为虚表。
检查视图 local与cascade检查视图
7.1.1 创建视图
创建视图的语法格式如下。 create view 视图名 [ (视图字段列表) ] as select语句 对于经常使用的、结构复杂的select语句,建 议将其封装为视图 ”.简化数据查询操作。
7.1.1 创建视图
• 视图(view)为数据查询提供了一条捷径,简化数 据查询操作.
7.1.3 视图在“选课系统”中的应用
• 3、从视图中获取信息修改原表的数据.
• update course • set available=up_limit• (select student_num from available_course_view • where course_no=course.course_no);
• • • • 创建所有班级的学生情况视图 create view v1_view AS select classes1.class_no,class_name,department_name,student_n o,student_name • from student1 right join classes1 on student1.class_no=classes1.class_no; • select * from v1_view where class_no=1; • select * from v1_view where class_no=2;
7.2.1 准备工作
MySQL的触发事件有三种: insert:将新记录插入表时激活触发程序, 例如通过insert、load data和replace语句,可 以激活触发程序运行。
7.1 视图
应用程序 视图与表有很多相似 的地方,视图也是由若 干个字段以及若干条记 从视图中读取数据 通过视图中修改数据 录构成,视图也可以作 为select语句的数据源。 视图 a e c h f 甚至在某些特定条件下, 可以通过视图对表进行 a b c d e f g h 更新操作。
基本表1
Select * from choose_1_view;
二、删除数据 delete from choose where student_no='2012003' and course_no=2; Select * from choose;
Select * from choose_1_view;
• 4、查询course表的信息 • select course_no,course_name,up_limit,available • from course;
7.1.4 视图的作用
1.使操作变得简单 2.避免数据冗余 3.增强数据安全性 4.提高数据的逻辑独立性
7.1.5 删除视图
如果某个视图不再使用,可以使用drop view 语句将该视图删除,语法格式如下。 drop view 视图名
7.1.2 查看视图的定义
可以使用下面四种方法查看视图的定义。 1.在choose数据库中成功地创建了视图 available_course_view后,该视图的定义默 认保存在数据库目录(例如choose目录)下, 文件名为available_course_view.frm。使用 记事本打开该文件,即可查看该视图的定义。