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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: [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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
18天前
|
SQL 安全 数据库
如何在Django中正确使用参数化查询或ORM来避免SQL注入漏洞?
如何在Django中正确使用参数化查询或ORM来避免SQL注入漏洞?
114 77
|
11天前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过MongoDB Atlas Data Lake或Apache Drill,可以在Java中使用SQL语法查询MongoDB数据。这两种方法都需要适当的配置和依赖库的支持。希望本文提供的示例和说明能够帮助开发者实现这一目标。
36 17
|
5天前
|
SQL Oracle 关系型数据库
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。
|
13天前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
62 6
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL基础篇】多表查询(隐式/显式内连接、左/右外连接、自连接查询、联合查询、标量/列/行/表子查询)
本文详细介绍了MySQL中的多表查询,包括多表关系、隐式/显式内连接、左/右外连接、自连接查询、联合查询、标量/列/行/表子查询及其实现方式,一文全面读懂多表联查!
【MySQL基础篇】多表查询(隐式/显式内连接、左/右外连接、自连接查询、联合查询、标量/列/行/表子查询)
|
2月前
|
SQL 存储 关系型数据库
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
|
2月前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
93 9
|
13天前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
117 0
|
2月前
|
存储 Oracle 关系型数据库
索引在手,查询无忧:MySQL索引简介
MySQL 是一款广泛使用的关系型数据库管理系统,在2024年5月的DB-Engines排名中得分1084,仅次于Oracle。本文介绍MySQL索引的工作原理和类型,包括B+Tree、Hash、Full-text索引,以及主键、唯一、普通索引等,帮助开发者优化查询性能。索引类似于图书馆的分类系统,能快速定位数据行,极大提高检索效率。
66 8
|
8天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决