sql准备
INSERT INTO name(name, age, grade) VALUES (小白, 20, 1), (小黑, 21, 2), (小红, 22, 3), (小花, 23, 4), (小绿, 24, 5) ;
INSERT INTO classes (cname) VALUES (欧阳锋), (杨过), (乔峰);
INSERT INTO classes (id,cname) VALUES (7, 溜哒);
各种join的使用
left join 即为以sql语句中的左边的表为主要表关联右边的表,其中使用on作为条件筛选,where为过滤条件
以name为主表,classes为关联表
SELECT *
FROM name t1 LEFT JOIN classes t2 ON t1.grade = t2.id;
可以看到小花和小绿并没有关联到classes中的任何数据,我们以name为左表,然后以classes为右表然后进行关联,展示5行数据,条件不符合的小花和小绿(没有想对应的班级、师傅领养),即为野生,需要使用null补全,而溜哒同学干脆直接无视。
以classes为主表以name为关联表
SELECT *
FROM name t1 RIGHT JOIN classes t2 ON t1.grade = t2.id;