zoukankan      html  css  js  c++  java
  • 七周七数据库读书笔记(1)

    七周七数据库读书笔记(1)

    看到别人推荐买了这本书,决定以后每读一本书都开始写读书笔记

    这本书的第二章开始部分简单的回顾了关系数据库的CRUD,这里主要讲一下数据库中INNER JOIN, LEFT JOIN和RIGHT JOIN的区别。这块很多初学数据库的人会搞不清楚而很多Blog写得又比较深反而不易理解。

    先谈谈INNER JOIN

    INNER JOIN 我们一般解释为内联,通常来说INNER在SQL中可以被省略。简单来说就是通过两个表的某列将两个表相连。这里举例来说有假设数据库中有两张表(表A和表B)

      Country ID Country Name Postal Code
    1 ch China 001
    2 us U.S.A 002
    3 uk United Kingdom 003
    4 mx Mexico 004
      Event ID Event Name Postal Code Country Name
    1 0001 boom 001 China
    2 0002 crash 006 Australia
    3 0003 break 008 Germany
    4 0004 train 010 Canada

    通过SQL  SELECT Event Name From A INNER JOIN B ON A.Postal Code=B.Postal Code 通过内联我们把两张表通过A.Postal Code=B.Postal Code最后得到如下数据的一张表

      Country ID Country Name Postal Code Event ID Event Name Country Name
    1 ch China 001 0001 boom China

    我们从结果可以看到使用内联的结果是将两张表都符合条件的数据根据关系连在一起。

    随后我们谈谈外联LEFT JOINRIGHT JOIN

    LEFT JOINRIGHT JOININNER JOIN的区别就是外联部要求两张表的所有数据都与关系相同,他们会保留在左边或在右边表的内容。仍然以上边的内容举例

    如果我们将SQL改为SELECT Event Name From A LEFT JOIN B ON A.Postal Code=B.Postal Code则左边表的值会被保留得到结果如下而右表只有满足条件的值才会留下来

      Country ID Country Name Postal Code Event ID Event Name Country Name
    1   ch China 001 0001 boom China
    2 us U.S.A 002      
    3 uk United Kingdom 003      
    4 mx Mexico 004      

    同理使用RIGHT JOIN则会保留右边表的内容而左表则只会保留符合条件的值,如SQL改为SELECT Event Name From A RIGHT JOIN B ON A.Postal Code=B.Postal Code

      Country ID Country Name Postal Code Event ID Event Name Country Name
    1 ch China 001 0001 boom China
    2     006 0002 crash Australia
    3     008 0003 break Germany
    4     010 0004 train Canada
  • 相关阅读:
    mysql高可用架构的构想
    shell进阶——expect免交互工具的使用
    Mysql性能优化之参数配置(转)
    mysql主从同步问题梳理
    使用mysql-proxy实现mysql的读写分离
    Mysql数据库的主从与主主
    Mariadb远程登陆配置及相关问题排查
    redis集群搭建及常用操作
    weblogic的linux静默搭建
    Python traceback 模块,追踪错误
  • 原文地址:https://www.cnblogs.com/loneliness20141112/p/4279035.html
Copyright © 2011-2022 走看看