**

表连接

**
本文将浅述mysql的表连接方式,主要有内连接、左外连接、右外连接和自连接的概念及用法。连接作用是对多表进行操作。


内连接

内连接被称为普通连接或自然连接,内连接从结果表中删除与其他被连接表中没有匹配行的所有行。
内连接相当于数学中两个集合的交集。
语法:
select 列名列表 from 表1 inner join 表2 on 表1.列名=表2.列名
其中inner可省略
on 表1.列名是表1中主键列或者 外键列 表2相同
此处的表1.列名和表2.列名存在外键关系
on后面的顺序不设限制

本文中应用到的表:
student表(左表):
mysql表连接
class表(右表):
mysql表连接
如:
select * from t_student stu inner JOIN t_class cls on stu.fk_class_id=cls.id;

本例中student表中存在外键classNo,故外键字段与t_class表的主键字段相连接。

除了上面的方法,我们还可以省略inner join,如下:

select *  from t_student stu,t_class cls where  stu.fk_class_id=cls.id;

内连接查询的是两表中同时都存在的记录。

执行结果:
mysql表连接
通过执行结果,我们可以发现,内连接只是查询出了两表均有的的结果,学生表中的刘苏和张晓华由于找不到对应的班级数据,所以在表连接之后删除了这两条记录。

左外连接

左外连接的结果集包括 left outer join 子句指定的左表所有行,而不是连接列所匹配的行,如果左表的某行右边表没有匹配行,则在相关连的结果集中的所有列表均为空值。
用法:left outer join 或left join
语法:
select 列名列表 from 表1 left join 表2 on 表1.列名=表2.列名
如:

select *  from t_student stu LEFT JOIN t_class cls on stu.fk_class_id=cls.id;

执行结果:
mysql表连接
通过观察我们发现,左外连接是以左表为参照,若右表中无对应数据则显示为空。

右外连接

右外连接是左外连接的反向连接。返回右表的所有行。右表的某行在左表中无匹配行,则将为左表返回空值。
用法:right outer join 或right join
语法:
select 列名列表 from 表1 left join 表2 on 表1.列名=表2.列名
现为class表添加一条数据:
mysql表连接
如:

select *  from t_student stu right JOIN t_class cls on stu.fk_class_id=cls.id;

执行结果:
mysql表连接

自连接

自连接(self join)是SQL语句中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。
如:查询员工的姓名及其上级领导的姓名

select emp1.name as ’员工姓名‘,emp2.name as ’上级领导姓名' from employee as emp1 left join employee as emp2 on emp1.leaderNo=emp2.id;

相关文章:

  • 2022-12-23
  • 2021-08-13
  • 2021-07-23
  • 2022-02-09
  • 2021-09-14
  • 2021-11-12
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-10
  • 2021-06-19
  • 2022-01-26
  • 2022-12-23
  • 2021-11-09
相关资源
相似解决方案