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

2023-11-20

目录

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执行顺序

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

03:MYSQL----DQL,聚合函数 的相关文章

  • 在 MS Access SQL 查询中从正常日期转换为 unix 纪元日期

    我正在尝试编写一个通过 ODBC 连接到 MySQL 数据库的 MS Access 2007 连接的查询 一切工作正常 查询执行我想要的操作 我挂断的部分是我一直在询问用户 unix 纪元时间 而不是常规日期 我查找了 MS Access
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • 标量子查询包含多行

    我正在使用 H2 数据库并想要移动一些数据 为此 我创建了以下查询 UPDATE CUSTOMER SET EMAIL SELECT service EMAIL FROM CUSTOMER SERVICE AS service INNER
  • 没有为 1 个或多个必需参数给出值。更新SQL

    我正在编写一个程序 当用户在列表视图上选择记录时 该程序会更新密码或积分 我收到错误 没有为 1 个或多个必需参数给出值 我不知道如何纠正 我是否遗漏了一些明显的东西 Dim sql As String UPDATE Users SET P
  • 以编程方式插入行(父行和子行)

    我正在使用 Spring 和 JDBCTemplate 该场景是 CUSTOMER 表和 ORDERS 表的父子关系 我想做一个插入 例如 1 个客户和 5 个订单 但我不确定如何以编程方式在 CUSTOMER 表中插入一行 如何获取 Or
  • 在上下文中提取搜索字符串

    我正在尝试执行 MySQL 查询 在上下文中提取搜索字符串 因此 如果搜索是 mysql 我想从 body 列返回类似的内容 下载后只需几分钟MySQL安装程序即可使用 这就是我现在得到的 但它不起作用 因为它只是从正文字段中获取前 20
  • 如何使用wireshark清晰捕获mysql查询sql

    因为我们使用远程开发Mysql服务器 所以不能轻易检查查询sql 如果使用本地服务器可以tail f general log file查看调用某个http接口时执行了哪些sql 所以我安装了一个wireshark捕获这些从本地发送的查询sq
  • 当从属文本框中没有输入文本时,如何让 gridview 显示所有表格行?

    下面的代码可以正常工作 并根据文本框中输入的文本过滤我的网格视图 当我的文本框中没有输入任何文本时 我没有得到任何结果 并且无法理解为什么 我的问题 如何让gridview显示all当文本框中没有输入文本时表行 MSSQL Search n
  • PHP使用auto_increment生成短唯一ID?

    我想生成一个简短的 唯一的 ID 而不必检查冲突 我目前正在做类似的事情 但是我当前生成的 ID 是随机的 并且在循环中检查冲突很烦人 并且如果记录数量显着增加 将会变得昂贵 通常担心冲突不是问题 但我想要生成的唯一 ID 是一个由 5 8
  • 如何将SQL数据加载到Hortonworks中?

    我已在我的电脑中安装了 Hortonworks SandBox 还尝试使用 CSV 文件 并以表结构的方式获取它 这是可以的 Hive Hadoop nw 我想将当前的 SQL 数据库迁移到沙箱 MS SQL 2008 r2 中 我将如何做
  • 无法在 .net core 2 中从 MySQL 构建“日期”类型列

    我已经开始了一个新的 net core 2 项目 我正在尝试将 MySQL 数据库导入实体框架 我使用此命令来搭建数据库 Scaffold DbContext server localhost port 3306 user id user
  • 3 个表的 SQL 查询(或联接)

    第一次在 Stack Overflow 上问问题 很棒的资源 但是只有一件事真正让我作为 SQL 新手感到困惑 我有三个表 我想获取与鲍勃的学生相关的所有导师的姓名 表 1 教师 ID Name 1 Bob 表 2 学生 STUDENT I
  • H2 SQL 日期比较

    在 H2 数据库中 如何在 TIMESTAMP 类型的列上运行查询 SELECT FROM RECORDS WHERE TRAN DATE lt 2012 07 24 Try 2012 07 24
  • SQL 使用另一列的键和最大值设置列

    我需要根据同一 ID 的 duration 列的最大值更新 max register 列 将值设置为 1 其他值设置为 0 初始表 Id duration max register 1 0 0 1 7 0 1 3 0 2 10 0 2 5
  • 在 django ORM 中查询时如何将 char 转换为整数?

    最近开始使用 Django ORM 我想执行这个查询 select student id from students where student id like 97318 order by CAST student id as UNSIG
  • MySQL - 多个结果集

    我正在使用 NET Connector 连接到 MySQL 在我的应用程序中 很少有线程使用相同的连接 因此如果 MySQLDataReader 尚未关闭并且某个线程正在尝试执行查询 则会出现该错误 已经有一个打开的 DataReader
  • 在MySQL中生成随机字符串

    我正在尝试使用函数在 phpmyadmin 中获取随机字符串 我有以下代码 CREATE FUNCTION randomPassword RETURNS varchar 128 BEGIN SET chars ABCDEFGHIJKLMNO
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • 在Oracle中使用IW和MM

    我使用 IW 表示每周结果 使用 MM 表示每月结果 但我总是收到错误 ORA 00979 not a GROUP BY expression 00979 00000 not a GROUP BY expression 我的疑问是这些 We

随机推荐

  • 常用Shell命令汇总-用户和用户组管理

    不知道大家平时有没有跟我一样的感受 就是很多shell命令自己其实用过 但时间一久又忘记了 导致又要到处百度 开始写这个系列的目的第一是为了总结 第二是为了以后忘记时可以直接到这找哈哈哈哈哈 平时在百度时还发现一个问题 就是其实我只想要最常
  • 2023华为OD机试真题【机房布局/模拟】

    题目描述 小明正在规划一个大型数据中心机房 为了使得机柜上的机器都能正常满负荷工作 需要确保在每个机柜边上至少要有一个电箱 为了简化题目 假设这个机房是一整排 M表示机柜 I表示间隔 请你返回这整排机房 至少需要多少个电箱 如果无解请返回
  • 安装 Android Studio

    安装 Android Studio 只需轻松点击几下 您需要已下载 Android Studio Windows 如需在 Windows 系统中安装 Android Studio 请执行以下操作 启动您下载的 exe 文件 根据安装向导的指
  • npz,npy的输入和读取np.load和np.save

    np load和np save 是读写磁盘数组数据的两个主要函数 默认情况下 数组是以未压缩的原始二进制格式保存在扩展名为 npy的文件中 np savez 如果你想将多个数组保存到一个文件中的话 可以使用numpy savez函数 sav
  • 数学建模中的经典问题-旅行商(TSP)问题

    1 相关理论 2 算法流程 3 代码实现 4 结果显示 1 相关理论 旅行商 TSP 问题是数学建模中的经典问题 它是一个典型的NP完全问题 TSP问题可描述为 已知n个城区相互之间的距离 某一旅行商从城市出发访问每个城市一次且仅一次 最后
  • ios -Unity3D的EasyAR集成到已经有项目中。

    近期 在做AR这一块 用EasyAR集成到iOS端 由于现在到项目已经上线 下一版本要做一个AR功能 于是迫于需求需要 自己研究和翻阅读好多集成到资料 通过整理分出几个重要到模块 其中在这里指出Xcode9版本确实好坑 建议弃坑 该用稍微好
  • android studio agpbi error,Android Studio 3.1.1 打Jar包出现AGPBI异常解决

    今天 写好Demo兴致勃勃准备打个Jar包在Unity中测试下 不料 突然出现AGPBI这个异常 日志如下 AGPBI kind error text Program type already present android support
  • Android Recyclerview焦点变化问题导致下拉刷新视觉卡顿

    如题 最近做项目时偶然发现了一个Recyclerview嵌套Recycleview的问题 业务模块是订单列表 涉及到一个订单包含多个子订单的情况 所以考虑使用嵌套来展示页面 这一切都是正常的 没有任何问题 然而 随着业务的展开需要查看详情单
  • 自己写的PLC编程软件,和FANUC PMC功能基本保持一致

    自己写的PLC编程软件 和FANUC PMC功能基本保持一致 下载地址 免积分 链接 pan baidu com s 162 GcF7wh SNT3McATPPmg 提取码 1234 https download csdn net down
  • 基于ShuffleNetv2-YOLOv4模型的目标检测

    目录 1 引言 摘要 1 1 说明 1 2替换完成的工程请参考gitee 2 网络结构基础 2 1YOLOv3 2 1 YOLOv4算法 2 3 ShuffleNetv2 2 4 替换后的网络结构 3 实验结果 3 1实验环境配置及数据集介
  • 时间复杂度+常见复杂度解释

    前言 算法的效率 虽然计算机能快速的完成运算处理 但实际上 它也需要根据输入数据的大小和算法效率来消耗一定的处理器资源 要想编写出能高效运行的程序 我们就需要考虑到算法的效率 算法的效率主要由以下两个复杂度来评估 时间复杂度 评估执行程序所
  • Vue long精度丢失问题

    原因 vue前端对long类型的精度无法接收 javascript 的 Number 类型最大长度是17位 mysql 使用bigint 类型长度是20位 前端解决方法 在全局的网络请求 用了一个处理数据的插件 来转换 后端解决的方法 Co
  • 网络安全不可忽视!企业如何做好网络安全。

    随着互联网的高速发展 其面临的安全隐患也暴露无疑 比如网络攻击 黑客入侵等 都会严重影响到网络业务的运行 为此很多企业都绞尽脑汁寻找抵御各类网络安全隐患 国家也出台了相关的等保方案让企业能够免于后顾之忧 下面我们来说说目前网络安全的具体内容
  • android音视频!BAT大厂面试基础题集合,不吃透都对不起自己

    前言 现在已经进入招聘季节 本篇文章旨在分享知名互联网企业面试官面试方法和心得 希望通过本文的阅读能给程序员带来不一样的面试体验和感受 放松面试心态 积极备战 找到正确的学习路线 一 架构师专题 想要掌握复杂的技术 必须要理解其原理和架构
  • ROS学习笔记(二)文件系统

    ROS学习笔记 二 文件系统 开篇 ROS的文件系统结构 要学会建立一个ROS工程 首先要认识一个ROS工程 了解它们的组织架构 从根本上熟悉ROS项目的组织形式 了解各个文件的功能和作用 才能正确的进行开发和编程 本章的主要内容有 介绍c
  • 就现在!为元宇宙和Web3对互联网的改造做准备!

    欢迎来到Hubbleverse 关注我们 关注宇宙新鲜事 预计阅读时长 8分钟 本文仅代表作者个人观点 不代表平台意见 不构成投资建议 如今 互联网是各种不同的网站 应用程序和平台的集合 由于彼此分离 它们缺乏互操作性和数据可移植性 因此
  • ant design vue中menu组件递归渲染报错解决

    ant design vue中menu组件递归渲染报错 开始递归组件后打开页面后报错如下 解决如下 使 单 件 式递归 成菜单 Before v2 0 因组件内部会动态更改a sub menu的属性 如果拆分单文件 无法将属性挂载到a su
  • BI的需求调研的方法分类

    今天看到一篇文章 里面提到需求调研的几种思路 觉得分类有些道理 结合项目写一下 这种方法论在指导实践和体现专业两个方面都很实用 1 现有报表 这个是最常用的 使用这种方法注意区别报表目的 紧急度 和数据是否适合在BI实现 细节度 为什么以前
  • Oracle统计多张表的Count数的和

    需求描述 Table1 job1 job1 id name status other column 1 file1 process 2 file2 failed 3 file3 success Table2 job2 job2 id nam
  • 03:MYSQL----DQL,聚合函数

    目录 1 介绍 2 语法 3 聚合函数 4 DOL 语句练习 5 SQL执行顺序 1 介绍 数据查询语言 用来查询数据库中表的记录 2 语法 select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表