MYSQL——视图,触发器,存储过程,函数,流程控制
一、视图
视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用;
使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用。
ps: 视图在库里只有表结构文件没有表数据
我们不应该修改视图中的记录,而且在涉及多个表的情况下是根本无法修改视图中的记录的
# =============================创建视图 select * from emp inner join dep on emp.dep_id = dep.id; create view emp2dep as select emp.*,dep.name as dep_name from emp inner join dep on emp.dep_id = dep.id; mysql> update emp2dep set name="EGON" where id=1; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from emp2dep; +----+-----------+--------+------+--------+--------------+ | id | name | sex | age | dep_id | dep_name | +----+-----------+--------+------+--------+--------------+ | 1 | EGON | male | 18 | 200 | 技术 | | 2 | alex | female | 48 | 201 | 人力资源 | | 3 | wupeiqi | male | 38 | 201 | 人力资源 | | 4 | yuanhao | female | 28 | 202 | 销售 | | 5 | liwenzhou | male | 18 | 200 | 技术 | +----+-----------+--------+------+--------+--------------+ 5 rows in set (0.00 sec) mysql> mysql> mysql> select * from emp; +----+------------+--------+------+--------+ | id | name | sex | age | dep_id | +----+------------+--------+------+--------+ | 1 | EGON | male | 18 | 200 | | 2 | alex | female | 48 | 201 | | 3 | wupeiqi | male | 38 | 201 | | 4 | yuanhao | female | 28 | 202 | | 5 | liwenzhou | male | 18 | 200 | | 6 | jingliyang | female | 18 | 204 | | 7 | lili | female | 48 | NULL | +----+------------+--------+------+--------+ 7 rows in set (0.00 sec) mysql> # =============================修改视图 alter view emp2dep as 查询语句; # =============================删除视图 drop view emp2dep;