zoukankan      html  css  js  c++  java
  • mysql补充

    having

      添加having语句(就像where指定条件一样,给每个组指定筛选条件一样,必须跟在group by后面)

        以“dept_id”为分类标志统计各单位的职工人数和工资平均数且工资平均数大于4000。

        select dept_id,avg(sal) from employee group by dept_id having avg(salary)>400;

    on

      on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

      on是生成连接表起作用的,where是生成连接表之后对连接表在进行过滤

      当使用left join时,无论on的条件是否满足,都会返回左表的所有记录,对于满足的条件的记录,两个表对应的记录会连接起来,对于不满足条件的记录,那右表字段全部是null

      当使用right join时,类似,只不过是全部返回右表的所有记录

      当使用inner join时,功能与where完全相同。

    on、where、having三者之间的区别:

      on最先执行,where次之,having最后。(on先把不符合条件的记录过滤后才进行统计,它可以减少中间运算要处理的数据,运算速度最快)、

      where的作用时间是在计算之前完成的,而having是在计算之后起作用的。

      在多表连接查询时,on比where更早起作用,系统首先根据各个表之间的连接条件把多个表合成一个临时表之后,再由where进行过滤,然后计算,计算之后再由having进行过滤。

    连表操作

      inner join  

        内联满足交换定律:“A inner join B” 和 “B inner join A” 是相等的。

      outer join

          连接类型:        保留数据行:

          A left outer join B      all A rows

          A right outer join B      all B rows

          A full outer join B      all A and B rows

      cross join(交叉连接)

        交叉连接执行连个表的笛卡尔积(就是把A表和B表的数据进行一个N*M的组合),他匹配一个表另一个表的每一行,不能通过on子句在交叉连接指定谓词,但可以使用where语句

        实现相同的效果,这时交叉连接基本上是作为一个内部连接。

        交叉连接相对于内部连接使用效率低,而且两个大表不应该使用交叉连接

  • 相关阅读:
    2.12 使用@DataProvider
    2.11 webdriver中使用 FileUtils ()
    Xcode8 添加PCH文件
    The app icon set "AppIcon" has an unassigned child告警
    Launch Image
    iOS App图标和启动画面尺寸
    iPhone屏幕尺寸、分辨率及适配
    Xcode下载失败 使用已购项目页面再试一次
    could not find developer disk image
    NSDate与 NSString 、long long类型的相互转化
  • 原文地址:https://www.cnblogs.com/jacky912/p/10528365.html
Copyright © 2011-2022 走看看