[MySQL]不允许你不会SQL语句之查询语句

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: [MySQL]不允许你不会SQL语句之查询语句

🎬 博客主页:博主链接

🎥 本文由 M malloc 原创,首发于 CSDN🙉

🎄 学习专栏推荐:LeetCode刷题集!

🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

📆 未来很长,值得我们全力奔赴更美好的生活✨

------------------❤️分割线❤️-------------------------

————————————————

a6c0473e16e249c2b9ca02e5b793f35e.gif

b4a7e89dfe1c4f41bf01790aea70ae9f.png

😁大家好呀,今天是我第四次写sql_server,也是最近才学习sql_server,也想着记录一下自己的学习过程,并且分享给大家尼!

😃查询语句

😧 一、sql_server技术介绍

SQL Server 是由微软公司(Microsoft)开发的关系型数(RDBMS)。RDBMS 是 SQL 以及所有现代数据库系统的基础,比如 MS SQL Server,IBM DB2,Oracle,MySQL 以及微软的 Microsoft Access。

😧二、学习前的准备工作

编程软件:SQL Server Management Studio 2012

带好你的小板凳,我们一起扬帆起航!

440c2ef9bcab45e89933ff0c1f364bb6.png

😧模糊查询

在SQL中有一种查询叫模糊查询,是什么样子的呢?接下来我们就来详细的看几道例题吧!

😃三、模糊查询的及其语法讲解

如下图所示,正是我们会在查询中遇到的一些语法问题啦!

接下来我们来看几个例子吧!

1.查询出姓刘的员工信息

语法:select * from 表名 where like 条件

select * from People where PeopleName like '刘%'

c7428cdd3cb948a583b7ef4cbbd39c02.png

2.查询出名字字中含有尚的员工信息

select * from People where PeopleName like '%尚%'

31576551238642b4a3b62e07d4391991.png

3.查询出名字中含有尚或者史的员工信息

注意看这里是或者,所以我们用到的关键字就得有or这个关键字啦!

select * from People where PeopleName like '%尚%' or PeopleName like '%羽'

56ddcab539f545de80326e712451f5ca.png

4.查询出姓刘的员工,名字时两个字 _下划线代表有且仅有一个字符

注意看,这个时候我们只想查询刘后面接一个字的名字,例如刘备,假设是刘大汉就不行啦!

select * from People where PeopleName like '刘_'

ab641d79d05c4568b9a8b9cf994a7c5d.png

5.查询名字最后一个字为香,名字一共三个字的员工信息

那么根据上述描写,一个下划线代表着一个字,那么这个时候我们用两个下划线是不是就行啦!

select * from People where PeopleName like '__香'

f349a4a3929247418667b02e1172818e.png

6.查询出电话号码开头为138的员工信息

select * from People where PeoplePhone like '138%'

4ad4ebd20dc342799aa2a8439aa1ce5b.png

7.查询出电话号码开头为138的,第四位好像是7或者8,最后一个号码是5

此时我们发先题目要求我们呢带有查询的一个范围,这个时候我们就需要用到[]这个语法就行啦!

[]这个代表的是通配符的意思,里面填写的是数的范围

select * from People where PeoplePhone like '138[7,8]%5'

7e63444e745c43519ab39ac4d8c09006.png此时我们发现我们建立的表中是没有这样的数据的。

8.查询出电话号码开头为138的,第四位好像是2者5,最后一个号码不是2和3

select * from People where PeoplePhone like '138[2,3,4,5]%[^2,3]'

394c16e5d2504b5299bc7db3b8f09ffa.png

😧聚合函数

下图是聚合函数的几个函数名!

7958be9e52b94e30b51f495a4f21dd93.png

接下来我带大家了解几个例子吧!

1.求员工的总数

select count(*) 人数 from People

40672a596fbf497596873f03d2d8e205.png

2.求最大值,求最高的工资

select max(PeopleSalary) 最高工资 from People

5016c605f790450ab0048f0fb749ba79.png

3.求最小值,求最小的工资

select min(PeopleSalary) from People

9e0655f5ed7942d880e92cdfe329eae7.png

4.求和,求所有员工的工资总和

select sum(PeopleSalary) 总和工资 from People

ccaf9d968faa404195b1fbabaa06f428.png

5.求平均值,求所有员工的平均工资

select avg(PeopleSalary) 平均工资 from People

aeab22c021304003a519f79bcdf9b385.png

我们会发现这后面会有很多小数点,这时候我们可以用到一个函数啦!round这个函数

select round(avg(PeopleSalary),2) from People

b84c1f0763a4434fab5bceeac5294949.png

6.求数量,最大值,最小值,总和,平均值,在一行显示

select count(*) 人数,max(PeopleSalary) 最高工资,min(PeopleSalary),sum(PeopleSalary) 总和工资,round(avg(PeopleSalary),2) from People

这一题就是把前面的全部整合到一起啦!

9a86d48e833e4cb28cb18f0a39504760.png

7.查出武汉地区的数量,最大值,最小值,总和,平均值,在一行显示

这里我们发现还多加了一个条件,需要有指定的城市也很简单啦!

select count(*) 人数,max(PeopleSalary) 最高工资,min(PeopleSalary),sum(PeopleSalary) 总和工资,round(avg(PeopleSalary),2) from People where PeopleAddress = '武汉'

63bbdabd0db04bcd96e47b222c451a1a.png

8.求出工资比平均工资高的人员信息

select * from People where PeopleSalary >
  (select avg(PeopleSalary) from People)

05a7ea0d9bf843bf8ae5e318d53f5c51.png

这里运用到了一个子查询,首先我们可以先把工资求出来,然后再通过子查询查询到平均工资,这样在做一个比较就行啦!

9.求数量,年龄最大值,最小值,年龄总和,年龄平均值

在查询年龄的时候,我们可以运用到一个函数,year(),它可以返回对应的年份,在运用一个函数getdate(),这个函数的作用就是求出实时的年月日,再用实时的年月减去出生的年就行啦!

select *,year(getdate()) - year(PeopleBirth) 年龄 from People
select count(*),
max(year(getdate()) - year(PeopleBirth)) 最高年龄,
min(year(getdate()) - year(PeopleBirth)) 最低年龄,
sum(year(getdate()) - year(PeopleBirth)) 年龄总和,
avg(year(getdate()) - year(PeopleBirth)) 平均年龄
from People

1f48e1a835714dec8f84280a6496d07e.png

10.计算出月薪在10000以上的男性,年龄最大值,最小值,年龄总和,年龄平均值

这一道题目就是做了一个条件的限制,我们需要在后面加上限制条件就行啦!

select '月薪在10000以上' 月薪,'男' 性别,
count(*),
max(year(getdate()) - year(PeopleBirth)) 最高年龄,
min(year(getdate()) - year(PeopleBirth)) 最低年龄,
sum(year(getdate()) - year(PeopleBirth)) 年龄总和,
avg(year(getdate()) - year(PeopleBirth)) 平均年龄
from People where PeopleSalary > 10000 and PeopleSex = '男'

de8d8b4d67c944a89f95b20966c56532.png

11.统计出所在地在武汉或者北京’,年龄最大值,最小值,年龄总和,年龄平均值

select count(*),
max(year(getdate()) - year(PeopleBirth)) 最高年龄,
min(year(getdate()) - year(PeopleBirth)) 最低年龄,
sum(year(getdate()) - year(PeopleBirth)) 年龄总和,
avg(year(getdate()) - year(PeopleBirth)) 平均年龄
from People where PeopleAddress in('武汉','北京') and PeopleSex = '女'

256bce55292842088f46d420fb471552.png

我们会发现此时我们的表中无值的!

12.求出年龄比平均年龄高的员工信息

这里首先我们可以先通过子查询查出平均年龄的信息,然后再用表中的年龄信息与平均年龄信息进行比较,如果大于平均年龄则输出就行啦!

select * from People where (year(getdate()) - year(PeopleBirth)) > (select avg(year(getdate())- year(PeopleBirth)) from People)

e915355483d341cf832204e6551dc5ce.png

😧分组查询(group by)

1.根据员工所在地区分组统计员工人数,员工工资总和,平均工资,最高工资,最低工资

首先在分组查询的过程中,我们需要先看题目要求对谁分组,这里是对地区分组,所以我们group by的就是PeopleAddress

select PeopleAddress 地区, count(*),sum(PeopleSalary),avg(PeopleSalary),max(PeopleSalary),min(PeopleSalary) from People 
group by PeopleAddress 

0e4811b8c06e43e68db135be37972644.png

2.根据员工所在地区分组统计员工人数,员工工资总和,平均工资,最高工资,最低工资,1985年以后出身的员工不参与统计

从这里我们看到,这里还加了一些个条件,此时我们就需要用where来进行限制啦!

select PeopleAddress 地区, count(*),sum(PeopleSalary),avg(PeopleSalary),max(PeopleSalary),min(PeopleSalary) from People
  where PeopleBirth < '1985-1-1'
    group by PeopleAddress 

3079872728f5417da44df3ca5ae72920.png

3.根据员工所在地区分组统计员工人数,员工工资总和,平均工资,最高工资,最低工资,要求员工人数至少在两个人及以上的,1985年以后出身的员工不参与统计

select PeopleAddress 地区, count(*),sum(PeopleSalary),avg(PeopleSalary),max(PeopleSalary),min(PeopleSalary) from People
  where PeopleBirth < '1985-1-1'
    group by PeopleAddress having count(*) >= 2

当我们用了group by时,我们的where里面就不可以用聚合函数了,所以此时我们需要用having这个关键字!

72b931bb39aa4b0180a6773b879e72fc.png

😳总结

今天的分享就到此为止啦!我们下期再见啦!一定要好好吸收啊!我是爱你们的M malloc

71e7a9feee9948c5ad062008005a5eb5.png

1eb3d97d33b44ab691a9728de479cfb9.gif

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
15天前
|
缓存 关系型数据库 MySQL
MySQL索引策略与查询性能调优实战
在实际应用中,需要根据具体的业务需求和查询模式,综合运用索引策略和查询性能调优方法,不断地测试和优化,以提高MySQL数据库的查询性能。
|
1天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
2天前
|
SQL Oracle 关系型数据库
SQL(MySQL)
SQL语言是指结构化查询语言,是一门ANSI的标准计算机语言,用来访问和操作数据库。 数据库包括SQL server,MySQL和Oracle。(语法大致相同) 创建数据库指令:CRATE DATABASE websecurity; 查看数据库:show datebase; 切换数据库:USE websecurity; 删除数据库:DROP DATABASE websecurity;
|
16天前
|
SQL 监控 关系型数据库
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
|
23天前
|
SQL 前端开发 关系型数据库
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
49 9
|
28天前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
88 10
|
22天前
|
SQL 关系型数据库 MySQL
|
25天前
|
缓存 监控 关系型数据库
如何优化MySQL查询速度?
如何优化MySQL查询速度?【10月更文挑战第31天】
56 3
|
28天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
160 1
|
29天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
69 0