类似于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:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。