mysql视图有空间吗?

MySQL视图有空间吗?

1. 什么是MySQL视图

MySQL视图是由一个或多个 SELECT 语句定义的虚拟表。它是 SELECT 语句的结果集以表格形式进行展示。在创建视图时,将 SELECT 语句定义的列的名称和数据类型结合为新表(视图),它并不真正的存储数据。通俗的说,MySQL视图可以把复杂的 SELECT 语句隐藏并简化,提供易于使用的表结构。

1.1 创建MySQL视图的语句

CREATE VIEW view_name AS SELECT statement;

其中view_name为创建的视图名称,SELECT statement为 SELECT 语句。

2. MySQL视图与空间

MySQL视图确实有空间,它会占用部分内存,但不需要明确的存储空间。

MySQL视图本质上是 SELECT 语句的结果集,它并没有把数据实际存储,而是根据 SELECT 语句的定义,每次需要数据时直接查询底层数据表,并按照 SELECT 语句的列名与数据类型来展现结果集。

虽然MySQL视图并不占用实际的存储空间,但是创建视图的 SELECT 语句需要分配部分内存空间。这部分内存的大小取决于 SELECT 语句的复杂程度和底层数据表的大小。

3. 视图的使用优点

3.1 简化查询语句

MySQL视图对于执行复杂查询语句非常有用。以前,用户需要使用很长的SQL语句来获取复杂的数据,这里介绍一种使用视图的方法来简化查询语句。

首先创建一个存储所有 Sales 表格信息的视图:

CREATE VIEW  customer_sales

AS

SELECT orders.salesid, customers.customerid, CONCAT_WS(’ ’,customers.firstname,customers.lastname) AS customername, customers.company, orders.orderdate,orderarticle.articleid,orderarticle.articleprice,orders.totalprice

FROM orders

JOIN customers ON orders.customerid=customers.customerid

JOIN orderarticle ON orders.salesid=orderarticle.salesid;

现在查询一下Sales表格中一段时间内每个客户的收益:

SELECT CONCAT_WS(' ',customers.firstname,customers.lastname) AS customername, customers.company, SUM(totalprice) 

FROM customer_sales

WHERE orderdate BETWEEN '2017-01-01' AND '2018-01-01'

GROUP BY customers.customerid;

使用视图customer_sales可以把复杂的 SELECT 语句隐藏并简化查询:

3.2 简化安全管理

另一个优点是,使用视图可以简化安全管理。如果使用视图来访问数据,可以避免用户访问敏感信息。(例如:用户可以访问某个视图而无需直接访问底层数据表。)

4. 总结

MySQL视图和数据表一样,也需要分配部分内存空间来存储 SELECT 语句的结果集。但是视图并不需要额外的物理存储空间,并且可以使用视图来简化复杂的查询语句,以及实现安全访问敏感信息。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签