mysql数据库如何实现查询语句

67次阅读
没有评论

共计 1621 个字符,预计需要花费 5 分钟才能阅读完成。

这篇文章主要介绍 mysql 数据库如何实现查询语句,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

查询语句:1、“select * from 表名;”,可查询表中全部数据;2、“select 字段名 from 表名;”,可查询表中指定字段的数据;3、“select distinct 字段名 from 表名”,可对表中数据进行去重查询。

本教程操作环境:windows7 系统、mysql8 版本、Dell G3 电脑。

单表查询

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

它的查询如下图所示:

可见等值查询效率太低

二、连接查询

1、外连接查询

(1)左外连接查询

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

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

如下图所示:

语句为:

select a.id,score
(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;

以上是“mysql 数据库如何实现查询语句”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计1621字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)