首页 > 数据库 >mysql数据库多表查询

mysql数据库多表查询

时间:2024-09-30 09:00:29浏览次数:7  
标签:多表 数据库 查询 score mysql 左表 20 id select

单表查询

1、普通查询

(1)命令:select * from <表名>;//通匹

(2)命令:select <要查询的字段> from <表名>;

2、去重查询(distinct) 命令:select distinct <要查询的字段> from <表名>

3、排序查询(order by) 升序:asc 降序:desc

降序排列命令:select <要查询的字段名> from <表名> order by <要查询的字段名> desc

不加desc一般默认为升序排列

4、分组查询(group by) 命令:select <按什么分的组>, Sum(score) from <表名> group by <按什么分的组>

假设现在又有一个学生成绩表(result)。要求查询一个学生的总成绩。我们根据学号将他们分为了不同的组。

命令:mysql>select id, Sum(score) from result group by id;

多表查询

一、等值查询

现在有两个表:

在这里插入图片描述 在这里插入图片描述

现在要查询年龄小于20岁学生的不及格成绩

语句:select stu.id,score from stu,result where stu.id = result.id and age < 20 and score < 60; 它的查询如下图所示:

在这里插入图片描述  

可见等值查询效率太低

二、连接查询

1、外连接查询

(1)左外连接查询

假设我们依旧使用的是上面的两个表,任然查询年龄小于20岁学生的不及格成绩

我们利用左外连接查询,先将学生表中所有年龄小于20岁的学生取出来,再在成绩表中将所有成绩小于60的学生取出来,然后再进行配对,我们会发现效率大大得提高,只用匹配四次就可以找到。 如下图所示:

在这里插入图片描述 语句为: select a.id,score from (select id,age from stu where age < 20) a (过滤左表信息) left join (select id, score from result where score < 60) b (过滤右表信息) on a.id = b.id; 左外连接就是左表过滤的结果必须全部存在。如果存在左表中过滤出来的数据,右表没有匹配上,这样的话右表就会出现NULL; (2)右外连接查询 select a.id,score from (select id,age from stu where age < 20) a (过滤左表信息) right join (select id, score from result where score < 60) b (过滤右表信息) on a.id = b.id; 左外连接就是左表过滤的结果必须全部存在 如图: 在这里插入图片描述 我们发现过滤出来的表进行的匹配只有两条满足条件(红色代表条件满足),但最后的结果却是: 在这里插入图片描述 左表不匹配的数据改为空,右表过滤出来的数据都要存在。 (3)全外连接查询 结合了左外连接和右外连接,使得左表和右表的数据都存在。 2、内连接查询 只筛选匹配结果 比如过滤的结果如下: 在这里插入图片描述 最后的结果为: 在这里插入图片描述 只匹配我们需要的结果 语句为: select a.id,score from (select id,age from stu where age < 20) a (过滤左表信息) inner join (select id, score from result where score < 60) b (过滤右表信息) on a.id = b.id;

标签:多表,数据库,查询,score,mysql,左表,20,id,select
From: https://www.cnblogs.com/gdjgs/p/18441122

相关文章

  • 【MySQL】数据库中的内置函数
    W...Y的主页......
  • 基于Python+flask+MySQL+HTML的全国范围水质分析预测系统,可视化用echarts,预测算法随机
    1绪论近年来,水质监测系统的进步显著,这在全球环保意识不断提升的背景下尤为明显。大量资源被投入到水质监测技术的研发和应用中,以不断优化监测效能。水资源的保护及健康环境的维护,这种趋势旨在提升人们生活质量,确保优质的生活条件。通过持续不懈的努力,我们得以实现对水质的及......
  • 数据库离程序员有多远 - cnblogs救园行动感想
    这两周,我参与了博客园的“2024救园行动”,成了终身会员。说实话,当初报名的时候,我心里还挺兴奋的,想着这下能和不少老朋友在这个社区里再次相聚。毕竟,在数据库行业摸爬滚打了这么多年,自认为也认识不少圈内人士,更不用说程序员群体了。可结果却有点出乎意料。当我翻看那500位终身会员的......
  • jsp爱宠宠物医院管理系统设计与实现0685i--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、课题名称爱宠宠物医院管理系统设计与实现二、研究背景与意义随着宠物市场的不断扩大,宠物医院作为宠物健康保障的重要环节,其管理效率和服务质......
  • jsp爱独居老人网站的设计与实现rig5u--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着社会老龄化的加剧,独居老人群体日益庞大,他们面临着生活孤独、健康监测不足、紧急求助困难等问题。为了改善独居老人的生活质量,提升......
  • jsp爱电影网站的设计与实现6nk0x(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着互联网技术的飞速发展,网络娱乐已成为人们日常生活中不可或缺的一部分,其中在线观影因其便捷性、丰富性和互动性而备受青睐。......
  • 基于C++11的数据库连接池环境配置
    欢迎访问我的另一个博客:https://xingzhu.top/ubuntu安装python2由于接下来要使用python,所以先安装python#安装python2.7.18即可#python3不行,版本过高,会报错sudoaptinstallpython2python2--version安装完成后我们可以使用如下命令来检查目前可用的Pyt......
  • 数据库连接池实现
    欢迎访问的另一个博客:https://xingzhu.top/源码链接:https://github.com/xingzhuz/MysqlLinkPool前置知识:相关的环境配置:https://xingzhu.top/archives/shu-ju-ku-lian-jie-chi-huan-jing-pei-zhiMySQLAPI:https://subingwen.cn/mysql/mysql-api/JsoncppAPI:htt......
  • MySQL8主从搭建
    MySQL8主从搭建基础环境基本信息:虚拟化软件:OracleVMVirtualBox1C/2G1个网卡80G系统盘oracle:mysql-8.0.20yum:CentOS-7.6-x86_64-DVD-1810.iso服务器IP规划:主机名mysql1mysql2mysql3系统CentOS-7.6CentOS-7.6CentOS-7.6IP192.168.56.41192.168.56.42192.168.56.......
  • 数据库入门不再难:克服学习障碍的实用技巧与演示
    文章目录摘要引言常见的学习困难及解决方法理解抽象的数据库概念SQL语句的构建与优化理解事务与并发控制实用的学习技巧与工具推荐推荐学习资源数据库设计与实践的常用技巧实战演练常见问题解答总结未来展望参考资料摘要数据库学习对于初学者来说,往往会面临诸多......