7、MySQL视图

1 什么是视图

  1. 视图是一种虚拟表。
  2. 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。
  3. 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句.
  4. 视图向用户提供基表数据的另一种表现形式

2 视图的作用

  • 权限控制时可以使用
    比如,某几个列可以运行用户查询,其他列不允许,可以开通视图 查询特定的列, 起到权限控制的作用
  • 简化复杂的多表查询
    • 视图 本身就是一条查询SQL,我们可以将一次复杂的查询 构建成一张视图, 用户只要查询视图就可以获取想要得到的信息(不需要再编写复杂的SQL)
    • 视图主要就是为了简化多表的查询

3 视图的使用

3.1 创建视图

  1. 语法格式
create view 视图名 [column_list] as select语句;
view: 表示视图
column_list: 可选参数,表示属性清单,指定视图中各个属性的名称,默认情况下,与SELECT语句中查询
的属性相同
as : 表示视图要执行的操作
select语句: 向视图提供数据内容
  1. 创建一张视图
#查询所有商品 和 商品的对应分类信息
SELECT * FROM products p LEFT JOIN category c ON p.`category_id` = c.`cid`;
#2.基于上面的查询语句,创建一张视图
CREATE VIEW products_category_view
AS SELECT * FROM products p LEFT JOIN category c ON p.`category_id` = c.`cid`;
  1. 查询视图 ,当做一张只读的表操作就可以
SELECT * FROM products_category_view;

在这里插入图片描述

3.2 通过视图进行查询

  1. 需求: 查询各个分类下的商品平均价格
#通过 多表查询
SELECT
	cname AS '分类名称',
	AVG(p.`price`) AS '平均价格'
FROM products p LEFT JOIN category c ON p.`category_id` = c.`cid`
GROUP BY c.`cname`;

# 通过视图查询 可以省略连表的操作
SELECT
	cname AS '分类名称',
	AVG(price) AS '平均价格'
FROM products_category_view GROUP BY cname;
  1. 需求: 查询鞋服分类下最贵的商品的全部信息
#通过连表查询
#1.先求出鞋服分类下的最高商品价格
SELECT
	MAX(price) AS maxPrice
FROM
	products p LEFT JOIN category c ON p.`category_id` = c.`cid`
WHERE c.`cname` = '鞋服'


#2.将上面的查询 作为条件使用
SELECT * FROM products p LEFT JOIN category c ON p.`category_id` = c.`cid`
WHERE c.`cname` = '鞋服' AND p.`price` =
(SELECT
	MAX(price) AS maxPrice
FROM
products p LEFT JOIN category c ON p.`category_id` = c.`cid`
WHERE c.`cname` = '鞋服');
#通过视图查询
SELECT * FROM products_category_view pcv
WHERE pcv.`cname` = '鞋服'AND pcv.`price` = (SELECT MAX(price) FROM products_category_view WHERE cname =
'鞋服')

4 视图与表的区别

  • 视图是建立在表的基础上,表存储数据库中的数据,而视图只是做一个数据的展示
  • 通过视图不能改变表中数据(一般情况下视图中的数据都是表中的列 经过计算得到的结果,不允许更新)
  • 删除视图,表不受影响,而删除表,视图不再起作用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值