zoukankan      html  css  js  c++  java
  • 一千行MySQL学习笔记(四)

    /* UNION */ ------------------

    将多个select查询的结果组合成一个结果集合。

    SELECT ... UNION [ALL|DISTINCT] SELECT ...

    默认 DISTINCT 方式,即所有返回的行都是唯一的

    建议,对每个SELECT查询加上小括号包裹。

    ORDER BY 排序时,需加上 LIMIT 进行结合。

    需要各select查询的字段数量一样。

    每个select查询的字段列表(数量、类型)应一致,因为结果中的字段名以第一条select语句为准。

    /* 子查询 */ -----------------

    - - 子查询需用括号包裹。

    -- from型
      from后要求是一个表,必须给子查询结果取个别名。
     - 简化每个查询内的条件。
     - from型需将结果生成一个临时表格,可用以原表的锁定的释放。

     - 子查询返回一个表,表型子查询。

     select * from (select * from tb where id>0) as subfrom where id>1;

    -- where型

     - 子查询返回一个值,标量子查询。
     - 不需要给子查询取别名。
     - where子查询内的表,不能直接用以更新。
    select * from tb where money = (select max(money) from tb);

    -- 列子查询
      如果子查询结果返回的是一列。

      使用 innot in 完成查询
      existsnot exists 条件

        如果子查询返回数据,则返回1或0。常用于判断条件。
          select column1 from t1 where exists (select * from t2);

    -- 行子查询
    查询条件是一个行。
      select * from t1 where (id, gender) in (select id, gender from t2);

      行构造符:(col1, col2, ...) 或 ROW(col1, col2, ...)

      行构造符通常用于与对能返回两个或两个以上列的子查询进行比较。

    -- 特殊运算符

      != all() 相当于 not in
      = some() 相当于 inanysome 的别名
      != some() 不等同于 not in,不等于其中某一个。
      all, some 可以配合其他运算符一起使用。

    /* 连接查询(join) */ -------------
      将多个表的字段进行连接,可以指定连接条件。

    -- 内连接(inner join)

      - 默认就是内连接,可省略inner。
      - 只有数据存在时才能发送连接。即连接结果不能出现空行。
      on 表示连接条件。其条件表达式与where类似。也可以省略条件(表示条件永远为真) 也可用where表示连接条件。 还有 using, 但需字段名相同。 using(字段名)

    -- 交叉连接 cross join
      即,没有条件的内连接。
     select * from tb1 cross join tb2;



    -- 外连接(outer join)

     - 如果数据不存在,也会出现在连接结果中。



    -- 左外连接 left join
     如果数据不存在,左表记录会出现,而右表为null填充



    -- 右外连接 right join
     如果数据不存在,右表记录会出现,而左表为null填充

    -- 自然连接(natural join)
    自动判断连接条件完成连接。 相当于省略了using,会自动查找相同字段名。

      natural join

      natural left join

      natural right join

    (未完待续)
          (作者:Shocker 来源:http://www.cnblogs.com/shockerli/p/1000-plus-line-mysql-notes.html)

  • 相关阅读:
    month(字段)、year(字段)
    简单音乐播放器实现
    Mp3音乐文件列表实现
    读取SD卡中所有MP3文件
    java基础复习 之 多态
    JavaWeb学习过程 之c3p0的使用
    JavaWeb学习过程 之MVC模式下的查询
    行转列:总结
    如何快速禁用约束 (解决ORA-O2266问题)
    PLSQL Developer 11 使用技巧(持续更新)
  • 原文地址:https://www.cnblogs.com/Grace7582/p/4734943.html
Copyright © 2011-2022 走看看