03:MYSQL----DQL,聚合函数

news2025/1/23 5:55:14

目录

1:介绍

2:语法

3:聚合函数

4:DOL 语句练习 

5:SQL执行顺序


1:介绍

数据查询语言,用来查询数据库中表的记录

2:语法

select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表 having 分组后字段列表  order by 排序字段列表  limit 分页参数  

1.:查询多个字段

select 字段1,字段2,.....from 表名;

select * from 表名;   --查看表中的所有字段

2:设置别名    as可以省略

select 字段1 [as 别名1],字段2 [as 别名2]...from 表名;

 3:去除重复记录

select distinct 字段列表 from 表名;            

4:条件查询

select 字段列表 from 表名 where 条件列表

where后的条件:

5: 分组查询

select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

where与having区别:
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。判断条件不同: where不能对聚合函数进行判断,而having可以 

注意:
执行顺序: where >聚合函数> having 。
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

分组后select :后面为要查询的字段,只可以写分组字段和聚合函数否则会报错

6:排序查询

select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2....

排序方式:

asc 升序(默认值)----可以省略不写

desc降序

注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

7:分页查询

select 字段列表 from 表名 limit 起始索引,查询记录数;

注意
起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数.
分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT.
如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。

eg:

user_name表中的原始数据

--查询指定字段:id,job,name
select id,job,name from user_name;
--查询所有字段(下面的2选1)
select id,job,name,gender,age,id_card,time_a from user_name;
select * from user_name;
--查询员工的身份证,起别名  as可以省略
select id_card as "身份证" from user_name;
select id_card  "身份证" from user_name;
--查询公司员工的年龄地址(不要重复)
select distinct age from user_name;

 

 

 原始数据


--查询年龄为18的员工
select id,name,age from user_name where age=18;--查询表user_name中年龄为18的人,打印出他们的id,name,age字段
select * from user_name where age=18;--查询表user_name中年龄为18的人,打印出他们的全部字段

--查询年龄小于18的员工
select * from user_name where age<18;-查询表user_name中年龄小于18的人,打印出他们的全部字段
select id,name,gender from user_name where age<18;-查询表user_name中年龄小于18的人,打印出他们的id,name,gender字段

--查询年龄小于等于 17的员工信息
select * from user_name where age<=17;
select id,name,job from user_name where age<=17;

--4.查询没有身份证号的员工信息
select * from user_name where id_card is null;
select id,name,age from user_name where id_card is null;

--5.查询有身份证号的员工信息
select * from user_name where id_card is not null;
select id,name from user_name where id_card is not null;

-- 6. 查询年龄不等于 18 的员工信息
select * from user_name where age!=18;
select * from user_name where age<>18;

-- 7. 查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息
select * from user_name where age>=15 && age<=20;
select * from user_name where age>=15 and age<=20;
select * from user_name where age between 15 and 20;

-- 8. 查询性别为 男 且年龄小于18岁的员工信息
select * from user_name where age<18 and gender="男";

--9。查询年龄等于18 或 17 或 20 的员工信息
select * from user_name where age=18 or age=17 or age=20;
select * from user_name where age in(17,18,20);

--10。查询姓名为两个字的员工信息_%
select * from user_name where name like "__";

-- 11,查询身份证号最后一位是X的员工信息
select * from user_name where id_card like "%x";

 

 

分组查询

原数据

--根据性别分组 ,统计男性员工 和 女性员工的数量,  下面2句话sql结果一样
select gender,count(gender) from user_name group by gender;
select gender,count(*) from user_name group by gender;

-- 2.根据性别分组 ,统计男性员工 和 女性员工的平均年龄
select gender,avg(age) from user_name group by gender;

-- 3:查询年龄小于18的员工 并根据性别分组 ,获取员工总人数大于等于3
select gender,count(*) "总人数"  from user_name where age<=18 group by gender; having count(*)>=3;
select gender,count(*) "总人数"  from user_name where age<=18 group by gender; having "总人数">=3;

排序查询:
原始数据

sql

-- 1.根据年龄对公司的员工进行升序排序  asc可以省略不写
select * from user_name order by age;  
select * from user_name order by age asc;
select * from user_name order by age desc;
-- 2.根据入职时间,对员工进行降序排序
select * from user_name order by time_a desc;
-- 3:根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序
select * from user_name order by age asc,time_a desc;

 分页查询

 sql

-- 1. 查询第1页员工数据, 每页展示10条记录
select * from user_name limit 0,3;
select * from user_name limit 3;
-- 2,查询第2页员工数据,每页展示3条记录 --------> (页码-1)*页展示记录数
select * from user_name limit 3,3;    --因为一共5条数据所以只显示第2页剩下2条数据了

 

3:聚合函数

1:介绍

将一列数据作为一个整体,进行纵向计算

2:常见聚合函数

3: 语法

select 聚合函数(字段列表) from 表名;

注意:null 值不参与所有聚合函数的运算.

-- 1.统计该企业员工数量
select count(*) from user_name;
select count(id) from user_name;

-- 2.统计该企业员工的平均年龄
select avg(age) from user_name;

-- 3。统计该企业员工的最大年龄
select max(age) from user_name;

-- 4。统计该企业员工的最小年龄
select min(age) from user_name;

-- 5.统计id为18的员工的年龄之和
select sum(age) from user_name where id=18;

4:DOL 语句练习 

-- 1.查询年龄为20,21,22,23岁的女性员工信息。
select * from  user_name where gender="女" and age in (20,21,22,23);

-- 2. 查询性别为 男 ,并且年龄在 18-40 岁(含)以内的姓名为三个字的员工。
select * from user_name where gender="男"  and  age between 18 and 40 and name like "___";

--3,统计员工表中,年龄小于60岁的 ,男性员工和女性员工的人数。
select gender,count(*) from user_name where age<60 group by gender;

--4,查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序。
select name,age from user_name where age<35 order by age asc,time_a desc;

--5,查询性别为男,且年龄在18-40 岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。
select * from user_name where gender="男" and age between 18 and 40 order by age asc,time_a asc limit 3;

 

-- 1.查询年龄为20,21,22,23岁的女性员工信息。
select * from  user_name where gender="女" and age in (20,21,22,23);
-- 2. 查询性别为 男 ,并且年龄在 18-40 岁(含)以内的姓名为三个字的员工。
select * from user_name where gender="男"  and  age between 18 and 40 and name like "___";

--3,统计员工表中,年龄小于60岁的 ,男性员工和女性员工的人数。
select gender,count(*) from user_name where age<60 group by gender;

--4,查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序。
select name,age from user_name where age<35 order by age asc,time_a desc;

--5,查询性别为男,且年龄在18-40 岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。
select * from user_name where gender="男" and age between 18 and 40 order by age asc,time_a asc limit 3;

5:SQL执行顺序

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/521944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vben Admin 自学记录 —— 使用 mock 模拟数据以及模拟api联调接口(持续更新中...)

Vben Admin —— 使用 mock 模拟数据以及模拟api联调接口 数据 mock&联调相关概念及使用 练习 —— 在之前table基础上&#xff0c;使用mock模拟数据&#xff0c;替换原来的死数据&#xff0c;添加新增、查看、修改和删除api并添加逻辑&#xff0c;实现一个简单的、完整的…

《编程思维与实践》1067.小型组合数

《编程思维与实践》1067.小型组合数 题目 思路 法一: 注意到题目数据最大为 C 40 20 137846528820 C_{40}^{20}137846528820 C4020​137846528820在long long的范围内,所以其实可以不用大整数的处理方法去计算: 由于 C m n m ! n ! ( m − n ) ! m ( m − 1 ) . . . ( m −…

mysql数据库的库操作 --2

目录 库操作 2.1&#xff1a;数据库的查看与创建与使用 2.2&#xff1a;字符集和效验规则 2.3&#xff1a;修改和删除数据库 2.4&#xff1a;数据库的备份和恢复 2.5&#xff1a;查看连接情况 库操作 2.1&#xff1a;数据库的查看与创建与使用 2.1.1&#xff1a;数据库…

AcWing算法提高课-1.3.9庆功会

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 本题链接&#xff08;AcWing&#xff09; 点这里 题目描述 为了庆贺班级在校运动会上取得全校第一名成绩&#xff0c;班主任决定开一场庆功会&#xff0c;为此拨款购买奖品犒劳运动员。 期望…

[golang gin框架] 32.Gin 商城项目- 支付宝支付操作相关功能讲解

一.支付宝支付之前的准备工作 创建应用、配置签名、提交审核 支付宝支付之前的准备工作 支付宝开放平台支持使用 普通公钥、公钥证书 两种签名方式 公钥证书模式下完成支付需要获取的内容&#xff1a; appId 应用私钥 应用公钥证书 支付宝根证书 支付宝公钥证书 普通公钥模式下…

热乎的面经——不屈不挠

⭐️前言⭐️ &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 &#x1f349;博客中涉及源码及博主日常练习代码均已上传GitHub &#x1f4…

【Linux常见指令以及权限理解】基本指令(3)

写在前面 上一篇文章&#xff0c;我们学习了Linux的一些常用指令&#xff0c; 学习了如何理解Linux系统&#xff0c;介绍了对Linux系统的理解&#xff1a;Linux下一切皆文件 介绍了重定向还有管道相关的知识。这里是上一篇博客的链接&#xff1a;http://t.csdn.cn/2d6fc 接…

Kali HTTrack演示-渗透测试察打一体(1)

HTTrack是一个免费并易于使用的线下浏览器工具,全称是HTTrack Website Copier for Windows,它能够让你从互联网上下载指定的网站进行线下浏览(离线浏览),也可以用来收集信息(甚至有网站使用隐藏的密码文件),一些仿真度极高的伪网站(为了骗取用户密码),也是使用类似工具做…

[一篇读懂]C语言十二讲:栈与队列和真题实战

[一篇读懂]C语言十二讲&#xff1a;栈与队列和真题实战 1. 与408关联解析及本节内容介绍1 与408关联解析2 本节内容介绍 2. 栈(stack)的原理解析2.1 **栈&#xff1a;只允许在一端进行插入或删除操作的线性表**2.2 栈的基本操作2.3 栈的顺序存储2.4 栈的链表存储 3. 初始化栈 -…

PE文件+UPX壳 ida分析

die查壳发现是UPX壳&#xff0c;直接用ida分析&#xff0c;会发现能分析出来的信息特别少&#xff0c;需要脱壳 工具链接发布 UPX/UPX (github.com) 下载压缩包后解压&#xff0c;直接在该文件路径下cmd&#xff0c;输入upx.exe -h安装完成&#xff0c;使用命令“upx -d 文件路…

计算机网络-网络层与链路层协议分析实验

一.实验目的 通过本实验&#xff0c;进一步熟悉PacketTracer的使用&#xff0c;学习路由器与交换机的基本配置&#xff0c;加深对网络层与链路层协议的理解。 二.实验内容 1.完成路由器交换机的基本配置 2.了解 ICMP 数据包的格式 3.检查ARP交换 三.实验过程 1.完成路由…

链表——循环链表

其他形式的链表——循环链表 循环链表 定义&#xff1a;循环链表是表中最后一个结点的指针指向头结点&#xff0c;使链表构成环状 特点&#xff1a;从表中任一结点发出均可找到表中其他结点&#xff0c;提高查找效率 双向循环链表 data&#xff1a;数据元素 prior&#xff1…

进程间通信--管道

文章目录 一.通信二.管道匿名管道&#xff08;只能用于有血缘关系的进程之间通信&#xff09;1.匿名管道的创建2.匿名管道的读取情况3.管道的特征4.基于匿名管道的简单进程池 有名管道&#xff08;用于没有血缘关系的进程间的通信&#xff09;1.有名管道的建立和删除2.通过一段…

CodeForces 438 D线段树暴力修改

线段树暴力修改 关键是每个数取余操作&#xff0c;看似我们如果暴力改的话m*n肯定超时了 容易发现一个数小于给定模数的时候&#xff0c;取模不会发生改变&#xff0c;而大于给定模数的时候我们得到的最大的结果是x/2向上取整&#xff0c;结果一定小于等于这个数字,这里我想说…

AECC全球留学趋势报告解读

AECC全球留学趋势报告解读 相对更安全的留学目的地&#xff1a; 留学安全是留学生及家长最关注的一个问题。报告显示&#xff0c;在“你认为相对更安全的留学目 的"的问答中&#xff0c;澳大利亚获得总评8.76分&#xff08;满分10分&#xff09;位居第一。 英澳新留学更受…

VMware Tanzu Kubernetes Grid (TKG) 2.1 - 企业级 Kubernetes 解决方案

VMware Tanzu Kubernetes Grid (TKG) 2.1 - 企业级 Kubernetes 解决方案 VMware 构建、签名和支持的开源 Kubernetes 容器编排平台的完整分发版 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-tkg-2/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处…

华为OD机试真题 Java 实现【最优资源分配】【2023Q1 200分】

一、题目描述 某块业务芯片最小容量单位为 1.25G&#xff0c;总容量为 M*1.25G&#xff0c;对该芯片资源编号为 1&#xff0c;2&#xff0c;… M。 该芯片支持 3 种不同的配置&#xff0c;分别为 A、B、C. 配置 A: 占用容量为 1.25 * 1 1.25G配置 B: 占用容量为 1.25* 2 2…

白嫖chatgpt的Edge插件,很难不爱啊

目录 &#x1f341;1.常见的Edge浏览器界面 &#x1f341;二.安装WebTab插件 &#x1f341;三.WebTab插件的各种功能 &#x1f341;1.支持免费的chatgpt&#xff0c;不限次数​编辑 &#x1f341;2.有几个休闲的小游戏可以玩耍&#xff0c;点击即玩。 &#x1f341;3.支…

【迷宫问题】找出迷宫所有可能的路径C++

1 引入情境 我记得小时候玩过推箱子游戏&#xff0c;也是如下图这种&#xff0c;四周由深色的方格作为墙壁&#xff0c;白色的地方是可以通过的。现在想要从红色方格出发走到黄色方格&#xff0c;能有什么好办法呢&#xff1f; 注意到&#xff0c;对于计算机没有全局的观念&…

Flutter音乐播放audioplayers

简介 Flutter的audioplayers是一个Flutter插件&#xff0c;可以播放多个同时的音频文件&#xff0c;支持Android、iOS、Linux、macOS、Windows和web平台。它有以下特点&#xff1a; 可以从本地文件、网络资源或内存中加载音频可以控制音量、进度、速度和循环可以播放多个音频…