student:
class:
1.自然连接:只返回两张表连接部分的匹配项
-- join / inner join 表名 on 条件
-- 以下三种方法返回的结果都一样
select * from student s inner join class c on s.classid=c.id; select * from student s join class c on s.classid=c.id; select * from student s,class c where s.classid=c.id;
结果集:
2.笛卡尔集:返回两张表的所有内容
-- 笛卡尔集:字段 = 表1字段 + 表2字段 记录 = 表1记录 * 表2记录
-- 本次查询结果集: 字段:4+2=6;记录=3*3=9
select * from student ,class ; select * from student s cross join class c;
结果集:
3.左连接:查询出左边表的全部内容 + 右边表符合条件的内容,不符合的部分以空值代替
select * from student s left join class c on s.classid=c.id ; select * form student s,class c where s.classid=c.id(+); -- 此表达方式只能在Oracle数据库使用,MySQL不支持此左连接
结果集:
4.右连接:左边表符合条件的内容+查询出右边表的全部内容 ,不符合的部分以空值代替
select * from student s right join class c on s.classid=c.id ; select * form student s,class c where s.classid(+)=c.id; -- 此表达方式只能在Oracle数据库使用,MySQL不支持此右连接
结果集:
5.全连接:列出两张表达全部内容,不符合条件的用空值代替
select * from student s full join class c on s.classid=c.id;