【MySQL数据库】视图

视图

含义:理解成一张虚拟的表

mysql5.1版本出现的新特性,是通过表动态生成的数据。

比如:一个班级有一群舞蹈比较好的,组成一个舞蹈班,当领导来视察的时候,就把这个舞蹈班拿出来表演,平时舞蹈班的同学还是当作普通同学使用。

视图是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果。

应用场景:

  • 多个地方用到相同的查询结果;
  • 改查询结果使用的sql语句较复杂。

视图和表的区别:

       关键字    使用方式     占用物理空间
       
视图	   view     完全相同	   不占用,仅仅保存的是sql逻辑

表      table    完全相同    占用

视图的好处:

1、sql语句提高重用性,效率高;
2、和表实现了分离,保护数据,提高了安全性;
3、只提供给对方需要的关键信息,而原始表中的数据不让人知道。

视图逻辑的创建

#语法:
CREATE VIEW  视图名
AS
select 查询语句;

#实战,就像给某个select操作取名一样!类似于mybatis的关联查询
create view my_v1
as
select studentname,majorname
from student s;
inner join major m
on s.majorid=m.majorid
where s.majorid=1;

视图逻辑的修改

视图名重复就直接覆盖!!!!!

/******** 方式一 ********/
# 语法:
# create or replace view 视图名
# as
# select 查询语句;
#应用
create or replace view my_v1
as
select avg(salary),job_id
from employees
group by job_id;

/******** 方式二 ********/
#语法:
# alter view 视图名
# as
# select 查询语句;
#应用
alter view my_v1
as
select * from employees;

视图逻辑的删除、查看

#语法:drop view 视图名,视图名,...;
drop view my_v1,my_v2,my_v3;
#查看视图结构
desc my_v1;
show create view my_v1;#比较全,包括语句
show create view my_v1\G;#\G格式化一下

在平时使用的时候,视图可以当作表直接处理,比如join连接之类的。

视图的更新,增删改查

通常我们会给视图添加权限,只允许读,不允许写。

#1、使用视图的数据 ★可以把视图当成一个表来使用
SELECT * FROM my_v1;
SELECT * FROM my_v1 WHERE last_name='Partners';

#2、插入视图的数据(原始表也有!)
INSERT INTO my_v4(last_name,department_id) VALUES('虚竹',90);

#3、修改视图的数据(原始表同时更改!)
UPDATE my_v4 SET last_name ='梦姑' WHERE last_name='虚竹';

#4、删除视图的数据
DELETE FROM my_v4;

某些视图不能更新

  • 包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
  • 常量视图
  • Select中包含子查询
  • join
  • from一个不能更新的视图
  • where子句的子查询引用了from子句中的表
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值