美文网首页
SQL语言之复杂查询与视图

SQL语言之复杂查询与视图

作者: WalkZeRo | 来源:发表于2016-07-08 20:08 被阅读0次

    SQL-SELECT : IN | NOT IN, SOME, ALL, Exists| NOT Exists
    SQL-SELECT: 聚集函数,GROUP BY, HAVING
    视图及其应用

    IN
    集合成员资格
    某一元素是否是某一个集合的成员
    集合之间的比较
    某一个集合是否包含另外一个集合等
    集合基数的测试
    测试集合是否为空
    测试集合是否存在重复元素

    子查询: 出现在where子句中的select语句被称为子查询,子查询返回了一个集合,可以通过与这个集合的比较来确定另一个查询集合

    三种类型的子查询: (NOT) IN-子查询; some /all 子查询; (NOT)Exists子查询

    聚集函数
    COUNT SUM AVG MAX NIN

    分组查询 分组过滤
    聚集函数是不允许用于where子句中的; where子句是对每一元组进行条件过滤,而不是对集合进行条件过滤
    分组过滤:若要对集合(即分组)进行条件过滤,即满足条件的集合/分组留下,不满足条件的集合/分组剔除
    Having子句,又称分组过滤子句。需要有group by子句支持,换句话说,没有group by子句,便不能有having子句

    并 交 差 处理
    子查询 {Union [ALL] | Intersect [ALL] | Except [ALL] 子查询};
    通常情侣下自动删除重复元组,不带all。若要保留重复元组,则要带ALL

    空值处理
    空值检测
    is [not] null
    where Sage = null 错误的,空值是不能进行运算
    除count(*)外,其他聚集函数,都会忽略null

    内连接 外连接
    select 列名 from 表名 [natural] [inner | {left | right | full} outer] join {on 连接条件 | using (colname)}
    where 检索条件

    视图——先定义后使用
    如果视图select目标列包含聚集函数,则不能更新
    如果视图的select子句使用了unique或distinct,则不能更新
    如果视图中包括了group by子句,则不能更新
    如果视图中包括了经算术表达式计算出来的列,则不能更新
    如果视图是由单个表的列构成,但并没有包括主键,则不能更新
    对于由单一table子集构成的视图,即如果视图是从单个基本表使用选择、投影操作导出的,并且包含了基本表的主键,则可以更新
    撤销视图
    Drop view 名

    相关文章

      网友评论

          本文标题:SQL语言之复杂查询与视图

          本文链接:https://www.haomeiwen.com/subject/wfjrjttx.html