1、笛卡尔积

当两个表自然连接,没有附加任何条件的时候,就会产生笛卡尔积,产生的记录为(n×m)行。

select * from student s,course c

 

 

 

依次连接,这样就会产生30条记录,如下:

 

 

 

2、内连接

内连接是指返回多表满足条件的记录。

 

 

 

select * from student s join course c on s.id = c.xid

 

 

 

3、外连接

①左连接

左连接是指返回左表的全部记录行,返回右边满足条件的记录行,不满足则返回NULL。

 

 

 

select * from student s left join course c on s.id = c.xid

 

 

 

由于孙七没有选择课程,所以课程表的记录为空。

右表条件为NULL的场景:

 

 

 

select * from student s left join course c on s.id = c.xid where c.xid is null;

 

 

 

②右连接

右连接是指返回右表的全部记录行,返回左表满足条件的记录行,不满足条件则返回NULL。

 

 

 

select * from student s right join course c on s.id = c.xid

 

 

 

由于English这门课,没人选,则学生的信息是为NULL。

左表条件为空的场景:

 

 

 

select * from student s right join course c on s.id = c.xid where s.id is null

 

 

 

到此就结束了,末尾给大家附上建表语句和数据

create table student(id int(5),name varchar(20))
create table course(cid varchar(5),xid int(5),cname varchar(20))
xid name
1 张三2 李四3 王五4 赵六5 孙七
kid xid cname
s1 1 pythons1 3 pythons2 1 javas3 2 phps1 4 pythons4 3 sqls5 English

 转自:https://zhuanlan.zhihu.com/p/420975727