mysql数据库中查询数据的语句怎么写_mysql数据库多表查询

mysql数据库中查询数据的语句怎么写_mysql数据库多表查询单表查询1、普通查询(1)命令:select*from<表名>;//通匹(2)命令:select<要查询的字段>from<表名>;2、去重查询(distinct)命令:selectdistinct<要查询的字段>from<表名>3、排序查询(orderby)升序:asc降序:desc降序排列命令:select<要查询的字段名>from<表名>orderby<要查询的字

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

单表查询

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;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197885.html原文链接:https://javaforall.net

(0)
上一篇 2025年8月26日 上午8:43
下一篇 2025年8月26日 上午9:15


相关推荐

  • 概率论机器学习的先验知识(上)

    概率论机器学习的先验知识(上)

    2022年1月2日
    57
  • 【Android】Android加密和解密方式

    【Android】Android加密和解密方式一、不可逆加密不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。如信息摘要(MessageDigest)和安全散列(SecureHash)算法属于此类,常见的算法包括MD5、SHA1、PBKDF2、bcrypt等。特点:使用MD5和SHA进行加解密://MD5加密privatestaticStringt

    2022年5月17日
    49
  • win11 修改host文件[通俗易懂]

    win11 修改host文件[通俗易懂]转到“开始”菜单搜索栏,输入“记事本”,然后以管理员身份运行记事本。单击文件并从菜单中选择“打开…”选项。在“文件名:”选项中输入主机文件地址(C:\Windows\System32\drivers\etc\hosts),然后单击“打开”。选择打开所有文件可以看到host文件在您的记事本上打开Host文件,然后您可以从这里对其进行编辑。输入IP地址和域名以配置映射。保存修改注意查看保存的文件类型为所有文件提示替换同意之后退出完成修改…

    2022年10月12日
    4
  • 字典树(前缀树)_字典树java实现

    字典树(前缀树)_字典树java实现什么是字典树?叫前缀树更容易理解字典树的样子Trie又被称为前缀树、字典树,所以当然是一棵树。上面这棵Trie树包含的字符串集合是{in,inn,int,tea,ten,to}。每个节点的编号是我们为了描述方便加上去的。树中的每一条边上都标识有一个字符。这些字符可以是任意一个字符集中的字符。比如对于都是小写字母的字符串,字符集就是’a’-‘z’;对于都是数字的字符串,字…

    2025年9月30日
    5
  • 大放异彩的伪元素——可以做什么?(转)别人分享的文章,发现很不错,果断收藏了…

    大放异彩的伪元素——可以做什么?(转)别人分享的文章,发现很不错,果断收藏了…

    2021年9月6日
    53
  • phpstorm2021.5 激活码(最新序列号破解)

    phpstorm2021.5 激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    136

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号