首页 > 数据库 >MySQL连接查询

MySQL连接查询

时间:2022-08-31 21:56:56浏览次数:57  
标签:name students 查询 course MySQL id tb 连接

目录

左连接

​ 左连接以tb_students_info基表,以tb_course参考表,进行查询时可以查询到基表tb_students_info参考表tb_course匹配的条件,如果基表tb_students_info参考表tb_course中没有匹配的行,那么在返回中参考表tb_course的字段均为null

select s.name, c.course_name
from tb_students_info s
         LEFT JOIN tb_course c on s.course_id = c.id
name course_name
林杨 Java
赵峰凯 MySQL
杨浩宇 Java
李俊飞 Python
赵虎 MySQL
王途峰 Go
李明 NULL

右连接

​ 右连接以tb_students_info参考表,以tb_course基表,进行查询时可以查询到参考tb_students_info基表tb_course匹配的条件,如果参考表tb_students_info基表tb_course中没有匹配的行,那么在返回中基表tb_course的字段均为null

select s.name, c.course_name
from tb_students_info s
         right join tb_course c on s.course_id = c.id
name course_name
林杨 Java
赵峰凯 MySQL
杨浩宇 Java
李俊飞 Python
赵虎 MySQL
王途峰 Go
NULL HTML

子查询

​ 子查询是最常用的查询方法,通过子查询可以实现多表查询,子查询将一个查询语句嵌套再另一个查询语句中。子查询可以在SELECTUPDATEDELETE语句中使用,而且可以进行多层嵌套。在实际开发中经常出现在WHERE语句中。

使用子查询查询在tb_students_info表tb_course表中查询学习Java课程的学生姓名。

select name
from tb_students_info
where course_id in (select id from tb_course where course_name = 'Java');

外层的SELECT查询为父查询,圆括号内SELECT查询为子查询。执行流程为:先进行子查询再进行父查询。

name
林杨
杨浩宇

这个查询条件分为两步执行,首先进行单独的查询,查询出tb_course表中课程为Java的id。

select id
from tb_course
where course_name = 'Java';
id
1

然后执行外层查询,在tb_students_info表中查询course_id等于1的学生姓名。

select name
from tb_students_info
where course_id in (1);

使用子查询来进行查询没有学习Java的学生。

select name
from tb_students_info
where course_id not in (select id from tb_course where course_name = 'Java');
name course_name
赵峰凯 MySQL
李俊飞 Python
赵虎 MySQL
王途峰 Go
李明 NULL

使用=运算符来进行查询学习Java的学生,=运算符与in等效

select name
from tb_students_info
where course_id = (select id from tb_course where course_name = 'Java');

标签:name,students,查询,course,MySQL,id,tb,连接
From: https://www.cnblogs.com/MineLSG/p/16644647.html

相关文章

  • 面试高频,屡试不爽的mysql索引特性总结
    (1)FROM子句组装来自不同数据源的数据(2)WHERE子句基于指定的条件对记录进行筛选(3)GROUPBY子句将数据划分为多个分组(4)使用聚合函数进行计算(5)......
  • 记一次EF+Mysql所遇到的事务不生效的的坑
    业务场景:近期写的一个项目,整个项目采用的DDD(领域驱动)设计,所以刚开始设计的时候就将各个业务以聚合根的方式进行划分,以该业务场景为例,整体的业务简述为,当客户进行付款以后,......
  • 2022-08-31 第二小组 张晟源(javaweb,el,jstl,分页查询)
    JavaWeb一,JSPJSP(全称JavaServerPages),运行在服务端的语言<%//java代码%>1.JSP脚本只能有java代码,在访问JSP时,JSP引擎翻译JSP页面中的脚本2.J......
  • 08. Prometheus - 查询持久化与服务发现
    查询持久化前面编写的PromQL都是一次性的,下次使用需要重写编写。为了方便以后拿来即用,Prometheus提供了在配置文件中的持久化方案。cd/ezops/service/prometheus/con......
  • MySQL主从复制、读写分离
    读写分离是基于主从复制的增删改主要针对主库操作,查操作主要针对从库一般主库有一个,从库有多个MySQL复制过程分为三步:master将改变记录到二进制日志binarylogslave......
  • Chrome 您的连接不是私密连接
    报错信息如下图,但是还可以点击“继续前往。。。”,不要问我为什么还要去深究,我只是懒,不想每次访问都去点击什么继续前往 解决方法:1、找到Chrome浏览器的快捷方式,右键选......
  • APISpace 空气质量查询API
    本文我就来说说APISpace的空气质量查询API,支持国内3400+个城市的整点观测,并附带空气质量监测点(全国共2335个)的整点观测数据。获取指定城市的整点观测空气质量,包含空气......
  • MySQL远程连接失败(错误码:2003)
    原因服务器端未开启端口3306;如何确认是不是上述原因先在cmd命令行接口中输入指令:ping服务器端ip;如果可以ping通,说明不是服务器通信的问题,再输入指令telnext服务器端......
  • MySQL基础
    MySQL数据库基础以下所有操作必须再管理员身份打开的cmd中进行1、启动数据库:netstartmysql(mysql80)2、停止数据库:netstopmysql(mysql80)3、进入mysql:mysql-uroot......
  • mysql设置密码复杂度
    MySQL密码复杂度策略设置MySQL系统自带有validate_password插件,此插件可以验证密码强度,未达到规定强度的密码则不允许被设置。MySQL5.7及8.0版本默认情况下貌似都......