SQL 笔记(二)
时间:2018-06-17 14:58:09
收藏:0
阅读:173
本笔记整理自《SQL 基础教程》、《MySQL 必知必会》和网上资料。个人笔记不保证正确。
一、复杂查询
视图
将 SELECT 查询包装成一个虚拟表,该虚拟表就被称为视图。(因为只是一个包装,因此视图的数据也会随着原表的更新而更新)
- 用途:
- 简化复杂的SQL查询,用它替换子查询,能降低查询的嵌套深度。
- SELECT 查询的重用,减少重复查询。
- ...
创建视图:
其中 SELECT 的结果列和视图列名一一对应。CREATE VIEW <视图名称> (<视图列名1>, <视图列名2>... ) AS <SELECT 语句>;- 视图的限制
- 视图的 SELECT 子句,不能包含 ORDER BY 子句。因为视图也是表,而表是集合,它没有顺序。(也有些DB支持该用法,但不通用)
- 视图的更新:只在很有限的条件下,才能在视图上使用 INSERT/DELETE/UPDATE 这样的变更数据的语句。(视图应该只用于检索,能不更新就不要更新它)
删除视图:
DROP VIEW <视图名称>;
子查询
子查询,其实就是一次性的视图:
SELECT ...
FROM (
SELECT ... -- 这就是一个子查询:嵌套的 select 语句
) AS <别名>
...上面的查询的 FROM 子句中,给另一 SELECT 子句定义了一个别名,并将它作为了查询对象。这就是一个子查询。
子查询不仅能用于 FROM,还能用在 WHERE 子句等很多地方。
关联子查询
即用到了外部数据的子查询语句:
SELECT ...
FROM product AS p1
WHERE (
SELECT ...
FROM duck AS p2
WHERE p1.price > p2.price -- 这里,内部子查询访问了外部查询的表p1,因此是一个关联子查询。
);原文:https://www.cnblogs.com/kirito-c/p/9192776.html
评论(0)