zoukankan      html  css  js  c++  java
  • 【SQL】全关系操作

    1.消除重复 - DISTINCT

    SQL语句中默认的是,重复的元祖可以多次的显示。如果希望消除重复,需要DISTINCT关键字。

    注:消除重复需要排序,所以代价高。在需要高效率时要谨慎。

    SELECT DISTINCT name
    FROM MovieExec, Movies, StarsIn
    WHERE cert# = producerC# AND
                 title = movieTitle AND
                 year = movieYear AND
                 starName = 'Harrison Ford'

    2.SQL中允许重复-ALL

    SQL中的并、交、差默认不产生重复,像集合一样操作。(Mysql不支持,下面的语句就是记录一下)

    如果希望保留重复,需要ALL关键字。

    (SELECT title, year FROM Movies)
        UNION ALL
    (SELECT movieTitle AS title, moviesYear AS year FROM StarsIn);
    R INTERSECT ALL S
    R EXCEPT ALL S

    3.聚集

    聚集:是指把关系中的某一列数据进行统计输出。

    COUNT(*):统计关系中的元组个数

    COUNT():统计括号中的元组个数

    SUM(): 统计括号中那一列的和

    AVG(): 平均值

    MIN(): 最小值

    MAX(): 最大值

    注意:在计算的时候NULL都被忽略

    SELECT AVG(netWorth) FROM MovieExec;

    4.分组-GROUP BY

    分组:把关系,按照某一个属性分组,即该属性值相同的分为一组。

    如果使用分组,则聚集操作符是对每一个分组做聚集 

    SELECT studioName, SUM(length)
    FROM Movies
    GROUP BY studioName;

     分组后,每一个组的studioName只出现1次。下面两个语句等效:

    SELECT studioName
    FROM Movies
    GROUP BY studioName;
    SELECT DISTINCT studioName;

    5.对分组结果性质做筛选-HAVING

    是在分组的基础上使用的,HAVING中的聚集是对当前的分组做的。

    SELECT name, SUM(length)
    FROM MovieExec, Movies
    WHERE producerC# = cert#
    GROUP BY name
    HAVING MIN(year) < 1930;

    6.SQL中子句顺序

    SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY

    只有SELECT, FROM是必须的, 剩下的必须按上面的顺序出现。

  • 相关阅读:
    阿里巴巴FastJSON使用实例
    JSON知识点
    java序列化和反序列化
    JAVA里的VO、BO、PO分别指什么?
    Oracle基础语句练习记录
    maven命令
    maven官方教程
    linux下开启、关闭、重启mysql服务
    linux常用命令记录
    动态网页项目无法启动
  • 原文地址:https://www.cnblogs.com/dplearning/p/4861499.html
Copyright © 2011-2022 走看看