暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MYSQL-第五章

EGG IXD 2021-06-22
216


5.1 视图



视图和表的区别:是否保存了实际的数据。

  • 视图中保存的是从表中取出数据所使用的SELECT语句

  • 表中存储的是实际数据(优点:节省存储设备容量、可将经常使用的SELECT语句做成视图无需重新书写、保证数据的最新状态)

注:应该将经常使用的SELECT语句做成视图。


创建视图:

CREATE VIEW 视图名称(<视图列名1>, <视图列名2>, ……)

AS

<SELECT语句>

注:定义视图时不要使用ORDER BY子句( PostgreSQL 除外)。


删除表中数据:

DELETE FROM <表名> ;


使用视图的查询:

SELECT <视图列名1>, <视图列名2>, <视图列名3>, ……

FROM <视图表名>

注:应该避免在视图的基础上创建视图,对多数 DBMS 来说,多重视图会降低 SQL 的性能。


更新视图:定义视图的 SELECT 语句能够满足某些条件,那么这个视图就可以被更新,有代表性条件如下。

  • SELECT 子句中未使用 DISTINCT

  • FROM 子句中只有一张表

  • 未使用 GROUP BY 子句

  • 未使用 HAVING 子句

注:视图和表需要同时进行更新,因此通过汇总得到的视图无法进行更新。


删除视图:

DROP VIEW 视图名称(<视图列名1>, <视图列名2>, ……)



5.2 子查询



子查询特点:概括起来就是一张一次性视图。


子查询:

SELECT <视图列名1>, <视图列名2>, <视图列名3>, ……

FROM (直接书写定义视图的select语句) AS <子查询名称>

注:

子查询作为内层查询会首先执行。

原则上子查询必须设定名称。


增加子查询的层数:子查询的层数原则上没有限制,因此可以像“子查询的 FROM 子句中还可以继续使用子查询,该子查询的 FROM 子句中还可以再使用子查

注:子查询嵌套层数增加,难懂性能变差,尽量避免使用多层嵌套的子查询。



标量子查询:返回单一值的子查询,特殊性质为必须而且只能返回 1 行 1列的结果。

注:

标量子查询的返回值可以用在 = 或者 <> 这样需要单一值的比较运算符之中。

通常任何可以使用单一值的位置都可以使用标量子查询。

标量子查询不能返回多行结果,因此不能使用在比较运算符中。


5.3 关联子查询



关联子查询:在使用关联子查询时,需要在表所对应的列名之前加上表的别名,以“< 表名 >.< 列名 >”的形式记述。

注:

在细分的组内进行比较时,需要使用关联子查询。

避免将关联条件写在子查询之外的外层查询之中。




end




文章转载自EGG IXD,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论