zoukankan      html  css  js  c++  java
  • MySQL的连接类型

    首先我们来创建两个数据表:

    image

    image

    结构:

    image

    我们用内连接来查看一下:

    select *  from test1 join  test2 on test1.aid=test2.aid;

    image

    由于内连接是等值连接,所以结果是显示左右表中匹配的数据

    再用左连接查看:

    image

    可以看到,左连接先取出test1的所有数据,再加上与test2和test1匹配的数据,如果左连接的话,一旦aid不相同,那么就会整行数据都显示NULL

    至于右连接,实际上和左连接类似,只是参照表不同

    另外,left  outer和left  的结果是一样的,假如输入

    select  *  from  test1  left  outer  join  test2  on  test1.aid=test2.aid;

    结果也是和left的一样。除了返回符合连接条件的结果之外,还需要显示左表中不符合连接条件的数据列,相对应使用NULL对应

    交叉连接

    select  *  from  test1  cross  join  test2;

    和下面等效:

    select a.*,b.* from test1 a,test2 b a.aid=b.aid;

    结果就是两个表相乘

    image

    这样一看,好像交叉连接的意义不大,但是交叉连接可以用在行显示转换成列显示

    全连接

    full  join或full outer  join

    全连接就是在匹配值的基础上将左右表的未匹配数据都加上

    select  *  from test1  full join test2  on  test1.aid=test2.aid;

    但是你会发现这样输入之后会报错,原因在于MySQL中并不支持full  join,那么怎么办呢?

    等效的写法是:

    select  * from test1  left  join  test2  on  test1.aid=test2.aid

    union

    select  * from  test1  right  join  test2  on  test1.aid=test2.aid;

    image

    自然连接

    nacture  join

    要求两个表中进行比较的必须是相同的属性列,不需要添加连接条件,并且在结果中消除重复的属性列

    image

  • 相关阅读:
    Divide Two Integers
    LRU Cache
    Max Points on a Line
    Recover Binary Search Tree
    Copy List with Random Pointer
    IEE修改最大连接数
    SQL Tuning 基础概述02
    RHEL 本地yum源配置
    Linux演示 dd测试IO
    Linux平台oracle 11g单实例 安装部署配置 快速参考
  • 原文地址:https://www.cnblogs.com/simonid/p/6359655.html
Copyright © 2011-2022 走看看