MySQL的学习入门六

一、多表查询

1.1 内连接

规则:返回两个表的公共记录。
语法:
1、select * from 表1 inner join 表2 on 表1.公共字段=表2.公共字段 (inner可以省略)
MySQL的学习入门五的测试数据基础上,再添加如下测试数据代码:

create table stuMarks (
  examNo char(7) primary key,
  stuNo varchar(6) not null,
  writtenExam int,
  labExam int
);

insert into stumarks values ('001','01', 80, 60);
insert into stumarks values ('002','05', 90, 55);
insert into stumarks values ('003','08', 88, 89);
insert into stumarks values ('004','09', 90, 92);

在这里插入图片描述
例题:
在这里插入图片描述
2、select * from 表1, 表2 where 表1.公共字段=表2.公共字段;
在这里插入图片描述

1.2 左外连接

规则:以左边的表为准,右边如果没有对应的记录,显示null
语法:select * from 表1 left join 表2 on 表1.公共字段=表2.公共字段;
在这里插入图片描述

1.3 右外连接

规则:以右边的表为准,左边如果没有对应的记录,显示null
语法:select * from 表1 rightjoin 表2 on 表1.公共字段=表2.公共字段;
在这里插入图片描述

1.4 交叉连接

语法:select * from 表1 cross join 表2 on 条件字段;
返回笛卡尔积。
在这里插入图片描述
在这里插入图片描述
小结:
1、交叉连接如果没有连接条件返回笛卡尔积
2、如果有连接条件和内连接是一样的

1.5 自然连接

自动判断条件连接,判断的条件是依据同名字段
1、自然内连接(natural join)
在这里插入图片描述
2、自然左外连接(natural left join)
在这里插入图片描述

3、自然右外连接(natural right join)
在这里插入图片描述

小结:
1、表连接是通过同名字段来连接的
2、如果没有同名字段则返回笛卡尔积
3、同名的连接值显示一个,并且将该字段放在最前面

1.5.1 using

using用来指定连接字段,using也会做公共字段的优化,优化的规则和自然连接的是一样的。
例:
在这里插入图片描述

1.6 练习

1、显示地区及每个地区参加考试(writtenExam(笔试))的人数,并按人数降序排列:
在这里插入图片描述
在这里插入图片描述
2、显示有学生参加考试的地区
在这里插入图片描述

3、显示男生和女生的人数
方法一,分组查询:
在这里插入图片描述
方法二,union:
在这里插入图片描述
方法三,直接写条件:
在这里插入图片描述

4、显示每个地区男生、女生、总人数
在这里插入图片描述

二、子查询

语法:select * from 表1 where (子查询)
外面的查询称为父查询
子查询为父查询提供查询条件

2.1 标量子查询

特点:返回的结果是一个。
例题:查找笔试成绩是88的学生:
在这里插入图片描述

2.2 列子查询

如果标量子查询的结果返回多条记录,不能使用等于,用in 或 not in。
特点:列子查询的返回结果是一列。

1、查找笔试成绩大于80的同学:
在这里插入图片描述

2.3 行子查询

特点:子查询返回的结果是多个字段组成

1、找出语文成绩最高的男生和女生
在这里插入图片描述

2.4 表子查询

特点:将子查询的结果作为表

1、找出语文成绩最高的男生和女生

在这里插入图片描述
注意:from后面跟的是数据源,如果将子查询当成表来看,必须给结果集取别名。

2.5 exists 子查询

1、如果笔试成绩有人超过90分,就显示所有学生信息:
在这里插入图片描述
2、如果笔试成绩没有人超过90分,就显示所有学生信息:
在这里插入图片描述

在学习的MySQL的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你华还是你华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值