09-视图

作者: 喝酸奶要舔盖__ | 来源:发表于2019-01-06 18:23 被阅读0次

视图基本概念

  • 什么是视图?
    • 视图仅仅是表的结构, 没有表的数据
    • 视图的结构和数据是建立在表的基础上的
    • 视图中保存了一张表或者多张表的部分或者所有数据
  • 视图的作用
+ 例如 表中有id,name,age,gender,score, 我们需要查询id,name,gender
    + select id,name,gender from stu;
    + 如果在表的基础上创建了一个包含id,name,gender的视图
    + select * from stu_view;
- 视图可以用来隐藏表的结构
    + 表中有id,name,age,gender,score, 视图中有id,name,gender
    + 那么外界在使用视图的时候就不知道表中还有age和score

创建视图语法

  • create view 视图名称 as select 语句;
示例一:
select name,city from stu;
create view stu_view as select name,city from stu;
select * from stu_view;

注意点:
视图仅仅是表的结构, 没有表的数据
视图是建立在表的基础上的, 如果修改视图中的数据本质上是修改了表中的数据

#由于视图不保存数据, 本质上数据是插入到了表中
insert into stu_view values('yyyy', '武汉');
#由于视图不保存数据, 本质上修改的是表中的数据
update stu_view set city='杭州' where name='ww';
#由于视图不保存数据, 本质上删除的是表中的数据
delete from stu_view where name='ww';

示例二:
在多表查询的时候, 如果需要显示重复字段, 必须在字段名称前面加上表名
select * from stuinfo inner join stugrade on stuinfo.stuid=stugrade.stuid;
select stuinfo.stuid, name, score from stuinfo inner join stugrade on stuinfo.stuid=stugrade.stuid;

create view studes_view as select stuinfo.stuid, name, score from stuinfo inner join stugrade on stuinfo.stuid=stugrade.stuid;

更改视图

  • alter view 视图名称 as select 语句;
create view stu_view as select name,city from stu;
# 修改视图返回的结果
alter view stu_view as select name,age,city from stu;

删除视图

drop view [if exists] 视图名;
drop view if exists stu_view;

视图算法(了解)

select * from (select * from stu order by score desc) as t group by city;
#将子查询封装到视图中去
create view order_view as select * from stu order by score desc;
#用视图替代子查询
select * from order_view group by city; #结果出现了误差

视图算法
- merge: 合并算法, 将视图的语句和外层的语句合并之后再执行
- temptable: 临时表算法, 将视图生成一个临时表, 再执行外层的语句
- undefined: 未定义, 由MySQL自己决定使用如上的哪一种算法, 默认就是undefined
           + 由于合并算法的效率比临时表算法效率高, 所以MySQL一般会选择合并算法
- 如上案例中导致数据混乱的原因就是因为默认使用了合并算法

#将子查询封装到视图中去
# algorithm=temptable指定视图的算法
create algorithm=temptable view order_view as select * from stu order by score desc;
#用视图替代子查询
select * from order_view group by city;

相关文章

  • 09-视图

    视图什么是视图视图负责接受Web请求HttpRequest,进行逻辑处理,返回Web响应HttpResponse给...

  • 09-视图

    视图基本概念 什么是视图?视图仅仅是表的结构, 没有表的数据视图的结构和数据是建立在表的基础上的视图中保存了一张表...

  • #09-手势识别(拖动,旋转,捏合)#

    09-手势识别(拖动,旋转,捏合)

  • 2018-01-19-这是一个图片上传库

    可以用简书创建图片库 HSTS重定向08 HSTS重定向09-缓存

  • 幸福实修

    早上好!#幸福实修#~每天进步1%#幸福实修12班-09-唐洁--富阳# 20171123(58/60) 【幸福...

  • iOS学习笔记10-UIView动画

    上次学习了iOS学习笔记09-核心动画CoreAnimation,这次继续学习动画,上次使用的CoreAnimat...

  • 幸福实修

    早上好!#幸福实修#~每天进步1%#幸福实修12班-09-唐洁--富阳# 20171125(60/60) 【幸福...

  • 幸福实修

    早上好!#幸福实修#~每天进步1%#幸福实修12班-09-唐洁--富阳# 20171122(57/60) 【幸福...

  • 幸福实修

    早上好!#幸福实修#~每天进步1%#幸福实修12班-09-唐洁--富阳# 20171124(59/60) 【幸福...

  • swift 4.2代码实现表视图UITableView

    表视图的组成 表头视图: 表视图最上边的视图,用于展示表视图的信息,也可以放搜索栏 表脚视图: 表视图最下边的视图...

网友评论

      本文标题:09-视图

      本文链接:https://www.haomeiwen.com/subject/ujvsrqtx.html