mysql连接查询(俗称连表查询)内连接,外连接,自然连接

  

连接查询的分类

  

本文讨论中用到的测试数据
“创建表的学生(int主键auto_increment
id,
名称varchar (10)
);
插入学生值
(null,“北京市”),
(null,“小明”),
(null,于宁波),
(null, xiaoliang);

  

创建表的分数(int主键auto_increment
id,
stu_id int not null,
分数小数(5,2)
);
插入得分值
(null, 1300 .45),
(null, 2400 .35点),
(null, 3500);“

  

 mysql连接查询(俗称连表查询)内连接,外连接,自然连接

  

内连接

  

内连接/加入

  

由于mysql默认是内连接,所以,加入等同于内连接
以两个表举例,内连接只返回在连接过程中有连接匹配的记录。也就是说,根据连接条件,两个表中都有对应的数据存在的记录,才会返回。
举例:
<代码>选择stu.id stu.name, s.score从学生一样stu内连接分数年代alt=" mysql连接查询(俗称连表查询)内连接,外连接,自然连接“>
如上图所示,由于小亮没有成绩,所以小刚没有出现在最终的结果中。

  
连接条件分析:
  

连接条件可以使用在使用
区别:在上连表查询中,任何情况下都可以使用,而且建议使用异地是在连表的过程中,根据上条件判断是否保留连表的结果。
使用是在连表查询的字段名一致时,可以使用。如使用(id)型条件中使用的字段,返回结果中只有一遍。
是在连表操作完成后,再根据在哪条件进行数据过滤。不建议使用,因为这样效率很低。

  

外连接

  

外连接查询时,允许另一方存在与之不匹配的数据。外连接的连接条件不可使用,须使用,或者使用其中的一种,其它都与内连接一致。

  

左外连接(左外连接/左连接):

  

左表为主表,即使右表没有与左表匹配的记录,也返回左表的记录。而右表与左表不匹配的记录将被忽略。
举例:
<代码> select * from学生stu离开加入分数在斯图。id=s.stu_id;
结果如下:
+——+ + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - +
| | id名称| id | stu_id |积分|
+——+ + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - +
| 1 |萧红| 1 | 1 | 300.45 |
| 2 |小明| 2 | 2 | 400.35 |
| 3 |于宁波| 3 | 3 | 500.00 |
| 4 | xiaoliang零零零| | | |
+——+ + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - +

  

右外连接(右外连接/右连接):

  

右表为主表,即使左表没有与之匹配的记录,也返回右表的记录。
举例:
<代码> select *从分数一样年代对加入学生stu s.stu_id=stu.id;
+ - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
| | id stu_id |积分| id |名称|
+ - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
| 1 | 1 | 300.45 | 1 |萧红|
| 2 | 2 | 400.35 | 2 |小明|
| 3 | 3 | 500.00 | 3 |于宁波|
零零零| | | | 4 | xiaoliang |
+ - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + +

  

全外连接(完整的加入):mysql暂不支持,可以用联盟模拟实现。

  

自然连接

  

自然加入(同加入)

  

自然左连接(同左连接)

  

自然权利加入(同右加入)

  

自然连接会自动判断,以两个表中相同的字段为连接条件,返回查询结果。

  

注意:内连接不写连接条件会出现笛卡尔积的结果,应该避免这种情况,而外连接不写连接条件会报错

mysql连接查询(俗称连表查询)内连接,外连接,自然连接