超详细的mysql左连接,右连接,内部连接使用分析

下面是一个例子分析
表A的记录如下:
该援助
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115

表B记录如下:
投标bname
一百二十亿零六百零三万二千四百零一
二百二十亿零六百零三万二千四百零二
三百二十亿零六百零三万二千四百零三
四百二十亿零六百零三万二千四百零四
八百二十亿零六百零三万二千四百零八

这两个表SQL语句如下所示创建:
创建表
援助int(1)auto_increment主键,
ANum char(20)

创建表B(
(1)投标int不空auto_increment主键,
bname char(20)


插入
值(1,'a20050111),(2,'a20050112),(3,'a20050113),(4,'a20050114),(5,'a20050115);

插入B
值(1,2006032401),(2,'2006032402),(3,'2006032403),(4,'2006032404),(8,'2006032408);

实验如下:
1.left加入(左连接)

SQL语句如下所示:
从中选择*
左连接B
在a.aid =家

结果如下:
援助该投标bname
1 a20050111 12006032401
2 a20050112 22006032402
3 a20050113 32006032403
4 a20050114 42006032404
5 a20050115零
(受影响的行数为5行)

结果如下:
左连接是基于一个表的记录,A可以被看作是一个左表,B可以被认为是正确的表,左连接是基于左表。
换句话说,在左表的记录(一)将所有的代表,和右表(B)只会显示符合搜索条件的记录(在例如:a.aid =家)。
缺少B表记录是空的。

2.right加入(右连接)

SQL语句如下所示:
从中选择*
对加入B
在a.aid =家

结果如下:
援助该投标bname
1 a20050111 12006032401
2 a20050112 22006032402
3 a20050113 32006032403
4 a20050114 42006032404
空值82006032408
(受影响的行数为5行)

结果如下:
仔细查看后,您会发现左连接的结果正好相反。这一次是基于正确的表(b),如果表不够,则填充为null。

3.inner加入(等于加入或内加入)

SQL语句如下所示:
从中选择*
内连接
在a.aid =家

与下面的SQL语句相同:
*选择
来自A,B
在a.aid =家

结果如下:
援助该投标bname
1 a20050111 12006032401
2 a20050112 22006032402
3 a20050113 32006032403
4 a20050114 42006032404

结果如下:
很显然,只有一个记录a.aid =家示。这表明内部连接不是基于谁的,它只显示符合的记录。
在任何从句中都使用左连接操作,

一个组合源表的记录。使用左连接操作来创建一个左外部连接。左外部连接将包含从第一个(左)开始的两个表中的所有记录,即,
在第二(右)表中没有一致值的记录。

语法:从表1左连接表上table1.field1 compopr table2.field2
描述:表、附表2参数用于指定名称的表的记录相结合。
field1,field2参数指定的字段的名称加入,这些字段必须具有相同的数据类型,包含相同的数据类型,但它们不需要有相同的
名称u3002
关系比较运算符指定compopr参数:或<>。
如果在内部连接操作中加入包含备忘数据类型或OLE对象数据类型数据的字段,则会出现错误。