视图和表的区别
表示保存在计算机的存储设备(通常是硬盘)中。
而视图并不会将数据保存在存储设备之中,而且也不会将数据保存到其他任何地方。视图保存的是SELECT语句。
视图的优点?
第一,视图无需保存数据,可以节省存储设备的容量。
第二,可以将频繁使用的SELECT语句保存成视图,这样不用每次书写。
应该将经常使用的SELECT语句做成视图。
如何创建视图?
CREATE VIEW 视图名称(<视图列名1>,<视图列名2>,...)
AS
<select语句>
使用视图的查询步骤
第一,首先执行定义视图的SELECT语句
第二,根据结果,执行在FROM子句中使用视图的SELECT语句。
视图的限制
第一,定义视图不能用ORDER BY子句。
原因:视图和表示一样的,数据行都是没有顺序的。
第二,对视图进行更新。
要满足的条件:
1.SELECT子句未使用DISTINCT
2.FROM子句中只有一张表
3.未使用GROUP BY子句
4.未使用HAVING子句
视图和表需要同时进行更新,因此通过聚合得到的视图无法进行更新。
删除视图
DROP VIEW 视图名称(<视图列名1>,<视图列名2>,..);
子查询
子查询和视图不同,子查询在SELECT语句执行完毕之后就会消失。
1.内层的查询(from子句中的SELECT子句)子查询会先执行。
2.外层的查询(SELECT子句)
标量子查询:必须而且只能返回1行1列的结果。
例如:
SELECT AVG(hanbai_tanka)
FROM Shohin;
关联子查询
普通子查询和关联子查询的区别?
关联子查询在子查询中添加了WHERE子句的条件。
结合条件一定要写在子查询中。