mysql联合查询查询语句_MySql查询语句介绍,多表联合查询
需要技巧
mysql在⽹站开发中,越来越多⼈使⽤了,⽅便部署,⽅便使⽤。我们要掌握mysql,⾸先要学习查询语句。查询单个表的数据,和多个表的联合查询。
上⼀篇写了【MySql查询语句介绍,单表查询】,下⾯以⼀些例⼦来介绍下多表联合查询。
操作⽅法
01
php个人博客界面⾸先看下我们例⼦⽤到的数据表,⼀个student学⽣表,有id列,name列,class_id列等等。和⼀个Class班级表,有id列和name列,如图
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_idlimit 10
03
讲解下上⾯的sql语句, select⾥的【as '班级'】,的‘as’是为了给这个列加⼀个别名,例⼦中的‘班级’。
from student as s ⾥的这个 as是为表 student加⼀个别名,例⼦中的s。
为什么要加别名呢,是为了简化引⽤,如果不加别名,就要⽤表的全名去限制列名。
s.id, s.name都是指student表的列,因为⽤的是别名s来限制列名flurries
用insert语句向表中添加多条记录c.name 是指class表的列,因为是⽤ 别名c来限制列名。
04
mysql面试题sql语句多表联查
上⾯说的为什么表要加别名,那是因为⼆个表都有 id列和name列,直接⽤ select id, name这样的语句,是会报错的,因为这个语句不知道你需要的id, name究竟是查询的是哪个表的id, 和name.
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_idorder by s.id desc limit 10
06
现在的数据,看不出 inner join和 left join的区别。我们新建⼀个学⽣数据, 把class_id设置为 7, class表⾥没有的id。如图
07
我们再次⽤上次的sql查询数据,
select s.id, s.name, c.`name` as '班级' from student as s
left join class as c ON c.id = s.class_idorder by s.id desc limit 10
strcat在哪个头文件里面结果如图,可以看到班级为空的。
08splitter剧
如果是⽤ inner join呢,
select s.id, s.name, c.`name` as '班级' from student as s
inner join class as c ON c.id = s.class_idorder by s.id desc limit 10
结果如图,可以看到没有 id=27的学⽣数据。
09
从上⾯的结果⽐较可以知道, 都是通过 class_id来联合表,
inner join是联合⼆个表的数据,⼆个表都必须符合class_id的数据才显⽰。
left join是左联合,左边的表的数据都显⽰,右边join的表有符合class_id数据的,就显⽰对应的数据,没有符合的,⽐如上⾯的class_id=7的,就会显⽰空数据。
好了,以上就是⼤致内容了,(END)
声明:该⽂观点仅代表作者本⼈,天晴资讯⽹系信息发布平台,仅提供信息存储空间服务。