students学生表结构:
classes班级表结构:
inner join:内连接,只返回同时存在于两张表的行数据
select s.id,s.name,s.class_id,c.name class_name,s.gender,s.score
from students s
inner join classes c
on s.class_id=c.id
含义:查询出表students中的id,name,class_id,gender,score的字段和表classes中的name字段并且起一个别名为 class_name,分别给表students表classes取别名s,c,
条件是表students中的class_id=表classes中的id
from 后面用来确定主表
inner join后面用来确定附表,on就是两表关联查询的条件,
left join:左连接(左外连接),left join其实就是left outer join的简写,返回左表中都存在的行,无论右表中有无与之对应的数据,如果左表中返回的行中右表没有与之对应的数据则为NULL
select s.id,s.name,s.class_id,s.gender,s.score,c.name c_name
from students s
left join classes c
on s.class_id=c.id
含义:查询出学生表students中的id,name,class_id,gender字段和classes班级表中的 name字段并且取别名为c_name
主表附表的设置和inner join一样.
right join:右连接(右外连接),right join是right outer join的简写,返回右表中都存在的行,如果左表中没有与右表中对应的值则为NULL
select s.id,s.name,s.class_id,s.gender,c.name c_name,s.score
from students s
right join classes c
on s.class_id=c.id
full join:全连接,full outer join,把两表的记录都查出来并且自动把对方不存在的列填为NULL值。
SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
FULL OUTER JOIN classes c
ON s.class_id = c.id;