9、视图-触发器-存储过程-函数-流程控制
1-视图(view)
视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。
创建视图
#语法:create view 视图名称 as sql语句创建一个老师与对应课程的视图teacher2coursecreateviewteacher2courseasselect*fromteacherinnerjoincourseonteacher.tid=course.teacher_id;mysql>select*fromteacher2course;+-----+-----------------+-----+--------+------------+|tid|tname|cid|cname|teacher_id|+-----+-----------------+-----+--------+------------+|1|张磊老师|1|生物|1||2|李平老师|2|物理|2||3|刘海燕老师|3|体育|3||2|李平老师|4|美术|2|+-----+-----------------+-----+--------+------------+4rowsinset(0.00sec)#注意(1)创建视图在硬盘上只会有表结构,没有表的数据(数据还是来自与之前的表)(2)使用视图以后无需每次都要重新写子查询sql,但是这个效率并不高,还不如我们写子查询效率高,(3)而且有一个致命的问题:视图是存放到数据库里的,如果我们程序中的sql过分依赖于数据库中存放的视图,那么意味着,一旦sql需要修改且涉及到视图的部分,则必须去数据库中进行修改,而通常在公司中数据库有专门的DBA负责,你要想完成修改,必须付出大量的沟通成本DBA可能才会帮你完成修改,极其地不方便。
使用视图
#修改视图中的数据(字段信息)原始表也会修改1、创建一个课程的视图mysql>createviewcourse_viewasselect*fromcourse;#创建表course的视图2、更新视图的数据mysql>updatecourse_viewsetcname='xxx';3、往视图中插入数据mysql>insertintocou