当前位置:
文档之家› MySQL数据库基础与实例教程第7章
MySQL数据库基础与实例教程第7章
7.1.2 查看视图的定义
可以使用下面四种方法查看视图的定义。 1.在choose数据库中成功地创建了视图 available_course_view后,该视图的定义默 认保存在数据库目录(例如choose目录)下, 文件名为available_course_view.frm。使用 记事本打开该文件,即可查看该视图的定义。
7.1.2 查看视图的定义
可以使用下面四种方法查看视图的定义。 2.视图是一个虚表,也可以使用查看表结构 的方式查看视图的定义。 3.MySQL命令“show tables;”命令不仅显 示当前数据库中所有的基表,也会将所有的 视图罗列出来。
7.1.2 查看视图的定义
可以使用下面四种方法查看视图的定义。 4.MySQL系统数据库information_schema 的views表存储了所有视图的定义,使用下面 的select语句查询该表的所有记录,也可以查 看所有视图的详细信息。 select * from information_schema.views\G
7.2.5 查看触发器的定义
可以使用下面四种方法查看触发器的定义。 4.成功创建触发器后, MySQL自动在数据库目 录下创建 TRN以及TRG触发器文件,以记事本方 式打开这些文件,可以查看触发器的定义。
7.2.6 删除触发器
可以使用drop trigger语句将该触发器删除,语 法格式如下。
7.2.1 准备工作
触发程序中可以使用old关键字与new关键字。 当修改表的某条记录时,在触发程序中 可以使用old关键字表示修改前的旧记录、使 用new关键字表示修改后的新记录。当需要访 问旧记录的某个字段值时,可以使用“old. 字段名”的方式访问。当需要访问修改后的 新记录的某个字段值时,可以使用“new.字 段名”的方式访问。
基本表1
基本表2
数据库
基本表3
7.1 视图
视图中保存的仅仅 是一条select语句, 1 视图中的源数据都来 自于数据库表,数据 2 库表称为基本表或者 3 基表,视图称为虚表。
创建视图 查看视图的定义 视图在“选课系统”中的应用
4 视图的作用 5 删除视图
7.1 视图
视图中保存的仅仅 是一条select语句, 视图中的源数据都来 自于数据库表,数据 6 库表称为基本表或者 7 基表,视图称为虚表。
7.2.5 查看触发器的定义
可以使用下面四种方法查看触发器的定义。 2.查询information_schema数据库中的 triggers表,可以查看触发器的定义 MySQL中所有触发器的定义都存放在 information_schema数据库下的triggers表中, 查询triggers表,可以查看所有数据库中所有触 发器的详细信息,查询语句如下: select * from information_schema.triggers\G
drop trigger 触发器名
7.2.7 使用触发器的10条注意事项
1.触发程序中如果包含select语句,该select语 句不能返回结果集。 2.同一个表不能创建两个相同触发时间、触发 事件的触发程序。 3.触发程序中不能使用以显式或隐式方式打开、 开始或结束事务的语句,如start transaction、 commit、rollback或者set autocommit=0等语 句。
准备工作
使用触发器实现检查约束
使用触发器维护冗余数据 使用触发器模拟外键级联选项 查看触发器的定义
7.2 触发器
触发器主要用于监视某 个表的insert、update 以及delete等更新操作, 这些操作可以分别激活 6 该表的insert、update 7 或者delete类型的触发 程序运行,从而实现数 据的自动维护。
7.2.1 准备工作
触发程序中可以使用old关键字与new关键字。 old记录是只读的,可以引用它,但不能 更改它。在before触发程序中,可使用“set new.col_name = value”更改new记录的值。
7.2.2 使用触发器实现检查约束
前面曾经提到,MySQL可以使用复合数据 类型 set 或者 enum 对字段的取值范围进行检 查约束,使用复合数据类型可以实现离散的 字符串数据的检查约束,对于数值型的数不 建议使用 set 或者 enum 实现检查约束,可以 使用触发器实现。
local 检查 视图与 cascade检 查视图
操作1: 通过该视图执行update 操作,将c赋值为70。 将无法完成此操作 操作2: 通过该视图执行update操 作,将c赋值为70。 此操作可以成功执行
cascaded检查视图 检查条件:c>50 a cascaded检查视图 检查条件:c<60
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.2.1 准备工作
触发程序中可以使用old关键字与new关键字。 当向表插入新记录时,在触发程序中可 以使用new关键字表示新记录,当需要访问 新记录的某个字段值时,可以使用“new.字 段名”的方式访问。
7.2.1 准备工作
触发程序中可以使用old关键字与new关键字。 当从表中删除某条旧记录时,在触发程 序中可以使用old关键字表示旧记录,当需要 访问旧记录的某个字段值时,可以使用“old. 字段名”的方式访问。
7.2.3 使用触发器维护冗余数据
任务布臵6:上机操作,完成本书场景描述6: 使用触发器自动维护课程available的字段值 的任务要求。
7.2.4 使用触发器模拟外键级联选项
对于InnoDB存储引擎的表而言,由于支持 外键约束,在定义外键约束时,通过设臵外 键的级联选项cascade、set null或者no action(restrict),外键约束关系可以交由 InnoDB存储引擎自动维护。
7.2.5 查看触发器的定义
可以使用下面四种方法查看触发器的定义。 3.使用“show create trigger”命令可以查看某 一个触发器的定义。 例如使用“show create trigger organization_delete_before_trigger\G”命令可 以查看触发器 organization_delete_before_trigger的定义。
create view 视图名 [ (视图字段列表) ] as select语句 with [ local | cascaded ] check option
7.1.6 检查视图
任务布臵3:上机操作,完成本书场景描述3: 普通视图与更新操作的任务要求。 任务布臵4:上机操作,完成本书场景描述4: 检查视图与更新操作的任务要求。 然后分析普通视图与检查视图之间的区别。
检查视图 local与cascade检查视图
7.1.1 创建视图
创建视图的语法格式如下。 create view 视图名 [ (视图字段列表) ] as select语句
7.1.1 创建视图
任务布臵1:上机操作,完成本书场景描述1 的任务要求,理解“对于经常使用的、结构 复杂的select语句,建议将其封装为视图 ” 。
表 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
7.1.3 视图在“选课系统”中的应用
从现在开始,本书将选择“方案一”实现学 生选课功能。方案一与方案二的唯一区别在 于:方案一中的课程course表比方案二中的 课程course表多了一个“剩余的学生名 额”available字段。 任务布臵2:上机操作,完成本书场景描述2 的任务要求。
7.1.4 视图的作用
MySQL数据库基础与实例教程
之
视图触发器
孔祥盛
内容一览
本章首先讲解了 视图以及触发器的 管理及使用,然后 结合“选课系统” 分别介绍视图以及 触发器在该系统中 的应用。
1 视图 2 触发器 3 临时表
4 派生表(Derived Table)
5 视图、子查询、临时表、派生表
7.1 视图
应用程序 视图与表有很多相似 的地方,视图也是由若 干个字段以及若干条记 从视图中读取数据 通过视图中修改数据 录构成,视图也可以作 为select语句的数据源。 视图 a e c h f 甚至在某些特定条件下, 可以通过视图对表进行 a b c d e f g h 更新操作。
7.1.6 local与cascade检查视图
检查视图分为 local 检查视图与 cascade 检查 视图。 with_check_option的值为1时表示local (local视图), 值为2时表示cascade(级联视图,在视图的 基础上再次创建另一个视图)。
7.1.6 local与cascade检查视图
1.使操作变得简单 2.避免数据冗余 3.增强数据安全性 4.提高数据的逻辑独立性
7.1.5 删除视图
如果某个视图不再使用,可以使用drop view 语句将该视图删除,语法格式如下。 drop view 视图名