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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 1024程序员节由来(1024程序员节宣言)

    曾经,在许多人的心中,程序员应该是这样的:画像格子衬衫不善言辞无女友电脑包常年加班但是呢,他们还有哪些不为人知的一面:1代码的好基友bug的大克星程序员的日常活动是什么呢?他们在食堂敲代码;他们在书店敲代码;他们在咖啡厅敲代码;他们甚至在斑马线上敲代码……他们的喜怒哀乐也很简单:一大串SQL语句,居然一下就成功时:(不敢相信)当代码没有正常执行,却不知道原因时…

    2022年4月16日
    46
  • 使用line_profiler查看api接口函数每行代码执行时间

    使用line_profiler查看api接口函数每行代码执行时间

    2022年3月13日
    63
  • 2021.4.14永久激活码_通用破解码

    2021.4.14永久激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    1.4K
  • python协程系列_python协程gevent

    python协程系列_python协程gevent协程协程(Coroutine),又称微线程,纤程。(协程是一种用户态的轻量级线程)作用:在执行A函数的时候,可以随时中断,去执行B函数,然后中断B函数,继续执行A函数(可以自动切换)

    2022年7月29日
    11
  • linux 重命名 文件夹_如何给文件批量重命名

    linux 重命名 文件夹_如何给文件批量重命名目录1.使用mv命令2.使用rename命令1.使用mv命令mv命令可以重命名或者移动文件或文件夹。mvAB#将目录A重命名为Bmv/a/b/c#将/a目录移动到/b下,并重命名为cmvabc123#将一个名为abc的文件重命名为123,如果当前目录下也有个123的文件的话,这个文件是会将它覆盖的。2.使用rename命令1.版本一:renameold_namenew_name<fil…

    2025年10月21日
    4
  • C语言指针函数和函数指针区别

    C语言指针函数和函数指针区别C语言函数指针和指针函数的区别C和C++中经常会用到指针,和数据项一样,函数也是有地址的,函数的地址是存储其机器语言代码的内存的开始地址。指针函数和函数指针经常会混淆,一个是返回指针的函数,另一个是指向函数的指针,下面就分别解释指针函数和函数指针的区别。一、指针函数指针函数是返回指针的函数主体是函数,返回值是一个指针基本声明形式:返回数据类型+*+函数名+(变量类型1,……

    2022年6月22日
    21

发表回复

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

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