版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MySQLMySQL数据库基础与实例教程数据库基础与实例教程 之之视图触发器视图触发器1 12 23 3 本章首先讲解了本章首先讲解了视图以及触发器的视图以及触发器的管理及使用,然后管理及使用,然后结合结合“选课系统选课系统”分别介绍视图以及分别介绍视图以及触发器在该系统中触发器在该系统中的应用。的应用。 4 4触发器触发器视图视图临时表临时表派生表(派生表(Derived Table)5 5视图、子查询、临时表、派生表视图、子查询、临时表、派生表内容一览内容一览 作业 P213 1、2、3(检查视图)、4、6。 复习 1、2、3(重点第3章) 视图与表有很多相似视图与表有很多相似的地方,的地
2、方,视图也是由若视图也是由若干个字段以及若干条记干个字段以及若干条记录构成,视图也可以作录构成,视图也可以作为为select语句的数据源。语句的数据源。甚至在某些特定条件下,甚至在某些特定条件下,可以通过视图对表进行可以通过视图对表进行更新操作。更新操作。7.1 7.1 视图视图1 12 23 3 视图中保存的仅仅视图中保存的仅仅是一条是一条select语句,语句,视图中的源数据都来视图中的源数据都来自于数据库表,数据自于数据库表,数据库表称为基本表或者库表称为基本表或者基表,视图称为基表,视图称为。 查看视图的定义查看视图的定义创建视图创建视图视图在视图在“选课系统选课系统”中的应用中的应用
3、45视图的作用视图的作用删除视图删除视图7.1 7.1 视图视图6 67 7 视图中保存的仅仅视图中保存的仅仅是一条是一条select语句,语句,视图中的源数据都来视图中的源数据都来自于数据库表,数据自于数据库表,数据库表称为基本表或者库表称为基本表或者基表,视图称为虚表。基表,视图称为虚表。 检查视图检查视图local与与cascade检查视图检查视图7.1 7.1 视图视图创建视图的语法格式如下。创建视图的语法格式如下。create view 视图名视图名 (视图字段列表视图字段列表) asselect语句语句对于经常使用的、结构复杂的对于经常使用的、结构复杂的select语句,语句,建议
4、将其封装为视图建议将其封装为视图 ”.简化数据查询操作。简化数据查询操作。7.1.1 7.1.1 创建视图创建视图7.1.1 创建视图 视图视图(view)为数据查询提供了一条捷径为数据查询提供了一条捷径,简化数简化数据查询操作据查询操作. 创建所有班级的学生情况视图 create view v1_view AS select classes1.class_no,class_name,department_name,student_no,student_name from student1 right join classes1 on student1.class_no=classes1.cl
5、ass_no; select * from v1_view where class_no=1; select * from v1_view where class_no=2;任务布置任务布置1: “对于经常使用的、结构复杂的对于经常使用的、结构复杂的select语句,建议将其封装为视图语句,建议将其封装为视图 ”。例如:为统计每门课程还能供多少同学选修,例如:为统计每门课程还能供多少同学选修,定义名为定义名为 available_course_view的视图。的视图。7.1.1 7.1.1 创建视图创建视图create view available_course_viewASselect co
6、urse.course_no,course_name,teacher_name,up_limit,count(*) as student_num,up_limit-count(*) as availablefrom teacher inner join courseon teacher.teacher_no=course.teacher_noinner join chooseon choose.course_no=course.course_nogroup by course.course_no;Select * from available_course_view;可以使用下面可以使用下面四
7、种方法查看视图的定义四种方法查看视图的定义。 1在在choose数据库中成功地创建了视图数据库中成功地创建了视图available_course_view后,该视图的定义默后,该视图的定义默认保存在数据库目录(例如认保存在数据库目录(例如choose目录)下,目录)下,文件名为文件名为available_course_view.frm。使用。使用记事本打开该文件,即可查看该视图的定义。记事本打开该文件,即可查看该视图的定义。7.1.2 7.1.2 查看视图的定义查看视图的定义可以使用下面四种方法查看视图的定义。可以使用下面四种方法查看视图的定义。 2视图是一个虚表,也可以使用查看表结构视图是一
8、个虚表,也可以使用查看表结构的方式查看视图的定义的方式查看视图的定义 desc v1_view。 3MySQL命令命令“show tables;”命令不仅显命令不仅显示当前数据库中所有的基表,也会将所有的示当前数据库中所有的基表,也会将所有的视图罗列出来。视图罗列出来。7.1.2 7.1.2 查看视图的定义查看视图的定义可以使用下面四种方法查看视图的定义。可以使用下面四种方法查看视图的定义。 4MySQL系统数据库系统数据库information_schema的的views表存储了所有视图的定义,使用下面表存储了所有视图的定义,使用下面的的select语句查询该表的所有记录,也可以语句查询该表
9、的所有记录,也可以查看所有视图的详细信息。查看所有视图的详细信息。select * from information_schema.viewsG7.1.2 7.1.2 查看视图的定义查看视图的定义原来的原来的course表的结构表的结构: dese course;从现在开始,新课程从现在开始,新课程course表中比原来的课程表中比原来的课程course表表多了一个多了一个“剩余的学生名剩余的学生名额额”available字段。字段。任务布置任务布置2:上机操作,完成本书:上机操作,完成本书场景描述场景描述2的的任务要求。任务要求。7.1.3 7.1.3 视图在视图在“选课系统选课系统”中的应
10、用中的应用7.1.3 视图在“选课系统”中的应用 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.1.3 视图在“选课系统”中的应用 3、从视图中获取信息修改原表的数据从视图中获取信息修改原表的数据. update course set available=up_limit- (select student_num from
11、 available_course_view where course_no=course.course_no); 4、查询course表的信息 select course_no,course_name,up_limit,available from course;1使操作变得简单使操作变得简单2避免数据冗余避免数据冗余3增强数据安全性增强数据安全性4提高数据的逻辑独立性提高数据的逻辑独立性7.1.4 7.1.4 视图的作用视图的作用如果某个视图不再使用,可以使用如果某个视图不再使用,可以使用drop view语句将该视图删除,语法格式如下。语句将该视图删除,语法格式如下。drop view
12、视图名视图名7.1.5 7.1.5 删除视图删除视图视图分为普通视图与检查视图视图分为普通视图与检查视图,没有使用没有使用with check optiom子句的视图都是普通试图子句的视图都是普通试图。 通过检查视图更新基表数据时,只有满足通过检查视图更新基表数据时,只有满足检查条件的更新语句才能成功执行。创建检检查条件的更新语句才能成功执行。创建检查视图的语法格式如下。查视图的语法格式如下。create view 视图名视图名 (视图字段列表视图字段列表) asselect语句语句with local | cascaded check option7.1.6 7.1.6 检查视图检查视图任务
13、布置任务布置3:上机操作,完成本书:上机操作,完成本书场景描述场景描述3:普通视图与更新操作普通视图与更新操作的任务要求。的任务要求。 创建成绩不及格的选修试图创建成绩不及格的选修试图choose_1_view create view choose_1_view as select * from choose where score60;7.1.6 7.1.6 检查视图检查视图一、插入数据一、插入数据 insert into choose_1_view values null,2012003,2,100,now(); select * from choose; Select * from ch
14、oose_1_view;二、删除数据二、删除数据 delete from choose where student_no=2012003 and course_no=2; Select * from choose; Select * from choose_1_view; 普通视图不具备普通视图不具备”检查检查”功能功能.7.1.6 检查视图 任务布置4:上机操作,完成本书场景描述4: 检查视图与更新操作的任务要求。 创建成绩不及格的选修试图choose_2_view create view choose_2_view as select * from choose where score60
15、 with local check option; insert into choose_2_view values (null,2012004,2,100,now(); 然后分析普通视图与检查视图之间的区别。 定义的格式不同. 更新基表数据时,检查视图对检查数据先检查,而后更新,不满足检查视图定义的检查条件,则更新失败。而普通视图不具备“检查”功能。如:p 213-3 create view choose_3_view as select * from choose where score between 0 and 100 with local check option; insert i
16、nto 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;检查视图分为检查视图分为local检查视图与检查视图与cascade检查检查视图。视图。with_check_option的值为的值为1时表示时表示local(l
17、ocal视图),视图),值为值为2时表示时表示cascade(级联视图,在视图的(级联视图,在视图的基础上再次创建另一个视图)。基础上再次创建另一个视图)。7.1.6 local7.1.6 local与与cascadecascade检查视图检查视图local 检查检查视图与视图与cascade检检查视图查视图7.1.6 local7.1.6 local与与cascadecascade检查视图检查视图1 12 23 3触发器主要用于监视某触发器主要用于监视某个表的个表的insert、update以及以及delete等更新操作,等更新操作,这些操作可以分别激活这些操作可以分别激活该表的该表的ins
18、ert、update或者或者delete类型的触发类型的触发程序运行,从而实现数程序运行,从而实现数据的自动维护。据的自动维护。 使用触发器实现检查约束使用触发器实现检查约束准备工作准备工作使用触发器维护冗余数据使用触发器维护冗余数据45使用触发器模拟外键级联选项使用触发器模拟外键级联选项查看触发器的定义查看触发器的定义7.2 7.2 触发器触发器6 67 7触发器主要用于监视某触发器主要用于监视某个表的个表的insert、update以及以及delete等更新操作,等更新操作,这些操作可以分别激活这些操作可以分别激活该表的该表的insert、update或者或者delete类型的触发程类型的
19、触发程序运行,从而实现数据序运行,从而实现数据的自动维护。的自动维护。 删除触发器删除触发器使用触发器的注意事项使用触发器的注意事项7.2 7.2 触发器触发器7.2 7.2 触发器触发器使用使用create trigger语句可以创建一个触发器,语句可以创建一个触发器,语法格式如下。语法格式如下。create trigger 触发器名触发器名 触发时间触发时间 触发事件触发事件 on 表名表名 for each rowbegin触发程序触发程序end7.2.1 7.2.1 准备工作准备工作MySQLMySQL的触发事件有三种:的触发事件有三种: insert insert:将新记录插入表时激
20、活触发程序,将新记录插入表时激活触发程序,例如通过例如通过insertinsert、load dataload data和和replacereplace语句,可语句,可以激活触发程序运行。以激活触发程序运行。7.2.1 7.2.1 准备工作准备工作MySQLMySQL的触发事件有三种:的触发事件有三种: updateupdate:更改某一行记录时激活触发程序,更改某一行记录时激活触发程序,例如通过例如通过updateupdate语句,可以激活触发程序运行。语句,可以激活触发程序运行。 deletedelete:从表中删除某一行记录时激活触发从表中删除某一行记录时激活触发程序,例如通过程序,例如
21、通过deletedelete和和replacereplace语句,可以激活语句,可以激活触发程序运行。触发程序运行。7.2.1 7.2.1 准备工作准备工作 触发器的触发时间有两种:触发器的触发时间有两种:beforebefore与与afterafter。beforebefore表示在触发事件发生之前执行触发程表示在触发事件发生之前执行触发程序。序。afterafter表示在触发事件发生之后执行触发器表示在触发事件发生之后执行触发器。因此严格意义上讲一个数据库表最多可以设因此严格意义上讲一个数据库表最多可以设置六种类型的触发器。置六种类型的触发器。7.2.1 7.2.1 准备工作准备工作for
22、 each rowfor each row表示行级触发器。表示行级触发器。 目前目前MySQLMySQL仅支持行级触发器,不支持语仅支持行级触发器,不支持语句级别的触发器(例如句级别的触发器(例如create tablecreate table等语等语句)。句)。for each rowfor each row表示更新(表示更新(insertinsert、updateupdate或者或者deletedelete)操作影响的每一条记录)操作影响的每一条记录都会执行一次触发程序。都会执行一次触发程序。7.2.1 7.2.1 准备工作准备工作触发程序中可以使用触发程序中可以使用old关键字与关键字与
23、new关键字。关键字。 当向表插入新记录时,在触发程序中可当向表插入新记录时,在触发程序中可以使用以使用new关键字表示新记录,当需要访问关键字表示新记录,当需要访问新记录的某个字段值时,可以使用新记录的某个字段值时,可以使用“new.字字段名段名”的方式访问。的方式访问。7.2.1 7.2.1 准备工作准备工作触发程序中可以使用触发程序中可以使用old关键字与关键字与new关键字。关键字。 当从表中删除某条旧记录时,在触发程当从表中删除某条旧记录时,在触发程序中可以使用序中可以使用old关键字表示旧记录,当需要关键字表示旧记录,当需要访问旧记录的某个字段值时,可以使用访问旧记录的某个字段值时
24、,可以使用“old.字段名字段名”的方式访问。的方式访问。7.2.1 7.2.1 准备工作准备工作触发程序中可以使用触发程序中可以使用oldold关键字与关键字与newnew关键字。关键字。 当修改表的某条记录时,在触发程序中当修改表的某条记录时,在触发程序中可以使用可以使用oldold关键字表示修改前的旧记录、使关键字表示修改前的旧记录、使用用newnew关键字表示修改后的新记录。当需要访关键字表示修改后的新记录。当需要访问旧记录的某个字段值时,可以使用问旧记录的某个字段值时,可以使用“old.old.字段名字段名”的方式访问。当需要访问修改后的的方式访问。当需要访问修改后的新记录的某个字段
25、值时,可以使用新记录的某个字段值时,可以使用“new.new.字字段名段名”的方式访问。的方式访问。7.2.1 7.2.1 准备工作准备工作触发程序中可以使用触发程序中可以使用old关键字与关键字与new关键字。关键字。 old记录是只读的,可以引用它,但不能记录是只读的,可以引用它,但不能更改它。在更改它。在before触发程序中,可使用触发程序中,可使用“set new.col_name = value”更改更改new记录的值。记录的值。7.2.1 7.2.1 准备工作准备工作 前面曾经提到,前面曾经提到,MySQL可以使用复合数据可以使用复合数据类型类型set或者或者enum对字段的取值
26、范围进行检对字段的取值范围进行检查约束,使用复合数据类型可以实现离散的查约束,使用复合数据类型可以实现离散的字符串数据的检查约束,对于数值型的数不字符串数据的检查约束,对于数值型的数不建议使用建议使用set或者或者enum实现检查约束,可以实现检查约束,可以使用触发器实现。使用触发器实现。7.2.2 7.2.2 使用触发器实现检查约束使用触发器实现检查约束任务布置任务布置5 5:上机操作,完成本书:上机操作,完成本书场景描述场景描述5 5:使用触发器实现检查约束使用触发器实现检查约束的任务要求。的任务要求。7.2.2 7.2.2 使用触发器实现检查约束使用触发器实现检查约束 冗余的数据需要额外
27、的维护,维护冗余数冗余的数据需要额外的维护,维护冗余数据时,为了避免数据不一致问题的发生(例据时,为了避免数据不一致问题的发生(例如:剩余的学生名额如:剩余的学生名额+已选学生人数已选学生人数课程的课程的人数上限),冗余的数据应该尽量避免交由人数上限),冗余的数据应该尽量避免交由人工维护,建议冗余的数据交由应用系统人工维护,建议冗余的数据交由应用系统(例如触发器)自动维护。(例如触发器)自动维护。7.2.3 7.2.3 使用触发器维护冗余数据使用触发器维护冗余数据任务布置任务布置6:上机操作,完成本书:上机操作,完成本书场景描述场景描述6:使用触发器自动维护课程使用触发器自动维护课程avail
28、able的字段值的字段值的任务要求。的任务要求。7.2.3 7.2.3 使用触发器维护冗余数据使用触发器维护冗余数据 对于对于InnoDB存储引擎的表而言,由于支持存储引擎的表而言,由于支持外键约束,在定义外键约束时,通过设置外外键约束,在定义外键约束时,通过设置外键的级联选项键的级联选项cascade、set null或者或者no action(restrict),外键约束关系可以交由),外键约束关系可以交由InnoDB存储引擎自动维护。存储引擎自动维护。7.2.4 7.2.4 使用触发器模拟外键级联选项使用触发器模拟外键级联选项任务布置任务布置7:上机操作,完成本书:上机操作,完成本书场景
29、描述场景描述7:使用使用InnoDB存储引擎维护外键约束关系存储引擎维护外键约束关系的任的任务要求。务要求。任务布置任务布置8:上机操作,完成本书:上机操作,完成本书场景描述场景描述8:使用触发器模拟外键级联选项使用触发器模拟外键级联选项的任务要求。的任务要求。7.2.4 7.2.4 使用触发器模拟外键级联选项使用触发器模拟外键级联选项可以使用下面四种方法查看触发器的定义。可以使用下面四种方法查看触发器的定义。1使用使用show triggers命令查看触发器的定命令查看触发器的定义义7.2.5 7.2.5 查看触发器的定义查看触发器的定义可以使用下面四种方法查看触发器的定义。可以使用下面四种
30、方法查看触发器的定义。2查询查询information_schema数据库中的数据库中的triggers表,可以查看触发器的定义表,可以查看触发器的定义MySQL中所有触发器的定义都存放在中所有触发器的定义都存放在information_schema数据库下的数据库下的triggers表中,表中,查询查询triggers表,可以查看所有数据库中所有触表,可以查看所有数据库中所有触发器的详细信息,查询语句如下:发器的详细信息,查询语句如下:select * from information_schema.triggersG7.2.5 7.2.5 查看触发器的定义查看触发器的定义可以使用下面四种方
31、法查看触发器的定义。可以使用下面四种方法查看触发器的定义。3使用使用“show create trigger”命令可以查看某命令可以查看某一个触发器的定义。一个触发器的定义。例如使用例如使用“show create trigger organization_delete_before_triggerG”命令可命令可以查看触发器以查看触发器organization_delete_before_trigger的定义。的定义。7.2.5 7.2.5 查看触发器的定义查看触发器的定义可以使用下面四种方法查看触发器的定义。可以使用下面四种方法查看触发器的定义。4成功创建触发器后,成功创建触发器后,MyS
32、QL自动在数据库目自动在数据库目录下创建录下创建TRN以及以及TRG触发器文件,以记事本方触发器文件,以记事本方式打开这些文件,可以查看触发器的定义。式打开这些文件,可以查看触发器的定义。7.2.5 7.2.5 查看触发器的定义查看触发器的定义可以使用可以使用drop trigger语句将该触发器删除,语语句将该触发器删除,语法格式如下。法格式如下。drop trigger 触发器名触发器名7.2.6 7.2.6 删除触发器删除触发器1触发程序中如果包含触发程序中如果包含select语句,该语句,该select语语句不能返回结果集。句不能返回结果集。2同一个表不能创建两个相同触发时间、触发同一
33、个表不能创建两个相同触发时间、触发事件的触发程序。事件的触发程序。3触发程序中不能使用以显式或隐式方式打开、触发程序中不能使用以显式或隐式方式打开、开始或结束事务的语句,如开始或结束事务的语句,如start transaction、commit、rollback或者或者set autocommit=0等语等语句。句。7.2.7 7.2.7 使用触发器的使用触发器的1010条注意事项条注意事项4MySQL触发器针对记录进行操作,当批量更触发器针对记录进行操作,当批量更新数据时,引入触发器会导致更新操作性能降低。新数据时,引入触发器会导致更新操作性能降低。5在在MyISAM存储引擎中,触发器不能保
34、证原子存储引擎中,触发器不能保证原子性。性。InnoDB存储引擎支持事务,使用触发器可存储引擎支持事务,使用触发器可以保证更新操作与触发程序的原子性,此时触发以保证更新操作与触发程序的原子性,此时触发程序和更新操作是在同一个事务中完成。程序和更新操作是在同一个事务中完成。7.2.7 7.2.7 使用触发器的使用触发器的1010条注意事项条注意事项6InnoDB存储引擎实现外键约束关系时,建议存储引擎实现外键约束关系时,建议使用级联选项维护外键数据;使用级联选项维护外键数据;MyISAM存储引擎存储引擎虽然不支持外键约束关系时,但可以使用触发器虽然不支持外键约束关系时,但可以使用触发器实现级联修
35、改和级联删除,进而维护实现级联修改和级联删除,进而维护“外键外键”数数据,模拟实现外键约束关系。据,模拟实现外键约束关系。7.2.7 7.2.7 使用触发器的使用触发器的1010条注意事项条注意事项7使用触发器维护使用触发器维护InnoDB外键约束的级联选项外键约束的级联选项时,数据库开发人员究竟应该选择时,数据库开发人员究竟应该选择after触发器还触发器还是是before触发器?答案是:应该首先维护子表的触发器?答案是:应该首先维护子表的数据,然后再维护父表的数据,否则可能出现错数据,然后再维护父表的数据,否则可能出现错误。误。 7.2.7 7.2.7 使用触发器的使用触发器的1010条注
36、意事项条注意事项8MySQL的触发程序不能对本表进行更新语句的触发程序不能对本表进行更新语句(例如(例如update语句)。触发程序中的更新操作可语句)。触发程序中的更新操作可以直接使用以直接使用set命令替代,否则可能出现错误信息,命令替代,否则可能出现错误信息,甚至陷入死循环。甚至陷入死循环。9在在before触发程序中,触发程序中,auto_increment字段字段的的new值为值为0,不是实际插入新记录时自动生成的,不是实际插入新记录时自动生成的自增型字段值。自增型字段值。7.2.7 7.2.7 使用触发器的使用触发器的1010条注意事项条注意事项10添加触发器后,建议对其进行详细的
37、测试,添加触发器后,建议对其进行详细的测试,测试通过后再决定是否使用触发器。测试通过后再决定是否使用触发器。7.2.7 7.2.7 使用触发器的使用触发器的1010条注意事项条注意事项1 12 23 3按照按照MySQL临时表的存储临时表的存储位置可以将其分为内存临位置可以将其分为内存临时表(时表(in-memory)以及)以及外存临时表(外存临时表(on-disk)。)。 按照按照MySQL临时表的创建临时表的创建时机可以将其分为自动创时机可以将其分为自动创建的临时表以及手动创建建的临时表以及手动创建的临时表。的临时表。 “选课系统选课系统”中临时表的使用中临时表的使用临时表的创建、查看与删
38、除临时表的创建、查看与删除使用临时表的注意事项使用临时表的注意事项7.3 7.3 临时表临时表1手动创建临时表手动创建临时表手动创建临时表很容易,给正常的手动创建临时表很容易,给正常的create table语句加上语句加上temporary关键字即可。关键字即可。 2查看临时表的定义可以使用查看临时表的定义可以使用MySQL语句语句“show create table 临时表名临时表名;”。 7.3.1 7.3.1 临时表的创建、查看与删除临时表的创建、查看与删除3断开断开MySQL服务器的连接,临时表服务器的连接,临时表frm表结表结构定义文件以及表记录将被清除。使用构定义文件以及表记录将
39、被清除。使用drop命令命令也可以删除临时表,语法格式如下。也可以删除临时表,语法格式如下。drop temporary table 临时表表名临时表表名7.3.1 7.3.1 临时表的创建、查看与删除临时表的创建、查看与删除任务布置任务布置9:上机操作,完成本书:上机操作,完成本书场景描述场景描述9的任的任务要求。务要求。7.3.2 “7.3.2 “选课系统选课系统”中临时表的使用中临时表的使用 使用存储程序可以实现表数据的复杂加工处使用存储程序可以实现表数据的复杂加工处理,有时需要将理,有时需要将select语句的查询结果集临时地语句的查询结果集临时地保存到存储程序(例如函数、存储过程)的
40、变量保存到存储程序(例如函数、存储过程)的变量中,不过目前中,不过目前MySQL并不支持表类型变量。临时并不支持表类型变量。临时表可以模拟实现表类型变量的功能。表可以模拟实现表类型变量的功能。7.3.2 7.3.2 使用临时表的注意事项使用临时表的注意事项 临时表如果与基表重名,那么基表将被隐藏,临时表如果与基表重名,那么基表将被隐藏,除非删除临时表,基表才能被访问。除非删除临时表,基表才能被访问。 Memory、MyISAM、Merge或者或者InnoDB存存储引擎的表都支持临时表。储引擎的表都支持临时表。 临时表不支持聚簇索引、触发器。临时表不支持聚簇索引、触发器。7.3.2 7.3.2
41、使用临时表的注意事项使用临时表的注意事项 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 7.3.2 使
42、用临时表的注意事项使用临时表的注意事项 派生表与视图一样,一般在派生表与视图一样,一般在from子句中使用,子句中使用,其语法格式如下(粗体字代码为派生表代码)。其语法格式如下(粗体字代码为派生表代码)。.from (select子句子句) 派生表名派生表名.派生表必须是一个有效的表,因此它必须遵守以派生表必须是一个有效的表,因此它必须遵守以下规则:下规则:每个派生表必须有自己的别名。每个派生表必须有自己的别名。派生表中的所有字段必须要有名称,字段名必须派生表中的所有字段必须要有名称,字段名必须唯一。唯一。7.4 7.4 派生表(派生表(Derived TableDerived Table)任务布置任务布置10:完成本书:完成本书场景描述场景
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东海洋大学《环境工程制图与CAD》2023-2024学年第一学期期末试卷
- 广东工商职业技术大学《和声(2)》2023-2024学年第一学期期末试卷
- 广东潮州卫生健康职业学院《藏族文化概论》2023-2024学年第一学期期末试卷
- 广东财经大学《内燃机设计》2023-2024学年第一学期期末试卷
- 社保统计培训课件
- 安全运输课件
- 《组织环境与文化》课件
- 培训体系课件要求
- 赣州师范高等专科学校《地理信息系统开发》2023-2024学年第一学期期末试卷
- 《辅助技能》课件
- 抖音直播电商项目计划书抖音电商创业商业计划书抖音直播带货计划书抖音电商运营方案
- TCPQS XF003-2023 灭火器产品维修、更换及售后服务
- htr-pm学习课件18燃耗测量系统
- GB/T 24218.2-2009纺织品非织造布试验方法第2部分:厚度的测定
- 2022-2023学年度二年级数学.(上册)寒假作业【每日一练】
- 铸牢中华民族共同体意识学习PPT
- 公司年会小品《老同学显摆大会》台词剧本手稿
- 奖励旅游策划与组织课件
- 《信息素养与实践》课程教学大纲
- 行政事业单位内部控制规范讲解课件
- 鸡舍通风设计
评论
0/150
提交评论