MySQL数据库基础与实例第7章.ppt

  1. 1、本文档共72页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MySQL数据库基础与实例第7章课案

临时表如果与基表重名,那么基表将被隐藏,除非删除临时表,基表才能被访问。 Memory、MyISAM、Merge或者InnoDB存储引擎的表都支持临时表。 临时表不支持聚簇索引、触发器。 7.3.2 使用临时表的注意事项 show tables 命令不会显示临时表的信息。 不能用rename来重命名一个临时表。但可以使用alter table重命名临时表。 在同一条select语句中,临时表只能引用一次。例如下面的select语句将抛出“ERROR 1137 (HY000): Cant reopen table: t1”错误信息。 select * from temp as t1, temp as t2; 7.3.2 使用临时表的注意事项 派生表与视图一样,一般在from子句中使用,其语法格式如下(粗体字代码为派生表代码)。 ….from (select子句) 派生表名…. 派生表必须是一个有效的表,因此它必须遵守以下规则: 每个派生表必须有自己的别名。 派生表中的所有字段必须要有名称,字段名必须唯一。 7.4 派生表(Derived Table) 任务布置10:完成本书场景描述10的任务要求。 7.4 派生表(Derived Table) 子查询一般在主查询语句中的where子句或者having子句中使用。 视图通常在主查询语句中的from子句中使用。 7.5 子查询、视图、临时表、派生表 视图本质是一条select语句,执行的是某一个数据源某个字段的查询操作,如果视图的“主查询”语句是update语句、delete语句或者insert语句,且“主查询”语句执行了该数据源该字段的更新操作,那么主查询语句将出错。 原因非常简单:在对某个表的某个字段操作时,查询操作(select语句)不能与更新操作(update语句、delete语句或者insert语句)同时进行。 7.5 子查询、视图、临时表、派生表 与视图相似,临时表一般在from子句中使用。临时表与视图的区别在于: 临时表本质也是一条select语句,执行的是某一个数据源某个字段的查询操作,但由于临时表会先执行完毕,并且将查询结果集提前置放到服务器内存。因此“临时表”的“主查询”语句(例如update、delete或者insert语句)执行字段的更新操作时,不会产生“ERROR 1443 (HY000)”错误。 7.5 子查询、视图、临时表、派生表 派生表与临时表的功能基本相同,它们之间的最大区别在于生命周期不同。 临时表如果是手工创建,那么临时表的生命周期在MySQL服务器连接过程中有效; 而派生表的生命周期仅在本次select语句执行的过程中有效,本次select语句执行结束,派生表立即清除。因此,如果希望延长查询结果集的生命周期,可以选用临时表;反之亦然。 7.5 子查询、视图、临时表、派生表 另外,通过视图虽然可以更新基表的数据,但本书并不建议这样做。原因在于:通过视图更新基表数据,并不会触发触发器的运行。 7.5 子查询、视图、临时表、派生表 Thanks 7.2 触发器 使用create trigger语句可以创建一个触发器,语法格式如下。 create trigger 触发器名 触发时间 触发事件 on 表名 for each row begin 触发程序 end 7.2.1 准备工作 MySQL的触发事件有三种: insert:将新记录插入表时激活触发程序,例如通过insert、load data和replace语句,可以激活触发程序运行。 7.2.1 准备工作 MySQL的触发事件有三种: update:更改某一行记录时激活触发程序,例如通过update语句,可以激活触发程序运行。 delete:从表中删除某一行记录时激活触发程序,例如通过delete和replace语句,可以激活触发程序运行。 7.2.1 准备工作 触发器的触发时间有两种:before与after。 before表示在触发事件发生之前执行触发程序。 after表示在触发事件发生之后执行触发器。因此严格意义上讲一个数据库表最多可以设置六种类型的触发器。 7.2.1 准备工作 for each row表示行级触发器。 目前MySQL仅支持行级触发器,不支持语句级别的触发器(例如create table等语句)。for each row表示更新(insert、update或者delete)操作影响的每一条记录都会执行一次触发程序。 7.2.1 准备工作 触发程序中可以使用old关键字与new关键字。

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档