当前位置:趣知科普网>游戏数码>IT技术>

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

IT技术 阅读(2.72W)

mysql在网站开发中,越来越多人使用了,方便部署,方便使用。我们要掌握mysql,首先要学习查询语句。查询单个表的数据,和多个表的联合查询。
上一篇写了【MySql查询语句介绍,单表查询】,下面以一些例子来介绍下多表联合查询。

操作方法

(01)首先看下我们例子用到的数据表,一个student学生表,有id列,name列,class_id列等等。和一个Class班级表,有id列和name列,如图

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(09)从上面的结果比较可以知道, 都是通过 class_id来联合表,inner join是联合二个表的数据,二个表都必须符合class_id的数据才显示。left join是左联合,左边的表的数据都显示,右边join的表有符合class_id数据的,就显示对应的数据,没有符合的,比如上面的 class_id=7的,就会显示空数据。

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