MySql查询语句介绍,多表联合查询

mysql在网站开发中 , 越来越多人使用了 , 方便部署 , 方便使用 。 我们要掌握mysql,首先要学习查询语句 。 查询单个表的数据 , 和多个表的联合查询 。 <br/>上一篇写了【MySql查询语句介绍 , 单表查询】 , 下面以一些例子来介绍下多表联合查询 。 操作方法 01 首先看下我们例子用到的数据表 , 一个student学生表 , 有id列 , name列 , class_id列等等 。 和一个Class班级表 , 有id列和name列 , 如图

MySql查询语句介绍,多表联合查询

文章插图

MySql查询语句介绍,多表联合查询

文章插图

02 我们要查询学生数据 , 并要显示这个学生所在的班级 , 则要联合二个表的查询了 。 用 inner join来联合二个表 。
sql: select s.id, s.name, c.`name` as '班级' from student as s
inner join class as c ON c.id = s.class_id limit 10

MySql查询语句介绍,多表联合查询

文章插图

03 讲解下上面的sql语句 , select里的【as '班级'】 , 的‘as’是为了给这个列加一个别名 , 例子中的‘班级’ 。
from student as s 里的这个 as是为表 student加一个别名 , 例子中的s 。
为什么要加别名呢 , 是为了简化引用 , 如果不加别名 , 就要用表的全名去限制列名 。
s.id, s.name都是指student表的列 , 因为用的是别名s来限制列名
c.name 是指class表的列 , 因为是用 别名c来限制列名 。

MySql查询语句介绍,多表联合查询

文章插图

04 上面说的为什么表要加别名 , 那是因为二个表都有 id列和name列 , 直接用 select id , name这样的语句 , 是会报错的 , 因为这个语句不知道你需要的id, name究竟是查询的是哪个表的id , 和name.

MySql查询语句介绍,多表联合查询

文章插图

05 除了用 inner join来关联二个表的数据 , 还可以用 left join来关联 ,
sql: select s.id, s.name, c.`name` as '班级' from student as s
left join class as c ON c.id = s.class_id order by s.id desc limit 10

MySql查询语句介绍,多表联合查询

文章插图

06 现在的数据 , 看不出 inner join和 left join的区别 。 我们新建一个学生数据, 把class_id设置为 7 , class表里没有的id 。 如图

MySql查询语句介绍,多表联合查询

文章插图

07 我们再次用上次的sql查询数据 ,
select s.id, s.name, c.`name` as '班级' from student as s
left join class as c ON c.id = s.class_id order by s.id desc limit 10
结果如图 , 可以看到班级为空的 。

MySql查询语句介绍,多表联合查询

文章插图

08 如果是用 inner join呢 ,
select s.id, s.name, c.`name` as '班级' from student as s
inner join class as c ON c.id = s.class_id order by s.id desc limit 10
结果如图 , 可以看到没有 id=27的学生数据 。

MySql查询语句介绍,多表联合查询

推荐阅读