欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MYSQL视图

程序员文章站 2022-07-12 22:18:31
...

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 可以时查看结果更加清晰

MYSQL视图

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 里面包含子查询

相关标签: Mysql