zoukankan      html  css  js  c++  java
  • MySQL-第十篇多表连接查询

    1、SQL92规范、SQL99规范

    2、广义笛卡尔积,多表之间没有任何连接条件,得到的结果将是N x M条记录。

    3、SQL92中的左外连接、右外连接,连接符有(+或*),放在连接条件那一边就叫做左或右外连接。

    4、SQL99的连接查询

        1》交叉连接(cross join):就是广义笛卡尔积,不需要任何连接条件。

        2》自然连接(natural join):看是没有连接条件,实际以两个表中所有同名列作为连接条件,如果没有同名列则变成了交叉连接。

        3》using子句连接:using子句可以指定一列或者多列,用于显式指定两个表中的同名列作为连接条件。两个表必须都要有同名列,否则出错。

        4》on子句连接:连接条件。

    5、左、右、全连接:left[outer] join、right[outer] join、full[outer] join,通过on子句来指定,既可以是等值连接,又可以是非等值连接。

        左连接:左表所有记录都会被查出。

        右连接:右表所有记录都会被查出。

        全连接:SQL99将全外连接两个表中所有不满足连接条件的记录全部列出。(MySQL没有全连接

    6、子查询

      子查询就是在查询语句中嵌套另一个查询,子查询支持多层嵌套查询。

      将子查询当成数据表的用法,实际是把它作为一个视图使用,也叫行内视图。

      如果子查询返回多个值,在where子句中比较,可以使用in、any、all等关键字。

      any、all可以与>、>=、<、<、<=、<>、=等运算符结合使用。意思分别是其中任意一个、其中所有。=any相当于in的用法。<any小于最大值。>any大于最小值。<all小于最小值。>all大于最大值。

    7、集合运算:交intersect、并union、差minus

        能进行集合运算的两个结果集,必须满足:

          ==>两个结果集包含的数据列数必须相等

          ==>两个结果集包含的数据列的数据类型必须一致。

        1》union并运算

           格式:

    select 语句  union select 语句

        2》minus差运算(MySQL并不支持)

           格式:

    select 语句  minus select 语句
    select c_1,c_2 from xxx
    where (c_1,c_2)
    not in
    (select b_1,b_2 from yyy);

       3》intersect交运算(MySQL并不支持)

           格式:

    select 语句  inserct select 语句
    select c_1,c_2 from xxx
    join
    yyy
    on (c_1=b_1 and c_2=b_2);
  • 相关阅读:
    LeetCode:Remove Nth Node From End of List
    链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)
    快速排序partition过程常见的两种写法+快速排序非递归实现
    LeetCode:Permutations, Permutations II(求全排列)
    LeetCode:3Sum, 3Sum Closest, 4Sum
    LeetCode:Two Sum
    判断一个图是否有环
    c++设计一个无法被继承的类
    设计模式--单例模式
    windows多线程同步互斥--总结
  • 原文地址:https://www.cnblogs.com/ZeroMZ/p/11370893.html
Copyright © 2011-2022 走看看