zoukankan      html  css  js  c++  java
  • 联接基础知识SQL中

    在对于关系型数据库中,联接是将多个表联系的方法。联接分为很多种,如:内联接、外联接、交叉联接,自然联接

    一、内联接
     
      1。1使用等值内联接
     即两者是通过两列的值是相等的联接,称为相等联接
      1.2使用等号以外的运算符的联接(<,>..)
      1.3使用不等号运算符的联接(<>)
      在SQL中表述为INNER JOIN ON  (condition..)
    二、外联接
       外联接可以分为三种:左向外联接、右向外联接、完整外联接
       2.1左向外联接:
     其会将左边的所有通过where、Have检索出来的行添加进去,而对于联接的表只有满足了条件才会。
     在SQL中表述为LEFT OUTER JOIN
       2.2右向外联接
            就是右边拉,这不用我说了
     在SQL中表述为RIGHT OUTER JOIN
       2.3完整外联接
            就是对于左右两表所有的行都要
     在SQL中表述为FULL OUTER JOIN
    三、交叉联接
     就是表的笛卡尔积,第一个表的行数乘以第二个表的行数,即结果集的大小。
     在SQL 中表述为CROSS JOIN
    四、自联接
    五、在FROM 或WHERE子句中指定联接
     在FROM或WHERE中指定联接往往会使结果不同。看下例。(注意:在WHERE中指定左联接使用*=,右联接使用=*)
     USE pubs
    SELECT t.title_id, t.title, s.qty
    FROM titles AS t, sales AS s
    WHERE t.title_id *= s.title_id
       AND s.stor_id = '7066'
       --------------------------------------------
     USE pubs
    SELECT t.title_id, t.title, s.qty
    FROM titles AS t LEFT OUTER JOIN sales AS s
       ON t.title_id = s.title_id
       AND s.stor_id = '7066'
    这两个结果集是一样的
    但是将联接和搜索条件放在不同的位置结果就完全不同了
    SELECT t.title_id, t.title, s.qty
    FROM titles AS t INNER JOIN sales AS s ON
    t.title_id = s.title_id
    WHERE    s.stor_id = '7066'

  • 相关阅读:
    luogu_P1850 换教室
    luogu_P3224 [HNOI2012]永无乡
    luogu_P1064 金明的预算方案
    luogu_P2014 选课
    luogu_P3372 【模板】线段树 1(动态开点)
    luogu_P2852 [USACO06DEC]牛奶模式Milk Patterns
    luogu_P1941 飞扬的小鸟
    luogu_P2678 跳石头
    luogu_P1638 逛画展
    【Tyvj2046】掷骰子
  • 原文地址:https://www.cnblogs.com/yukun/p/625796.html
Copyright © 2011-2022 走看看