首页 > 数据库技术 > 详细

SQL 笔记(二)

时间:2018-06-17 14:58:09      阅读:173      评论:0      收藏:0      [点我收藏+]

本笔记整理自《SQL 基础教程》《MySQL 必知必会》和网上资料。个人笔记不保证正确。

一、复杂查询

视图

将 SELECT 查询包装成一个虚拟表,该虚拟表就被称为视图。(因为只是一个包装,因此视图的数据也会随着原表的更新而更新)

  1. 用途:
    1. 简化复杂的SQL查询,用它替换子查询,能降低查询的嵌套深度。
    2. SELECT 查询的重用,减少重复查询。
    3. ...
  2. 创建视图:

    CREATE VIEW <视图名称>
    (<视图列名1>, <视图列名2>... )
    AS
    <SELECT 语句>;
    其中 SELECT 的结果列和视图列名一一对应。
  3. 视图的限制
    1. 视图的 SELECT 子句,不能包含 ORDER BY 子句。因为视图也是表,而表是集合,它没有顺序。(也有些DB支持该用法,但不通用)
    2. 视图的更新:只在很有限的条件下,才能在视图上使用 INSERT/DELETE/UPDATE 这样的变更数据的语句。(视图应该只用于检索,能不更新就不要更新它
  4. 删除视图: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,因此是一个关联子查询。
    );

SQL 笔记(二)

原文:https://www.cnblogs.com/kirito-c/p/9192776.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!