MySQL数据库基础与实例教程第7章
数据库系统原理第七章答案
例如,关系模式STJ(S,T,J)中,S表示学生,T表示教师,
J表示课程。语义为:每一教师只能讲授一门课程,每门课
程由若干教师讲授;每个学生选修某门课程就对应一个固
定的教师。由语义可以得到STJ模式的函数依赖为:
F={(S,J)→T,T→J} 显然:(S,J)和(T,S)都是关系的码;关系的主属性集为 {S,T,J},非主属性为(空集)。 由于STJ模式中无非主属性,所以它属于3NF;但因为存 在T→J,由于T不是码,故STJBCNF。
第十六页,编辑于星期五:九点 九分。
7.2 关系模式的分解算法
7.2.1 关系模式分解的算法基础
1. 函数依赖的逻辑蕴含
设F是R〈U〉函数依赖集,X和Y是属性集U的子集。 如果从F中的函数依赖能推出X→Y,则称F逻辑蕴含 X→Y,或称X→Y是F的逻辑蕴含。
第十七页,编辑于星期五:九点 九分。
2. Armstrong公理系统
(1) Armstrong公理系统:设U为属性集,F是U上的函数依赖集,于是 有关系模式R〈U,F〉。 1) 自反律:若YXU,则X→Y为F所蕴含。 2) 增广律:若X→Y为F所蕴含,且ZU,则XZ→YZ为F所蕴含。 3) 传递律:若X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含。
(2) Armstrong公理的三个推理
第二十三页,编辑于星期五:九点 九分。
【例】设F={A→BC,B→AC,C→A},对F进行极小化处理。
解:1) 把F中的函数依赖转换成右部都是单属性的函数依赖,分解后的 函数依赖集仍用F表示。 F={A→B,A→C,B→A,B→C,C→A} 2) 去掉F中冗余的函数依赖。 判断A→B。设:G1={ A→C,B→A,B→C,C→A}, 得:AG1+=AC ∵ BAG1+ ∴ A→B不冗余 判断A→C。设:G2={ A→B,B→A,B→C,C→A}, 得:AG2+=ABC ∵ CAG2+ ∴ A→C冗余 判断B→A。设:G3={ A→B,B→C,C→A}, 得:BG3+=BCA ∵ ABG3+ ∴ B→A冗余 判断B→C。设:G4={ A→B,C→A}, 得:BG4+=B ∵ CBG4+ ∴ B→C不冗余 判断C→A。设:G5={ A→B,B→C }, 得:CG5+=C ∵ ACG5+ ∴ C→A不冗余 Fm={ A→B,B→C,C→A}
数据库系统概论PPT课件第七章 数据库设计01
建立数据库 编制与调试应用程序 组织数据入库 进行试运行
An Introduction to Database System
数据库设计的基本步骤(续)
⒍数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行 在数据库系统运行过程中必须不断地对其进行评
7.2.1 需求分析的任务
需求分析的任务 需求分析的重点 需求分析的难点
An Introduction to Database System
需求分析的任务
详细调查现实世界要处理的对象(组织、部门、企业等) 充分了解原系统(手工系统或计算机系统) 明确用户的各种需求 确定新系统的功能 充分考虑今后可能的扩充和改变
An Introduction to Database System
需求分析的重点
调查的重点是“数据”和“处理”,获得 用户对数据库要求
信息要求 处理要求 安全性与完整性要求
An Introduction to Database System
需求分析的难点
确定用户最终需求
用户缺少计算机知识 设计人员缺少用户的专业知识
An Introduction to Database System
⒊ 数据流
数据流是数据结构在系统内传输的路径。 对数据流的描述
数据流描述={ 数据流名,说明,数据流来源, 数据流去向,组成:{数据结构}, 平均流量,高峰期流量}
An Introduction to Database System
解决方法
设计人员必须不断深入地与用户进行交流
数据库系统概论第五版第七章的习题解答和解析.doc
第七章习题解答和解析1. 试述数据库设计过程。
答:这里只概要列出数据库设计过程的六个阶段:(1) 需求分析;(2) 概念结构设计;(3) 逻辑结构设计;(4) 数据库物理设计;(5) 数据库实施;(6) 数据库运行和维护。
这是一个完整的实际数据库及其应用系统的设计过程。
不仅包括设计数据库本身,还包括数据库的实施、运行和维护。
设计一个完善的数据库应用系统往往是上述六个阶段的不断反复。
解析:希望读者能够认真阅读《概论》7.1 的内容,了解并掌握数据库设计过程。
2.试述数据库设计过程中结构设计部分形成的数据库模式。
答:数据库结构设计的不同阶段形成数据库的各级模式,即:(1) 在概念设计阶段形成独立于机器特点,独立于各个DB MS 产品的概念模式,在本篇中就是E-R 图;(2) 在逻辑设计阶段将E-R 图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式,然后在基本表的基础上再建立必要的视图(View),形成数据的外模式;(3) 在物理设计阶段,根据DB MS 特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。
读者可以参考《概论》上图7.4。
图中概念模式是面向用户和设计人员的,属于概念模型的层次;逻辑模式、外模式、内模式是DBMS 支持的模式,属于数据模型的层次,可以在DBMS 中加以描述和存储。
3.需求分析阶段的设计目标是什么? 调查的内容是什么?答需求分析阶段的设计目标是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
调查的内容是“数据”和“处理”,即获得用户对数据库的如下要求:(1) 信息要求,指用户需要从数据库中获得信息的内容与性质,由信息要求可以导出数据要求,即在数据库中需要存储哪些数据;(2) 处理要求,指用户要完成什么处理功能,对处理的响应时间有什么要求,处理方式是批处理还是联机处理;(3) 安全性与完整性要求。
电力出版社《PHP+MySQL开发实例教程》全套课件(第7章)
7.1 MYSQL数据库系统简介
• 7.1.2 Mysql数据库简介
• MySQL是MYSQL AB公司开的一种开放源代码的关系 型数据库管理系统( RDBMS ), MySQL 数据库系统 使 用 最 常 用 的 数 据 库 管 理 语 言 —— 结 构化查询 语 言 (SQL)进行数据库管理。由于MySQL是开放源代码 的,因此任何人都可以在 General Public License 的 许可下下载并根据个性化的需要对其进行修改。 MySQL因为其速度、可靠性和适应性而备受关注。大 多数人都认为在不需要事务化处理的情况下, MySQL 是管理内容最好的选择。
7.1 MYSQL数据库系统简介
• 7.1.1 Web开发与数据库
• 动态网站开发离不开数据存储,数据存储则离 不开数据库。在前面的章节中,我们曾做过一 个例子,将注册用户的信息存储在一个文本文 件中,可以在以后取用。这使得网站可以增加 很多交互性因素。但是文本文件并不是存储数 据的最理想方法。数据库技术的引入是给网站 开发带来的巨大的飞跃。
7.4 结构化查询语言(SQL)
• Structured Query Language包含4个部 分:
• 1、数据查询语言: SELECT • 2、数据操纵语言: INSERT, UPDATE, DELETE • 3、数据定义语言: CREATE, ALTER, DROP • 4、数据控制语言: COMMIT WORK, ROLLBACK WORK
7.1 MYSQL数据库系统简介
• 7.1.1 Web开发与数据库
学号 001 002 003 … 姓名 张三 李四 王五 … 男 女 男 … 性别 18 19 20 … 年龄
7.1 MYSQL数据库系统简介
mysql第七章课件
CREATE VIEW view_stuInfo_stuMarks AS SELECT 姓名 姓名=stuName, 学号=stuInfo.stuNo,… 学号
基于学员信息表和 成绩表创建视图
教员需要的视图: 方便查看学员的成绩
班主任需要的视图: 方便查看学员的档案
什么是视图
视图是一张虚拟表,它表示一张表的部分数据或多张表 的综合数据,其结构和数据是建立在对表的查询基础上 视图中并不存放数据,而是存放在视图所引用的原始表 (基表)中 同一张原始表,根据不同用户的不同需求,可以创建不 同的视图
如何创建事务
开始事务(指定事务从此处开始) BEGIN /*--转帐:张三的帐户少1000元,李四的帐户多1000元*/ UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName='张三‘ UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName='李四‘ 回滚事务(指定事务到此结束) ROLLBACK; SELECT * FROM bank
创建索引的指导原则
请按照下列标准选择建立索引的列。 – 该列用于频繁搜索 – 该列用于对数据进行排序 请不要使用下面的列创建索引: – 列中仅包含几个不同的值。 – 表中仅包含几行。为小型表创建索引可能不太划算, 因为SQL Server在索引中搜索数据所花的时间比在 表中逐行搜索所花的时间更长
什么是视图
事务的特性 事务必须具备以下四个属性,简称ACID 属性: – 原子性(Atomicity):事务是一个完整的操作。事务的各 步操作是不可分的(原子的);要么都执行,要么都不执 行 – 一致性(Consistency):当事务完成时,数据必须处于一 致状态 – 隔离性(Isolation):对数据进行修改的所有并发事务是彼 此隔离的,这表明事务必须是独立的,它不应以任何方式 依赖于或影响其他事务 – 永久性(Durability):事务完成后,它对数据库的修改被 永久保持,事务日志能够保持事务的永久性
MySQL数据库基础与实例教程练习题参考答案
MySQL数据库基础与实例教程练习题参考答案由于时间仓促,中难免存在错误,不妥之处恳请读者批评指正!第一章答案1.数据库管理系统中常用的数学模型有哪些数据库管理系统通常会选择某种“数学模型”存储、组织、管理数据库中的数据,常用的数学模型包括“层次模型”、“网状模型”、“关系模型”以及“面向对象模型”等。
2.您听说过的关系数据库管理系统有哪些数据库容器中通常包含哪些数据库对象目前成熟的关系数据库管理系统主要源自欧美数据库厂商,典型的有美国微软公司的SQL Server、美国IBM公司的DB2和Informix、德国SAP公司的Sybase、美国甲骨文公司的Oracle。
数据库容器中通常包含表、索引、视图、存储过程、触发器、函数等数据库对象。
3.通过本章知识的讲解,SQL与程序设计语言有什么关系SQL并不是一种功能完善的程序设计语言,例如,不能使用SQL构建人性化的图形用户界面(Graphical User Interface,GUI),程序员需要借助Java、VC++等面向对象程序设计语言或者HTML的FORM表单构建图形用户界面(GUI)。
如果选用FORM表单构建GUI,程序员还需要使用JSP、PHP或者.NET编写Web应用程序,处理FORM表单中的数据以及数据库中的数据。
其他答案:1、首先SQL语言是数据库结构化查询语言,是非过程化编程语言。
而程序设计语言则有更多的面向对象及逻辑程序设计。
比如用SQL语言编写图形用户界面(例如窗口、进度条),是无法实现的。
2、SQL语言可以说是,程序设计语言和数据库之间的一个翻译官。
程序设计语言需要操作数据库时,需要借助(或者说调用)SQL语言来翻译给数据库管理系统。
3、不同数据库管理系统会有一些特殊的SQL规范,比如limit关键词在SQL Server中无法使用。
而这些规范与程序设计语言无关。
4.通过本章的学习,您了解的MySQL有哪些特点与题目2中列举的商业化数据库管理系统相比,MySQL具有开源、免费、体积小、便于安装,但功能强大等特点。
第7章 MySQL数据库基础
7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 数据库基础 MySQL数据库简介 数据库简介 MySQL基础知识 基础知识 数据库和表的建立与管理 表数据操作 查询数据 视图 过程式数据库对象 使用界面工具操作MySQL 使用界面工具操作
修改字符集 为gb2312
图7.6 设置字符集
7.2.2 MySQL服务器的安装与配置 服务器的安装与配置
(8)单击【Next】按钮进入服务选项对话框,服务名为MySQL,这里不做修 改。 (9)单击【Next】按钮进入安全选项对话框,如图7.7所示,在密码输入框中 输入root用户的密码,为了便于演示,此处密码设为“123456”。在实际应用时密 码不可过于简单。要想创建一个匿名用户账户,选中“Create An Anonymous Account”(创建匿名账户)选项旁边的框。由于安全原因,不建议选择该项。 Account (10)设置完毕后,最后一步是提 交配置,单击【Execute】按钮即可完 成。 注意:对不同的操作系统和不同版 本的MySQL,安装过程可能有所不同, 这里只举MySQL 5.1的安装例子。
(5)进入并发连接选择对话框。Decision Support (DSS)/OLAP(决策支持): 如果服务器不需要大量的并行连接可以选择该选项;Online Transaction Processing (OLTP,联机事务处理):如果服务器需要大量的并行连接则选择该选项; Manual Setting(人工设置):选择该选项可以手动设置服务器并行连接的最大数 目。本书选择Decision Support (DSS)/OLAP选项。 (6)进入联网选项对话框,如图7.5所示。默认情况是启用TCP/IP网络,默认 端口为3306。这里不做修改。
MySQL数据库基础与实例教程
02
MySQL数据库基础
MySQL的安装与配置
安装MySQL
01
根据操作系统类型,选择合适的MySQL安装包进行下载和安装。
配置MySQL
02
设置MySQL的配置文件,包括端口号、数据存储路径、字符集
等。
启动与停止MySQL服务
03
通过系统服务管理器或命令行工具启动和停止MySQL服务。
MySQL的数据类型
在创建和使用索引时,应注意避免过度索引和冗 余索引,同时根据查询模式对索引进行优化和维 护。
存储过程和函数
存储过程
存储过程是一组为了完成特定功能的SQL语句集合,可以一次性执行多条SQL语句,提 高数据库操作的效率和性能。
函数
函数是一段可重复使用的代码块,可以接受参数并返回值,常用于数据转换、计算等操 作。
。
1996年,MySQL 1.0发布, 支持更多的SQL标准,并提供 了更完整的数据库管理功能。
2000年,MySQL AB公司被 Sun Microsystems公司收购
。
2008年,Sun Microsystems 公司被甲骨文公司收购。
MySQL的特点和优势
开源
MySQL是一个开源的关系型数 据库管理系统,可以免费使用
触发器与事件的区别
触发器是响应表事件自动执行的,而事件是根据计划手动触发的。
视图的使用与管理
视图概述
视图是一个虚拟表,基于SQL查询结果集的可视化表,可以用于简 化复杂查询、隐藏数据细节和提供数据安全性。
视图创建
通过CREATE VIEW语句创建视图,将复杂的查询逻辑封装在视图 中,方便后续的数据查询和操作。
通过SQL语句对学生信息进行模糊查 询和条件查询,包括使用LIKE进行模 糊查询、使用AND或OR进行条件查 询等。
MySQL数据库基础与实例教程第7章汇编
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;
检查视图 local与cascade检查视图
7.1.1 创建视图
创建视图的语法格式如下。 create view 视图名 [ (视图字段列表) ] as select语句 对于经常使用的、结构复杂的select语句,建 议将其封装为视图 ”.简化数据查询操作。
7.1.1 创建视图
• 视图(view)为数据查询提供了一条捷径,简化数 据查询操作.
基本表2
数据库
基本表3
7.1 视图
视图中保存的仅仅 是一条select语句, 1 视图中的源数据都来 自于数据库表,数据 2 库表称为基本表或者 3 基表,视图称为 。
创建视图 查看视图的定义 视图在“选课系统”中的应用
《MySQL数据库应用案例教程》教学课件 第7章 单表数据记录查询
| 3 | 糖类 | 水果糖 | 2.50 | 100 | NULL
|
+----+--------+-----------+--------+--------+-------------------------------+
2 rows in set (0.00 sec)
— 11 —
7.2 简单数据记录查询
mysql> SELECT * FROM goods WHERE id=3;
+----+----------+-----------+----------+----------+-----------------+
| id | type | name | price | num | add_time |
| 休闲西服 |
| 果汁
|
| 水果糖 |
| 牛奶糖 |
| 西游记 |
+--------------+
5 rows in set (0.00 sec)
—8—
7.2 简单数据记录查询
➢ 7.2.2 查询指定字段
【实例7-3】
从goods表中查询多个字段。
mysql> SELECT id,name FROM goods;
— 13 —
7.2 简单数据记录查询
➢ 7.2.4 多条件查询
2
使用OR关键字查询
如果多条件查询中的条件使用OR关键字连接,表示只需要符合所有条件中的一个条件,此记录就 会被返回。
【实例7-8】
从goods表中查询type值为“糖类”或者“书籍”的记录。SQL语句及其执 行结果如下:
MySQL数据库管理与应用任务式教程(微课版)单元7 用户管理
是否 为空
NO NO NO NO NO NO NO NO NO NO NO
主键 默认值
N N N N N N N N N N N
字段说明
用于创建和删除表的索引 用于重命名和修改表的结构
用于创建临时表 用于锁定表 用于创建视图 用于查看视图
用于创建存储过程或自定义函数 用于修改存储过程或自定义函数 用于执行存储过程或自定义函数
ENUM('N','Y') NO
Nபைடு நூலகம்
ENUM('N','Y') NO
N
字段说明
主机名或IP地址 数据库名 用户名
用于检索数据 用于插人数据 用于修改现有数据 用于删除现有数据 用于创建新的数据库和表 用于删除现有的数据库和表 用于执行大量的服务器管理操作 用于目前并没有多大的作用
任务1 管理学生成绩管理数据库的用户
上述输出结果表示,当前主机的root用户具有SELECT、INSERT和UPDATE的权限。在上述的所有权限字段 中,每一个权限以一个单独的列指定,这些列全部是ENUM('Y',N')枚举类型。如果不为其指定值,则使用默认值 N。
任务1 管理学生成绩管理数据库的用户
(3)安全字段 安全字段主要用来判断用户是否能够成功登录。user表中有 ssl_type、ssl_cipher、x509_issuser和 x509_subject
允许重命名和修改表的结构 允许查看所有的数据库 允许使用某些强大的管理功能
允许创建临时表
允许使用LOCK TABLES语句锁定表 允许执行存储过程和自定义函数 允许读取用户维护、复制数据库环境的二进制日志文件 允许从服务器和主服务器的位置复制 允许创建视图 允许查看视图 允许创建存储过程或自定义函数 允许修改存储过程或自定义函数 允许执行CREATE USER语句创建用户 允许创建、修改和删除事件 允许创建和删除触发器
MySQL数据库基础与实例教程第7章
删除触发器 使用触发器的注意事项
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.2 触发器
触发器主要用于监视某 个表的insert、update 以及delete等更新操作, 这些操作可以分别激活 6 该表的insert、update 7 或者delete类型的触发程 序运行,从而实现数据 的自动维护。
表 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.6 local与cascade检查视图
检查视图分为 local 检查视图与 cascade 检查 视图。 with_check_option的值为1时表示local (local视图), 值为2时表示cascade(级联视图,在视图的 基础上再次创建另一个视图)。
7.1.6 local与cascade检查视图
MySQL金典培训教程10第七章
MySQL金典培训教程10第七章数据库安全本章要点:MySQL权限系统原理如何授予撤销用户和授权如何直截了当修改授权表授予用户权限的规范和注意事项作为一个MySQL的系统治理员,你有责任爱护你的MySQL数据库系统的数据安全性和完整性。
本文要紧要紧介绍如何建立一个安全的My SQL系统,从系统内部和外部网络两个角度,为你提供一个指南。
本章要紧考虑下列安全性有关的咨询题:什么缘故安全性专门重要,你应该防范那些攻击?服务器面临的风险(内部安全性),如何处理?连接服务器的客户端风险(外部安全性),如何处理?MySQL治理员有责任保证数据库内容的安全性,使得这些数据记录只能被那些正确授权的用户访咨询,这涉及到数据库系统的内部安全性和外部安全性。
内部安全性关怀的是文件系统级的咨询题,即,防止MySQL数据名目(DA TADIR)被在服务器主机有账号的人(合法或窃取的)进行攻击。
如果数据名目内容的权限过分授予,使得每个人均能简单地替代对应于那些数据库表的文件,那么确保控制客户通过网络访咨询的授权表设置正确,对此毫无意义。
外部安全性关怀的是从外部通过网络连接服务器的客户的咨询题,即,爱护MySQL服务器免受来自通过网络对服务器的连接的攻击。
你必须设置MySQL授权表(grant table),使得他们不承诺访咨询服务器治理的数据库内容,除非提供有效的用户名和口令。
下面就详细介绍如何设置文件系统和授权表mysql,实现MySQL的两级安全性。
7.1 MySQL的权限系统MySQL有一套先进的但非标准的安全/授权系统,把握其授权机制是开始操作MySQL数据库必须要走的第一步,关于一个熟悉SQL差不多操作的人来讲,也是MySQL所有的知识中比较难以明白得的一个部分。
本节通过掀开其授权系统的运作机制,期望大伙儿能够能够更好地操作和使用那个优秀的数据库系统。
MySQL的安全系统是专门灵活的,它承诺你以多种不同方式设置用户权限。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 视图名