SQL话语总结3之多表查询

SQL语句总结3之多表查询
  • 使用别名
  • FROM tablename1 AS a, tablename2 AS b
    注意:ORACLE数据库不支持AS,直接后面加别名

  • 内连接-INNER JOIN
  • 数据库默认的都是INNER JOIN,所以INNER可以省略
    SELECT columns
    FROM  table1 [INNER] JOIN table2
    ON condition_statement
    

    说明:
    1.condition可以是table1.column1=table2.column2,也是可以>或者<
    2.condition中依然可以实用And, OR之类的操作符
    3.内连接返回匹配的数据

  • 外连接
  • 外连接分为左外连接,右外连接,全连接,使用 ** JOIN ON方式,当有LEFT等修饰的时候OUTER可以省略

    1.左外连接-LEFT OUTER JOIN
    左外部连接 = 内部连接 + 左边表中失配的元组
    以左边的表为中心,左边的表记录一定要显示,右边现实匹配的数据,没有的话,就用NULL值补上

    2.右外连接-RIGHT OUTER JOIN
    右外部连接 = 内部连接 + 右边表中失配的元组

    3.全外连接-FULL OUTER JOIN
    全外部连接= 内部连接 + 左边表中失配的元组 + 右边表中失配的元组
    这个相当于是左外连接+右外连接的并集

  • 交叉连接-CROSS JOIN
  • 没有WHERE子句的交叉连接将产生连接所涉及的表的笛卡尔积
    所以,以下表达式返回相同的结果。
    SELECT  *  FROM  table1, table2
    SELECT  *  FROM  table1  CROSS JOIN  table2
  • UNION运算符以及UNION JOIN
  • 1.UNION用来执行集合并运算
    2.UNION JOIN的每行来自一个表的列值以及另外一张表的NULL值
    3.SQL SERVER不支持UNOIN JOIN