表连接这块搞不清楚,写个博客给自己捋一下
LEFT JOIN
mysql> SELECT c.id AS course_id,c.*,t.* FROM course c LEFT JOIN teacher t ON c.teacher_id = t.id;
c.id AS course_id是将course表中id字段重命名为course_id展示,为了防止混淆c.*表示course表所有字段数据t.*表示teacher表所有字段数据ON后面跟着的条件是连接表的条件course c表示将course简写为c,teacher t表示将teacher简写为tLEFT JOIN为左连接,是以左边的表为基准,右表若没有对应的值,用NULL填补
这句话的意思就是 将course、teacher简写为c、t,courser_id代替course表里的id,course表是teacher表的左连接,连接表的条件course里的teacher_id等于teacher里的id
INNER JOIN
mysql> SELECT c.id AS course_id,c.*,t.* FROM course c INNER JOIN teacher t ON c.teacher_id = t.id;
展示左右两表都有对应的数据(无法对应的就去掉,不填补NULL值)
RIGHT JOIN
以右表为基准,左边没有对应的值则填补NULL
多表混合连接
mysql> SELECT * FROM
-> student a
-> LEFT JOIN
-> student_course b
-> ON a.id = b.student_id
-> RIGHT JOIN
-> course c
-> ON b.course_id = c.id
-> INNER JOIN teacher d
-> ON c.teacher_id = d.id;
将student,student_course,course,teacher简写为a,b,c,d。a是b的左连接,c是b的右连接,d是c的内连接。