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