Mysql 查询语句(六)

Mysql 查询语句(六)

连接查询

我们的链接查询类似于数学集合中的交并补
将多张表进行记录的连接查询(按照某个字段指定的条件进行数据的拼接);
进行数据的拼接(两张表的内容显示在一个结果表中 使用连接查询)
最终的结果是:记录数有可能变化,字段数一定会增加(至少两张表的合并)
意义:在用户查看数据的时候,显示的数据来自于多张表

我们先说说内连接—— inner join
查询的结果为两个表匹配到的数据 也就是A表和B表交集

语法:selete * from 表1 inner或left或right join 表2 on 表1,列 = 表2,列;

--查询 有能够对应班级的学生以及班级信息
select * from students inner join classes on students.cls_id = classes.id; 

在这里插入图片描述

这里我们查询班级表,表中只有两条数据对应python_01和python_02,因此我们使用第一条查询语句时我们只能查出来在python_01和python_02这两个班级里的人,而cls_id为3,4,5,的人应为数据库中不存在对应班级id所以无法查询出来,也就满足了我们的需求!

按照要求显示姓名和班级
select students.*,classses.name from students inner join classes on students.cls_id = classes.id;
select students.name,classses.name from students inner join classes on students.cls_id = classes.id;
给表起别名
select s.name,c.name from students as s inner join classes as c on s.cls_id = c.id;

在这里插入图片描述

在这里插入图片描述

查询有能够对应班级的学生以及班级信息,显示学生的所有信息,只显示班级名称
select s.*,c.name from students as s inner join classes as c on s.cls_id = c.id;
在以上的查询中,就按每个班级姓名显示在第一列
select c.name,s.* from students as s inner join classes as c on s.cls_id = c.id;

在这里插入图片描述

查询有能够对应班级的学生以及班级信息,按照班级进行排序(order by--select c.xxx,s.xxx from students as s inner join classes as c on .... order by .....;
select c.name,s.* from students as s inner join classes as c on s.cls_id = c.id order by c.name;

在这里插入图片描述

将id也进行排序:
select c.name,s.* from students as s inner join classes as c on s.cls_id = c.id order by c.name,s.id;

在这里插入图片描述

左连接查询:查询的结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充
left join

--查询每位学生对应的班级信息(左连接)
select * from students as s left join classes as c on s.cls_id = c.id;
我们看看和inner join有什么差别
select * from students as s inner join classes as c on s.cls_id = c.id;

在这里插入图片描述
在left join左边时students表,我们以左边表的所有字段为基准,右边表有的数据就显示,不存在的数据用null填充

--查询没有对应班级信息的学生
--select .... from xxx as x left join  xxx as x on ... where ...
--select .... from xxx as x left join  xxx as x on ... having...
select * from students as s left join classes as c on s.cls_id = c.id having c.id is null;
select * from students as s left join classes as c on s.cls_id = c.id wherec.id is null;

在这里插入图片描述

右连接查询:查询的结果为两个表匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充
就是和左连接查询相反,,基本和左连接查询一样,但基本不用,将两个表换位置就可以达成,就变成左连接查询,这里我们就不做演示啦,一般会用左查询就够了!
下次我们介绍子查询和自关联查询语句就讲完啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值