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'

  • 相关阅读:
    Mysql5.6主从复制-基于binlog
    mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
    socket recv阻塞与非阻塞error总结
    linux socket talkclient talkserver示例
    linux-socket connect阻塞和非阻塞模式 示例
    OPENSSL FIPS
    epoll的LT和ET使用EPOLLONESHOT
    如何在socket编程的Tcp连接中实现心跳协议
    linux网络编程:splice函数和tee( )函数高效的零拷贝
    Linux网络编程--sendfile零拷贝高效率发送文件
  • 原文地址:https://www.cnblogs.com/yukun/p/625796.html
Copyright © 2011-2022 走看看