一、left join详解
1.1、语法
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
1.2、说明
按照一定规则,将表table1和表table2拼接起来。下面以学生管理系统为例,学生管理系统数据库各表如下:
课程表:
学生表:
成绩表:
显示所有学生的全部成绩:
SELECT s.id,s.name,sc.subject,t.score
FROM transcript AS t
LEFT JOIN student AS s ON t.student_id=s.id
LEFT JOIN schedule AS sc ON sc.id=t.schedule.id;
结果如下:
1.3、理解
首先,我们可以在合法的左连接的sql语句下,查找我们所有想要的且存在于联表之后的总表中。其次,关于使用那一列作为连接的键存在一些内在的逻辑关系:由于要找出来所有学生的所有成绩,所以 学生主体作为唯一键 ,基于此进行数据列的扩展。
二、right join详解
2.1、语法
SELECT <select list>
FROM TableA A
RIGHT JOIN TableB B
ON A.key=B.key
2.2、理解
right join表示表1右连接表2,以右为主,表示以表2为主,关联查询表1的数据,查出表2所有数据以及表1和表2有交集的数据,如下:
select * from subject
right join score on subject.id = score.id
三、inner join(join)
3.1、语法
SELECT * from subject join score on subject.id=score.id
3.2、结果