• 《SQL 基础教程》第五章:复杂查询


    这一章讲了关于创建视图、操作视图的知识.

    视图:是不保存实际数据的,来自于表的,保存好的 SELECT 语句.
    使用视图有三个优点:

    1. 无需保存数据,因此节省储存设备的空间
    2. 视图可以命名,然后被保存.因而可以重复使用.
    3. 视图会自动更新,随着原表的数据的变化而变化

    视图的创建与删除

    创建视图

    格式:

    CREATE VIEW <viewname>(<vcol1>,<vcol2>, ...)
    AS
    SELECT ...

    例子:
    CREATE VIEW ProductSum (product_type, cnt_product)
    AS
    SELECT product_type, COUNT(*)
    FROM Product
    GROUP BY product_type;

    需要注意的几点:

    1. 多重视图的概念:在 SELECT 语句的 FROM 子句中,可以选用一视图,形成视图的视图,即多重视图.
    2. 视图的更新:视图的更新会带来原表的更新,因此具有聚合的视图是无法更新的,即无法执行 INSERT、DELETE、UPDATE 一类操作.

    删除视图

    格式:
    DROP VIEW  <viewname>(<vcol1><vcol2>,...)

    子查询:视图为基础的查询

    子查询:以视图为基础的查询

    格式:

    将用来定义视图的 SELECT 语句直接用于 FROM 子句当中.
    如下:
    SELECT <vcol1><vcol2>,...
    FROM <viewname>

    需要注意:
    查询的时候由内向外,即优先进行子查询,然后进行查询.

    标量子查询

    定义:
    必须而且只能返回 1 行 1 列的结果的查询叫做标量子查询.
    功能:
    在查询的 WHERE 子句中,其中不能出现 AVG 等聚合函数,因此可以使用标量子查询,利用优先计算子查询的特性来得到想要的结果.
    举例:
    SELECT product_id, product_name, sale_price
    FROM Product
    WHERE sale_price > (SELECT AVG(sale_price)
    FROM Product);

    关联子查询

    原因:
    当进行标量子查询的时候,返回多条记录进行笔记会出错.关联子查询可以解决这个问题,使得在每种情况下,返回特定的值.
    格式:
    其在子查询中加上了特定的 WHERE 语句.
    SELECT product_type, product_name, sale_price
    FROM Product AS P1
    WHERE sale_price > (SELECT AVG(sale_price)
    FROM Product AS P2
    WHERE P1.product_type = P2.product_type
    );
    语法: 在 WHERE 子句中,使用<tablename>.<columnnaem>的方式.





  • 相关阅读:
    注意事项 软件连接的数据库是设置输出的数据库,弄错会造成数据库不一致
    归并排序
    快速排序
    冒泡排序
    插入排序
    上次遗留下来的XMLUtil的问题
    关于子网掩码
    java.lang.InstantiationException
    java.lang.ExceptionInInitializerError
    关于HashMap中的负载因子
  • 原文地址:https://www.cnblogs.com/FBsharl/p/10716857.html
Copyright © 2020-2023  润新知