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

本文涉及的产品
云数据库 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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1天前
|
SQL 前端开发
基于jeecgboot复杂sql查询的列表自定义列实现
基于jeecgboot复杂sql查询的列表自定义列实现
|
2天前
|
存储 算法 关系型数据库
MySQL怎样处理排序⭐️如何优化需要排序的查询?
MySQL怎样处理排序⭐️如何优化需要排序的查询?
|
2天前
|
SQL 关系型数据库 MySQL
MySQL数据库的约束+进阶版新增与查询-2
MySQL数据库的约束+进阶版新增与查询
11 1
|
2天前
|
关系型数据库 MySQL 测试技术
MySQL数据库的约束+进阶版新增与查询-1
MySQL数据库的约束+进阶版新增与查询
11 1
|
2天前
|
SQL 存储 关系型数据库
MySQL查询原理,看这一篇就够了!
MySQL查询原理,看这一篇就够了!
|
5天前
|
SQL 数据库
SQL数据库基础语法-查询语句
SQL数据库基础语法-查询语句
|
5天前
|
SQL 关系型数据库 MySQL
MySQL 基本概念 基础用法 增删改查(特殊查询)语法 详细篇
MySQL 基本概念 基础用法 增删改查(特殊查询)语法 详细篇
|
5天前
T-sql 高级查询( 5*函数 联接 分组 子查询)
T-sql 高级查询( 5*函数 联接 分组 子查询)
|
5天前
|
机器学习/深度学习
T-sql 各种查询命令
T-sql 各种查询命令
|
7天前
|
缓存 关系型数据库 MySQL
为什么MySQL分页查询偏移量越大查询越慢
【5月更文挑战第1天】为什么MySQL分页查询偏移量越大查询越慢
42 4