MYSQL视图

1、视图

一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是使用视图的时候,动态生成的,只是保存着SQL逻辑,不保存结果

1.1 视图与表

视图:虚拟表,和普通表一样,但是通过表,动态生成的,不占用物理空间

表:数据库中真实存在的,占用物理空间

1.2 创建视图

视图名不能为数字

create view v1 as select * from girls where id<3;

1.3 删除视图

drop view v1;

1.4 查看视图

1.4.1 查看视图内容

select * from v1;

1.4.2 查看视图格式

desc 视图名;

show create view 视图名;

1.4.3 在dos窗口查看时

show create view v2 \G; # 带上\大G 可以使查看结果更加清晰

在这里插入图片描述

1.5 视图的应用场景

1、多个场景用到相同的sql

2、该查询使用的sql比较复杂

1.6 视图实例

先创建视图了保存中间值

create or replace view v2 as
select avg(goods.price) avg_price,brand.brandname from goods inner join brand on goods.brand_id=brand.id 
group by goods.brand_id; 

在v2视图的基础上查询

select min(v2.avg_price),v2.brandname from v2 where v2.avg_price = 
(select min(v2.avg_price) from v2);

注意:min(...) 不能作为匹配条件,只能当作选择显示条件

1.7 修改视图

方法一:

create or replace view 视图名字
as
sql 语句

方法二:

alter view v2 as 
select name from goods;

1.8 更新视图

1.8.1 向视图中插入数据(会修改原始表!)

insert into v2 values('小霸王游戏机');

1.8.2 修改表数据(会修改原始表!)

update v2 set name='战斗陀螺' where name='小霸王游戏机';

1.8.3 删除视图数据也会修改原始表

1.8.4 总结

注意:

由于对视图的修改会造成原始表数据的更改,所以给别人操作我们的视图是只给读权限。

1.8.5 不能更新的视图

1、包含关键字:分组,去重,having ,union

2、常量视图

select '哈哈';

select '哈哈' name;  # name规定字段的名字

3、select 里面包含子查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值