MySQL(15)视图
  TEZNKK3IfmPf 2023年11月14日 23 0

背景:对于复杂的查询,往往是有多个数据表进行关联查询而得到的,如果数据库因为需求等原因发生改变,为了保证查询出来的数据与之前的相同,则需要在多个地方进行修改,维护起来非常麻烦,解决这个问题的方案就是定义视图

  • 视图,通俗的来说,就是select语句查询到的执行返回的结果集,视图是多若干张表的引用,一张虚表,查询语句执行的结果,视图不存储具体的数据,当基本的数据表中的数据发生了变化,视图中的数据也会跟着发生变化

2、视图使用流程

  • 定义视图
create view 视图名称 as select语句;

如,根据之前创建的省市区的数据表,通过如下的命令可以查出来省-市-区结构,比如这里只查了江苏的情况:
MySQL(15)视图
那么这里其实就可以根据这个命令创建一个视图,这个视图中有三个字段,分别是省,市,和区,这样后续查询数据时就可以不用非常复杂的sql命令,而是直接从这个视图中查询了如:

mysql> create view v_province_city_dist as select p.atitle as province,c.atitle as city ,d.atitle as dist  from areas as p, areas as c, areas as d where p.pid=0 and p.aid=c.pid and c.aid=d.pid;

MySQL(15)视图

  • 查看视图
show tables;

MySQL(15)视图

  • 使用视图
select * from v_province_city_dist where province='江苏省';

如下,视图看上去好像就是一个数据表一样
MySQL(15)视图
所以,当需求变化了,需要更新数据表的时候,为了适配已经开发的代码,可以通过创建一个视图来适配现有的代码,从而做到了数据库的修改与代码开发的解耦

这里还需要注意的是,视图是专门用例查看数据的,如果要修改数据,还是要取基本的数据表修改,而基础的数据表更新了,视图中查到的数据会同步更新的

  • 删除视图
drop view xxx

如:
MySQL(15)视图

3、视图的作用

  • 提高了重用性,就像一个函数接口一样
  • 对数据库重构,却不影响程序的运行
  • 提高了安全性能,可以对不同的用户
  • 让数据更加清晰
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   30天前   24   0   0 mysql
  TEZNKK3IfmPf   2024年05月17日   48   0   0 sqlmysql
  TEZNKK3IfmPf   2024年05月17日   44   0   0 查询mysql索引
  TEZNKK3IfmPf   2024年05月17日   50   0   0 jsonmysql
  TEZNKK3IfmPf   2024年05月17日   48   0   0 mysqlphp
TEZNKK3IfmPf