第1关 内连接查询

一、本关任务:使用内连接查询数据表中学生姓名和对应的班级。

内连接查询

  • 仅将两个表中满足连接条件的行组合起来作为结果集,称为内连接;

  • 关键字:[inner] join ... on

语法:

  1. 表1 [inner] join 表2 on 表1.字段=表2.字段

语法解释:

  1. 从表1中取出每一条记录,去表2中与所有的记录进行匹配,匹配必须是某个条件在表1中与表2中相同,最终才会保留结果,否则不保留。inner 关键字可省略不写;on 表示连接条件:条件字段就是代表相同的业务含义(如下面两张表中的 employee.dept_id 和 department.id),大多数情况下为两张表中的主外键关系。

内连接查询的使用

现在我们有两张表,数据如下:
employee表数据:

id name dept_id
1 Nancy 4
2 Tod 2
3 Carly 1
4 Allen 2
5 Mary (null)

department表数据:

id name
1 开发部
2 测试部
3 运维部
4 销售部

现在想要查询出员工姓名以及其对应的部门名称,我们就使用内连接来进行查询。

  • 我们可以将关联查询思路分为三步:

1.确定所连接的表,
2.确定所要查询的字段,
3.确定连接条件与连接方式。

其中,没有部门的员工和部门没有员工的部门都没有被查出来,这就是内连接的特点,只查询在连接表中有对应的记录,其中dept.id=emp.dept_id是连接条件。

二、编程要求

补充代码,查询数据表中学生姓名以及对应的班级名称,将其对应的列名分别另命名为studentNameclassName

两张表,内容如下:

tb_student表数据:

id name class_id
1 Emma 2
2 Mary 4
3 Allen (null)
4 Kevin 1
5 Rose 2
6 James 1

tb_class表数据:

id name
1 软件1631
2 软件1632
3 测试1631
4 测试1632

三、预期输出:

  1. studentName className
  2. Kevin 软件1631
  3. James 软件1631
  4. Emma 软件1632
  5. Rose 软件1632
  6. Mary 测试1632

四、代码

USE School;########## 查询数据表中学生姓名和对应的班级 ##########
#请在此处添加实现代码
########## Begin ##########
SELECT tb_student.name as studentName,tb_class.name as className from tb_class join tb_student on tb_student.class_id=tb_class.id;########## End ##########

第2关 外连接查询

一、本关任务:使用外连接查询数据表中所有班级和对应班级里学生的姓名。

外连接查询

  • 以某张表为主,取出里面的所有记录,然后每条与另外一张表进行连接,不管能不能匹配上条件,最终都会保留。能匹配,正确保留;不能匹配,其它表的字段都置空(null),称为外连接。

  • 外连接查询分为左外连接查询和右外连接查询;

  • 关键字:left/right [outer] join ... on

语法:

  1. 表1 left/right [outer] join 表2 on 表1.字段=表2.字段

语法解释:

  1. 左外连接:在内连接的基础上,还包含表1中所有不符合条件的数据行,并在其中的表2列填写 NULL;
  2. 右外连接:在内连接的基础上,还包含表2中所有不符合条件的数据行,并在其中的表1列填写 NULL。

外连接查询的使用

我们仍使用如下两张数据表:

employee表数据:

id name dept_id
1 Nancy 4
2 Tod 2
3 Carly 1
4 Allen 2
5 Mary (null)

department表数据:

id name
1 开发部
2 测试部
3 运维部
4 销售部

例如查询所有员工姓名以及他所在部门,在内连接Mary没有被查出,因为他没有对应的部门,现在想把Mary也查出来,就要使用左外连接

此查询语句以employee为主表查询,因此最终记录至少不少于主表已有的记录数。

  • 右外连接是同理的,只是基准表的位置变化了而已。

我们在这里只是将left修改成了right,但是基准表变化了,是以department表的数据去匹配employee表,所以左外连接能做到的查询,右外连接也能做到,仅展现的效果有所不同。

虽然左外连接和右外连接有主表差异,但左外连接和右外连接可以互转,如上面的右外连接也等效于如下查询语句,只需将基准表换一下:

二、编程要求

补充代码,分别使用左外连接右外连接查询数据表中所有学生姓名和对应的班级名称,查询结果列分别另命名为studentNameclassName

我们为你提供了两张表,内容如下:

tb_student表数据:

id name class_id
1 Emma 2
2 Mary 4
3 Allen (null)
4 Kevin 1
5 Rose 2
6 James 1

tb_class表数据:

id name
1 软件1631
2 软件1632
3 测试1631
4 测试1632

注意:请使用 tb_student 作为左表,tb_class 作为右表。

三、预期输出:

  1. studentName className
  2. Emma 软件1632
  3. Mary 测试1632
  4. Allen NULL
  5. Kevin 软件1631
  6. Rose 软件1632
  7. James 软件1631
  8. studentName className
  9. Kevin 软件1631
  10. James 软件1631
  11. Emma 软件1632
  12. Rose 软件1632
  13. NULL 测试1631
  14. Mary 测试1632

四、代码

########## Begin ##########
SELECT tb_student.name as studentName,tb_class.name as className from tb_student left join tb_class on tb_student.class_id = tb_class.id;SELECT tb_student.name as studentName,tb_class.name as className from tb_student right join tb_class on tb_student.class_id = tb_class.id;########## End ##########

第3关 符合条件连接查询

一、本关任务:使用连接查询,查询所有班级里分数在90分以上的学生的姓名和学生的成绩以及学生所在的班级。

复合条件连接查询

  • 复合条件连接查询,就是在连接查询的过程中,通过添加过滤条件来限制查询结果,使查询结果更加精确。

如下两张数据表:

employee表数据:

id name dept_id age
1 Nancy 3 18
2 Tod 2 22
3 Carly 1 19
4 Allen 2 24

department表数据:

id name
1 开发部
2 测试部
3 运维部

要求查询员工姓名和所在部门名称,使用内连接查询,将查询结果按照年龄升序排序:

二、编程要求

查询所有班级里分数在90分以上的学生的姓名和学生的成绩以及学生所在的班级,其中学生的姓名和学生所在班级分别另命名为studentNameclassName

两张表,内容如下:

tb_student表数据:

id name class_id score
1 Emma 2 89
2 Mary 4 92
4 Kevin 1 76
5 Rose 3 68
6 James 1 99

tb_class表数据:

id name
1 软件1631
2 软件1632
3 测试1631
4 测试1632

三、预期输出:

  1. studentName score className
  2. James 99 软件1631
  3. Mary 92 测试1632

四、代码

USE School;########## 查询所有班级里分数在90分以上的学生的姓名和学生的成绩以及学生所在的班级 ##########
#请在此处添加实现代码
########## Begin ##########SELECT tb_student.name as studentName,tb_student.score,tb_class.name as className from tb_class join tb_student on tb_student.class_id=tb_class.id where score>90;########## End ##########

MySQL数据库——连接查询相关推荐

  1. MySQL 数据库————连接查询

    目录 一.多表连接查询 1.内连接--inner join 2.左连接--left join 3.右连接--right join 二.存储过程 1.简介 2.优点 3.语法 ②.参数分类 ③.带参数的 ...

  2. MySQL数据库 - 连接查询

    第1关:内连接查询 任务描述 本关任务:使用内连接查询数据表中学生姓名和对应的班级. 相关知识 为了完成本关任务,你需要掌握: 1.什么是内连接查询: 2.如何使用内连接查询. 内连接查询 仅将两个表 ...

  3. mysql数据库——连接查询(内连接:自然连接,等值连接。外连接:左连接,右连接,全连接)

  4. 小白 MySQL数据库链接查询语句_MySQL数据库——连接查询

    今天将用 "手" 来教大家关于MySQL连接查询的知识! ============================================================= ...

  5. php 查看mysql连接数据库_php基础之连接mysql数据库和查询数据

    php基础之连接mysql数据库和查询数据 文章主要介绍了php连接mysql数据库和查询数据的方法和示例,需要的朋友可以参考下,就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕 ...

  6. java查询mysql装载bean_jsp与javabean链接mysql数据库并查询数据表的简单实例源码

    jsp与javabean链接mysql数据库并查询数据表的简单实例源码.这个简单的实例是给新手学习的,或者一些高手临时忘记怎么使用jsp操作mysql数据库时候查找的,包括了建立mysql数据库连接的 ...

  7. MySQL表连接查询

    MySQL表连接查询 1 基本格式 select fieldName from tbName1 连接符 tbName2 on 条件 2 笛卡尔乘积[避免] -- 笛卡尔乘积,没有约束条件,数据库匹配发 ...

  8. MySQL数据库select查询命令大全

    MySQL数据库select查询命令大全 --数据库操作前的准备 -- 创建数据库 -- create database python_test_1 charset=utf8; -- 使用数据库 -- ...

  9. 查询 oracle_关于oracle和mysql数据库的查询问题

    近期在写mysql数据库报表时,需要给查询排序后的数据增加一列序号,用来统计查询数据的排名,在这里遇到一个视图和排序冲突的问题. Part 1 在oracle数据库中可以直接给查询语句增加一列ROWN ...

最新文章

  1. 一个浙江商人立下的22条军规(转载)
  2. 丹佛斯变频器模拟量速度输入_变频器与PLC是如何协同作战的?了解这几个控制方式很有必要...
  3. asp.net应用百度编辑器(UEditor)上传图片跟上次附件不成功的解决办法
  4. HandlerInterceptorAdapter或HandlerInterceptor的使用
  5. 保益悦听怎么开盲人模式_盲人看电影???是的!盲人看电影!!!
  6. codeforces82 D. Two out of Three(记忆化搜索)
  7. php连接mysql乱码原因_PHP连接MYSQL出现乱码的原因与解决办法
  8. 探秘亚洲最大单体智慧农园:探索改变农民“靠天吃饭”的农作模式
  9. MSComm控件过程中内存溢出和GetOneDimSize出错的问题
  10. java jdbc_详解Java基础知识——JDBC
  11. MySQL的chap服务器_路由器chap的双向配置命令
  12. 说说我出道后的处女作:剪贴板神器 iPaste
  13. stm32调试1.44寸TFT液晶屏过程遇到的问题
  14. Android 源码编译生成framework.jar
  15. adb查看手机设备型号、品牌、机型等信息
  16. 产品说接口返回数据需要脱敏 只能安排
  17. 【Spring Web教程】SpringBoot 整合SpringFox-SwaggerUI 3
  18. 人群计数数据集汇总和详细介绍,全网最全,crowd counting datasets
  19. 利用云服务器和Python架设TCP Server控制ESP8266单片机
  20. 功能插件---水印插件

热门文章

  1. 双目立体感知「走下神坛」?鼻祖斯巴鲁启用单目摄像头
  2. springboot 妙启动_优雅的启动、停止、重启你的SpringBoot项目
  3. foxmail 通讯录同步方法
  4. PAT 1060 爱丁顿数
  5. 《红楼梦》23道经典菜制作方法, 有原文,有出处(转)
  6. 坯子库无法一键安装插件没用_坯子插件库下载-坯子插件库电脑版下载v2020.1-IE浏览器中文网站...
  7. airpods二代圆点按钮是啥_华强北洛达 AirPods 详细讲解,结合目前用户使用的一些情况...
  8. Linux 系统Tick
  9. IIS URL重写实现重定向
  10. 计算机休眠自动开机,win7电脑休眠后会自动开机,睡眠原因?怎么处理?