MySql的连接查询

时间:2023-12-30 10:12:08

类似于oracle的连接查询,mysql连接查询也有左外连接、右外连接、内连接查询。但是,不同的是没有直接 的全外连接查询。

这里介绍MySql的连接查询:

这里已两张表为例:STUDENT 表 和 CLASS表(student表中记录class的班级id信息,字段名为classid)

左外连接查询:

关键字: left join ...on

语句:select * from STUDENT s left join CLASS c on s.classid = c.id;

右外连接查询:

关键字:right join ...on

语句:select * from STUDENT s right join CLASS c on s.classid = c.id;

全外连接:

这里没有直接的关键字。但可以使用union 进行拼接。

语句:select * from STUDENT s left join CLASS c on s.classid = c.id

     Union

     select * from STUDENT s right join CLASS c on s.classid = c.id

注意:这里要求union关键字前后查询表的顺序要一致。不然,就起到了unionall 的效果。

----------------------------------------------------------

ps:介绍一下拼接查询的关键字:Union、 Union all 、Intersect 、Minus

union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。

Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。