连接查询

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;

 

 参考:https://www.liaoxuefeng.com/wiki/001508284671805d39d23243d884b8b99f440bfae87b0f4000/001509167103179399448cb200549bdab7651a5e9167597000

posted @ 2019-04-12 12:04  小矮子的小胖子  阅读(202)  评论(0编辑  收藏  举报