MySQL:MySQL 视图

作者: 知信学源 | 来源:发表于2024-01-27 10:41 被阅读0次

1 什么是视图

1. 视图是一种虚拟表

  2. 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表

  3. 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句

  4. 视图向用户提供基表数据的另一种表现形式

2 视图的作用

<1> 权限控制时可以使用

    比如,某几个列可以运行用户查询,其他列不允许,可以开通视图 查询特定的列, 起到权限控制的 作用

<2> 简化复杂的多表查询

视图 本身就是一条查询SQL,我们可以将一次复杂的查询 构建成一张视图, 用户只要查询视图 就可以获取想要得到的信息(不需要再编写复杂的SQL)

视图主要就是为了简化多表的查询

3 视图的使用

创建视图

1) 语法格式

create view 视图名 [column_list] as select语句;

view: 表示视图

column_list: 可选参数,表示属性清单,指定视图中各个属性的名称,默认情况下,与SELECT语句中查询

的属性相同

as : 表示视图要执行的操作

select语句: 向视图提供数据内容

2)创建一张视图

#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`;

3) 查询视图 ,当做一张只读的表操作就可以

SELECT * FROM products_category_view;

4 通过视图进行查询

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;

  2) 需求: 查询鞋服分类下最贵的商品的全部信息

#通过连表查询

#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 =

'鞋服')

5 视图与表的区别

视图是建立在表的基础上,表存储数据库中的数据,而视图只是做一个数据的展示

通过视图不能改变表中数据(一般情况下视图中的数据都是表中的列 经过计算得到的结果,不允许 更新)

删除视图,表不受影响,而删除表,视图不再起作用

相关文章

  • JDBC 第一章

    MySQL安装 数据库视图化工具 MySQL基本操作 JDBC MySQL安装 1.1、下载 链接:https:/...

  • MySQL--索引

    MySQL索引 查看索引 创建索引 创建唯一索引 创建主键索引 删除索引 删除主键 MySQL视图 创建视图 删除...

  • mysql视图,触发器,存储过程优缺点及应用分析

    mysql视图,触发器,存储过程优缺点及应用分析 视图 mysql使用较少,是sql server和orcale使...

  • MySQL数据库基本操作(上)

    史上最简单的 MySQL 教程>>>MySQL运行机制原理&架构>>>触发器视图(上)视图(下)数据备份与还原(上...

  • mysql 批量修改视图定义者 DEFINER

    原文: MySQL如何批量修改视图(VIEW)的属主(DEFINER)参考: Mysql The user spe...

  • 数据库

    一、MySQL中视图与表的区别 1.1 MySQL中视图和表的区别以及联系 视图是已经编译好的SQL语句,是基于S...

  • MySQL View 视图分析

    为什么MySQL中很少使用视图功能? 首先MySQL使用视图有什么好处: 清晰简单,可以让简单的语句逻辑更清晰 可...

  • mysql高级:视图、事务、索引

    # mysql高级:视图、事务、索引 * 视图 * 事务 * 索引 * 账户管理 * 主从 ## 1.视图 动态抽...

  • MySQL视图问题以及主外键

    1,mysql的视图名不能和现有表名重复 查看复制打印? mysql>showtables;//查看表 +----...

  • MySQL视图

    什么是视图 视图(View)是一种虚拟存在的表。其内容与真实的表相似,包含一系列带有名称的列和行数据。但是视图...

网友评论

    本文标题:MySQL:MySQL 视图

    本文链接:https://www.haomeiwen.com/subject/mgliodtx.html