MySQL数据库基础与实例教程第7章
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检查视图
数据库系统原理第七章答案
例如,关系模式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}
数据库系统原理教程课后习题及答案(第七章)
第7章数据库设计1.试述数据库设计过程。
答:这里只概要列出数据库设计过程的六个阶段:( l )需求分析;( 2 )概念结构设计;( 3 )逻辑结构设计;( 4 )数据库物理设计;( 5 )数据库实施;( 6 )数据库运行和维护。
这是一个完整的实际数据库及其应用系统的设计过程。
不仅包括设计数据库本身,还包括数据库的实施、运行和维护。
设计一个完善的数据库应用系统往往是上述六个阶段的不断反复。
2 .试述数据库设计过程各个阶段上的设计描述。
答:各阶段的设计要点如下:( l )需求分析:准确了解与分析用户需求(包括数据与处理)。
( 2 )概念结构设计:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS 的概念模型。
( 3 )逻辑结构设计:将概念结构转换为某个DBMS 所支持的数据模型,并对其进行优化。
( 4 )数据库物理设计:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
( 5 )数据库实施:设计人员运用DBMS 提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
( 6 )数据库运行和维护:在数据库系统运行过程中对其进行评价、调整与修改。
3 .试述数据库设计过程中结构设计部分形成的数据库模式。
答:数据库结构设计的不同阶段形成数据库的各级模式,即:( l )在概念设计阶段形成独立于机器特点,独立于各个DBMS 产品的概念模式,在本篇中就是 E 一R 图;( 2 )在逻辑设计阶段将E 一R 图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式,然后在基本表的基础上再建立必要的视图( Vi 娜),形成数据的外模式;( 3 )在物理设计阶段,根据DBMS 特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。
4 .试述数据库设计的特点。
答:数据库设计既是一项涉及多学科的综合性技术又是一项庞大的工程项目。
超详细的MySQL数据库入门教程
超详细的MySQL数据库入门教程一、什么是MySQL数据库MySQL数据库是一种开源的关系型数据库,是目前最受欢迎和广泛使用的数据库之一,因为它具备很高的可靠性、充分的功能性、完整的文档和良好的性能。
相对于其他数据库管理系统,MySQL最大的特点就是速度非常快,而且支持多种操作系统,如Unix、Windows和Linux等。
二、MySQL基本知识1. 数据库对象在MySQL中,可以使用固定的术语来描述所涉及的不同组件和对象。
其中最为常见的三个对象是:表、列和行。
表:用于存储数据的矩形结构,包括许多有序列和行的特定类型的数据。
列:表中具有独立类型、唯一名称且包含数据的一部分。
例如,一个表可以包含名为“id”、“name”和“age”的三列。
行:表中的一条记录,包含列的特定值。
2. SQL语句SQL(结构化查询语言)是与MySQL之间交流的常用语言,它是一种标准的语言,用于管理和操作数据库。
MySQL支持以下几类SQL语句:- 数据定义语言(DDL):创建、改变和删除数据库对象,如表、列、视图等。
- 数据操作语言(DML):增加、删除和修改表中的数据。
- 数据查询语言(DQL):基于查询语句从数据库中检索信息。
- 数据控制语言(DCL):用于控制访问和安全等方面的语句,如授权、撤销权限等。
3. MySQL命令行工具MySQL命令行工具是MySQL数据库最常用的命令行工具之一,它可以通过命令行窗口连接和操作MySQL数据库。
常用的MySQL命令行工具有两种:- MySQL命令行客户端:用于连接和操作MySQL数据库。
- MySQL命令行导入和导出工具:用于将数据从文件或其他数据格式导入到MySQL数据库中,并在不同的数据存储之间导出数据。
三、开启和关闭MySQL1. 开启MySQL首先,需要安装MySQL数据库,安装方式与其他应用程序的安装方式相同。
在安装成功后,用户可以通过两种方式来开启MySQL:- 通过命令行工具启动MySQL。
电力出版社《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数据库应用与管理项目化教程(微课版)(何小苑)教案
教案名称:MySQL数据库应用与管理项目化教程(微课版)教案章节:第一章MySQL数据库基础【教学目标】1. 理解数据库的基本概念,掌握数据库的基本操作。
2. 掌握MySQL数据库的安装与配置。
3. 掌握MySQL数据库的基本语法,包括数据类型、运算符、函数等。
【教学内容】1. 数据库的基本概念:数据库、数据库管理系统、数据库系统。
2. MySQL数据库的安装与配置:与安装、配置MySQL。
3. MySQL数据库的基本语法:数据类型、运算符、函数等。
【教学过程】1. 引入:讲解数据库的基本概念,引导学生理解数据库的重要性。
2. 讲解:讲解MySQL数据库的安装与配置步骤,演示安装与配置过程。
3. 实践:让学生动手实践,安装与配置MySQL数据库。
4. 讲解:讲解MySQL数据库的基本语法,包括数据类型、运算符、函数等。
5. 练习:让学生练习使用MySQL数据库的基本语法。
【教学评价】1. 课后作业:让学生完成课后练习,巩固所学知识。
2. 课堂练习:在课堂上让学生动手实践,及时发现问题并解决问题。
章节:第二章MySQL数据库设计与建模【教学目标】1. 掌握数据库设计的基本步骤,能够独立完成数据库设计。
2. 掌握实体-关系模型,能够将现实世界中的问题转化为实体-关系模型。
3. 掌握SQL语言,能够使用SQL语言创建、修改和查询数据库。
【教学内容】1. 数据库设计的基本步骤:需求分析、概念设计、逻辑设计、物理设计。
2. 实体-关系模型:实体、属性、关系、键。
3. SQL语言:创建、修改和查询数据库。
【教学过程】1. 引入:讲解数据库设计的重要性,引导学生理解数据库设计的作用。
2. 讲解:讲解数据库设计的基本步骤,演示数据库设计过程。
3. 实践:让学生动手实践,完成一个简单的数据库设计。
4. 讲解:讲解实体-关系模型,演示实体-关系模型的转化过程。
5. 练习:让学生练习使用SQL语言创建、修改和查询数据库。
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):事务完成后,它对数据库的修改被 永久保持,事务日志能够保持事务的永久性
第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数据库原理与应用项目化教程(微课版)》教案 项目7--11 简单查询--数据库的安全管理
项目1认识数据库............................................... 错误!未定义书签。
任务11理解数据库的几个基本概念............................ 错误!未定义书签。
任务1.2理解数据模型 ....................................... 错误!未定义书签。
任务1.3了解SQ1语言....................................... 错误!未定义书签。
项目2数据库设计............................................... 错误!未定义书签。
任务2.1概念结构设计 ....................................... 错误!未定义书签。
任务2.2逻辑结构设计——E-R图转换成关系模型................ 错误!未定义书签。
任务2.3逻辑结构设计-关系模型的优化......................... 错误!未定义书签。
项目3MySQ1环境部署........................................... 错误!未定义书签。
任务3.1MySQ1的安装与配置.................................. 错误!未定义书签。
任务3.2使用MySQ1 .................................................................................. 错误!未定义书签。
项目4数据库创建与管理......................................... 错误!未定义书签。
任务4.1创建数据库 ......................................... 错误!未定义书签。
《MySQL数据库应用实战教程》教学大纲
《MySQL数据库应用》课程教学大纲一、课程名称及代码课程名称:MySQL数据库应用课程代码:XXXXXX二、适用教育层次及专业教育层次:高职专科适用专业:XXXX专业三、学分、学时学分数:4 学时数:64四、课程类型课程性质:专业基础课课程类别:理论+ 实践课五、先修课程名称及代码一门编程类课程(任何语言,如C++、Java或Python等)六、教学目标本课程的任务是使学生掌握关系数据库的基本原理和基础知识,能够正确使用MySQL开发环境创建和使用数据库,掌握数据结构设计、创建数据库和表、操纵数据和查询数据的技术,学会使用SQL语言编写视图、存储过程、存储函数、触发器等数据库对象,学会数据库安全管理和备份与恢复的方法,为提高学生专业素质和为继续学习,从事专业实践工作打下良好基础。
1.知识目标(1) 掌握关系数据库理论、数据库建模、数据结构设计技术。
(2) 掌握结构化查询语言SQL、查询优化、视图、索引、SQL编程等。
(3) 了解事务和并发控制原理。
(4) 掌握数据库备份和恢复技术。
(5) 掌握数据库安全和运维技术。
2.能力目标(1) 具有进行小型数据库项目的需求分析能力。
(2) 具有进行小型数据库项目的设计开发能力。
(3) 具有使用SQL语言进行数据定义、操纵、查询和编程的能力。
(4) 具有基本的数据库运维管理能力。
3.素质目标(1) 具有自学能力和探索精神、拥有求知欲望和学习兴趣(2) 具有分析问题、解决问题的能力。
(3) 具有建立实验假设、探索查阅知识的能力。
(4) 能够运用系统性思维分析和解决问题。
(5) 具有良好的变通能力、一定的创造性思维和批判性思维。
(6) 能负责地完成任务,具有严格的时间观念以及时间管理意识。
(7) 能了解本专业职业成长过程,并能做好个人的职业规划。
(8) 遵纪守法,爱岗敬业,具有良好的职业道德和职业形象。
七、教学内容及要求单元一了解数据库1.教学基本要求1)了解MySQL数据库管理系统,及其与其他数据库管理系统的区别。
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金典培训教程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的安全系统是专门灵活的,它承诺你以多种不同方式设置用户权限。
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 基表,视图称为 。
创建视图 查看视图的定义 视图在“选课系统”中的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
• • • • 1、设臵available字段的默认值。 alter table course add available int default 0; 2、查询新课程course表的信息 desc course;
select course_no,course_name,up_limit,available from course;
检查视图 local与cascade检查视图
7.1.1 创建视图
创建视图的语法格式如下。 create view 视图名 [ (视图字段列表) ] as select语句 对于经常使用的、结构复杂的select语句,建 议将其封装为视图 ”.简化数据查询操作。
7.1.1 创建视图
• 视图(view)为数据查询提供了一条捷径,简化数 据查询操作.
7.1.3 视图在“ese course;
从现在开始,新课程course表中比原来的课程 course表多了一个“剩余的学生名 额”available字段。 任务布臵2:上机操作,完成本书场景描述2的 任务要求。
7.1.3 视图在“选课系统”中的应用
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;
MySQL数据库基础与实例教程
之
视图触发器
内容一览
本章首先讲解了 视图以及触发器的 管理及使用,然后 结合“选课系统” 分别介绍视图以及 触发器在该系统中 的应用。
1 视图 2 触发器 3 临时表
4 派生表(Derived Table)
5 视图、子查询、临时表、派生表
作业
• P213 • 1、2、3(检查视图)、4、6。 • 复习 1、2、3(重点第3章)
• 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 视图名
insert into choose_2_view values (null,'2012004',2,100,now());
• 然后分析普通视图与检查视图之间的区别。
定义的格式不同. 更新基表数据时,检查视图对检查数据先检查,而后更新,不满足 检查视图定义的检查条件,则更新失败。而普通视图不具备“检 查”功能。
7.1.3 视图在“选课系统”中的应用
• 3、从视图中获取信息修改原表的数据.
• update course • set available=up_limit• (select student_num from available_course_view • where course_no=course.course_no);
local 检查 视图与 cascade检 查视图
操作1: 通过该视图执行update 操作,将c赋值为70。 将无法完成此操作 操作2: 通过该视图执行update操 作,将c赋值为70。 此操作可以成功执行
cascaded检查视图 检查条件:c>50 a cascaded检查视图 检查条件:c<60
表 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 视图
应用程序 视图与表有很多相似 的地方,视图也是由若 干个字段以及若干条记 从视图中读取数据 通过视图中修改数据 录构成,视图也可以作 为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;
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 准备工作
MySQL的触发事件有三种: insert:将新记录插入表时激活触发程序, 例如通过insert、load data和replace语句,可 以激活触发程序运行。
准备工作
使用触发器实现检查约束
使用触发器维护冗余数据 使用触发器模拟外键级联选项 查看触发器的定义
7.2 触发器
触发器主要用于监视某 个表的insert、update 以及delete等更新操作, 这些操作可以分别激活 6 该表的insert、update 7 或者delete类型的触发程 序运行,从而实现数据 的自动维护。
基本表2
数据库
基本表3
7.1 视图
视图中保存的仅仅 是一条select语句, 1 视图中的源数据都来 自于数据库表,数据 2 库表称为基本表或者 3 基表,视图称为 。
创建视图 查看视图的定义 视图在“选课系统”中的应用
4 视图的作用 5 删除视图
7.1 视图
视图中保存的仅仅 是一条select语句, 视图中的源数据都来 自于数据库表,数据 6 库表称为基本表或者 7 基表,视图称为虚表。
• • • • 创建所有班级的学生情况视图 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.1.6 检查视图
视图分为普通视图与检查视图,没有使用‘with check optiom’子句的视图都是普通试图。 通过检查视图更新基表数据时,只有满足 检查条件的更新语句才能成功执行。创建检 查视图的语法格式如下。 create view 视图名 [ (视图字段列表) ] as select语句 with [ local | cascaded ] check option
如: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;
7.1.1 创建视图
任务布臵1: “对于经常使用的、结构复杂的 select语句,建议将其封装为视图 ”。 例如:为统计每门课程还能供多少同学选修, 定义名为 available_course_view的视图。