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 可以时查看结果更加清晰
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:视图
下一篇: MyBatis学习笔记——未完结