之前面试官问了join语句,想来自己对join语句的理解就是那几张集合图,感觉没有很清楚,论坛上的大多文章也是几个集合图来敷衍,因此本文实际操作数据库,演示join语句的用法。
首先建立两张表:
student表:
teacher表:
首先join语句一般情况下是要跟连接条件on的,那么可以不加连接条件吗?答案是:可以
如果不加连接条件,执行SELECT * FROM student INNER JOIN teacher; 发现结果是两个表的笛卡尔积!
加上连接条件SELECT * FROM student INNER JOIN teacher on student.t_id=teacher.teacher_id;
结果:
说明内连接加上连接条件,那么就会只显示满足条件的数据项,不满足条件的两个表都不显示!
再看左连接:
SELECT * FROM student LEFT JOIN teacher on student.t_id=teacher.teacher_id;
结果:
可以看到左连接是以左表为基准,所有左表的数据都会显示,如果满足连接条件,那么和右表一起显示数据,不满足连接条件的左表数据,其右表的属性就设为null。也就意味值,只要是左连接,那么左表的所有数据一定要有,右表的数据有没有就要看满不满足连接条件了。
同理右连接:
SELECT * FROM student RIGHT JOIN teacher on student.t_id=teacher.teacher_id;
结果:
另外需要注意一点就是左连接和右连接一定需要加连接条件,内连接可以不加。
至此,你是否可以熟练使用join了呢?