码迷,mamicode.com
首页 > 数据库 > 详细

mysql----视图

时间:2020-02-23 20:40:01      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:rip   null   lte   group   通过   set   生成   avg   job   

视图:
含义:虚拟表,和普通表一样使用
MySQL5.5版本出现的新特性,是通过表动态生成的数据
比如:舞蹈班和普通班的对比,
通常,舞蹈班的学生是通过普通班的学生组建起来的,也就是说舞蹈班的学生来自于普通班

案例:查询姓张的学生名和专业名
select stuname,majorname
 from stuinfo a 
 inner join major m on a.majorid=m.id
 where a.stuname like ‘张%‘;
 
 换一种做法:
 创建一个视图
 create view v1
 as
 select stuname,majorname
 from stuinfo a 
 inner join major m on a.majorid=m.id;
	
	
这样,上面案例可以这样做:
select stuname,majorname from v1 WHERE stuname like ‘张%‘;

二;视图的修改
方式一:
语法:
create or REPLACE view 视图名
as
查询语句;
案例:
create or REPLACE view myv3
as
select avg(salary),job_id
from employees
GROUP BY job_id;
方式二:
语法:
alter view 视图名
as
查询语句;
案例:
alter view myv3
as 
SELECT * from employees;

三、删除视图
语法:drop view 视图名,视图名,,,,
一次行可以删除多个视图
 drop view myv1,myv2;
 
 四、查看视图
 desc myv3;
 show create view myv3;---推荐在dos命令窗口进行使用
 
 五、更新视图
create or REPLACE view myv3
as 
select last_name,email
from employees;

#1插入
insert into myv1 VALUES(‘张飞‘,‘zf@qq.com‘);
运行结果;能够向视图中插入数据,同样也能够向原始表中插入数据,只不过没有复制的字段是为null
#修改   是同样的道理
update myv1 set last_name =‘张无忌‘ where last_name =‘张飞‘;

#删除也是同样的道理
delete from myv1 where last_name=‘张无忌‘;

不过总体上来说,视图在大部分情况下是不能够进行更新操纵的

  

mysql----视图

标签:rip   null   lte   group   通过   set   生成   avg   job   

原文地址:https://www.cnblogs.com/dongyaotou/p/12353323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!