美文网首页
mysql之视图

mysql之视图

作者: 每天进步一点点变成更好的自己 | 来源:发表于2022-03-24 12:28 被阅读0次

mysql之视图,如何简化查询。视图建议只用于查询就可以了,不要进行增加、删除、修改,因为他所有的修改都是针对源表的。

视图: 一个虚拟表,把有一段查询语句作为视图存储在数据库中。对视图进行增删改查,实际都是通过对实际数据表的操作来实现。

  • 子查询:嵌套在另外一个查询中的查询。
  • 派生表:查询中把子查询的结果作为一个表来使用。

视图-语法结构:

创建视图:
CREATE [OR REPLACE]
VIEW 视图名称 [(字段列表)]
AS 查询语句

修改视图:
ALTER VIEW 视图名
AS 查询语句;

查看视图:
DESCRIBE 视图名;

删除视图:
DROP VIEW 视图名;

举例说明,直接查询表和创建视图后查询的优势:

直接查询表:
mysql> SELECT
-> a.transdate,
-> a.itemnumber,
-> a.goodsname,
-> a.quantity,       -- 获取单品销售数量
-> b.invquantity     -- 获取历史库存数量
-> FROM
-> (SELECT           -- 子查询,统计单品销售         
-> a.transdate,
-> a.itemnumber,
-> b.goodsname,
-> SUM(a.quantity) AS quantity,
-> SUM(a.salesvalue) AS salesvalue
-> FROM
-> demo.trans AS a
-> LEFT JOIN demo.goodsmaster AS b ON (a.itemnumber = b.itemnumber)
-> GROUP BY a.transdate , a.itemnumber
-> ) AS a -- 派生表,与历史库存进行连接
-> LEFT JOIN
-> demo.inventoryhist AS b
-> ON (a.transdate = b.invdate
-> AND a.itemnumber = b.itemnumber);
+---------------------+------------+-----------+----------+-------------+
| transdate | itemnumber | goodsname | quantity | invquantity |
+---------------------+------------+-----------+----------+-------------+
| 2020-12-01 00:00:00 | 1 | 本 | 1.000 | 100.000 |
| 2020-12-01 00:00:00 | 2 | 笔 | 1.000 | 99.000 |
| 2020-12-02 00:00:00 | 3 | 胶水 | 2.000 | 200.000 |
+---------------------+------------+-----------+----------+-------------+
3 rows in set (0.00 sec)

创建视图:
 mysql> CREATE VIEW demo.trans_goodsmaster AS  -- 创建视图
-> SELECT
-> a.transdate,
-> a.itemnumber,
-> b.goodsname,                           -- 从商品信息表中获取名称
-> SUM(a.quantity) AS quantity,           -- 统计销售数量
-> SUM(a.salesvalue) AS salesvalue        -- 统计销售金额
-> FROM
-> demo.trans AS a
-> LEFT JOIN
-> demo.goodsmaster AS b ON (a.itemnumber = b.itemnumber) -- 与商品信息表关联
-> GROUP BY a.transdate , a.itemnumber;   -- 按照销售日期和商品编号分组
Query OK, 0 rows affected (0.01 sec)

直接查询视图:
mysql> SELECT *                 -- 直接查询
-> FROM demo.trans_goodsmaster; -- 视图
+---------------------+------------+-----------+----------+------------+
| transdate | itemnumber | goodsname | quantity | salesvalue |
+---------------------+------------+-----------+----------+------------+
| 2020-12-01 00:00:00 | 1 | 本 | 1.000 | 89.00 |
| 2020-12-01 00:00:00 | 2 | 笔 | 1.000 | 5.00 |
| 2020-12-02 00:00:00 | 3 | 胶水 | 2.000 | 20.00 |
+---------------------+------------+-----------+----------+------------+
3 rows in set (0.01 sec)

image.png

相关文章

  • MySQL之视图

    SQL语言之视图 前言 本章我们将学习MySQL中的视图,视图是数据库中的重要组件,本文将从视图是什么,视图的作用...

  • MySQL之:视图

    视图 VIEW,虚表,保存有实表的查询结果 视图中的数据事实上存储于“基表”中,因此,其修改操作也会针对基表实现;...

  • mysql之视图

    mysql之视图,如何简化查询。视图建议只用于查询就可以了,不要进行增加、删除、修改,因为他所有的修改都是针对源表...

  • MySQL之视图VIEW

    本文主要介绍MySQL中的视图, 在什么情况下使用视图。 I、视图介绍 1.1 视图的初步理解 视图是虚拟的表,与...

  • MySQL学习之视图

    一、视图的概念 MySQL从5.0.1版本开始提供视图功能。一种虚拟存在的表,行和列的数据来自定义视图的查询中使用...

  • 简介mysql之视图

    前言 我们在前文的事务和前文的mysql语句执行流程中都谈到了视图这个概念,其实Mysql有两个视图:1.view...

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

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

  • MySQL--索引

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

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

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

  • 数据库

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

网友评论

      本文标题:mysql之视图

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