【Mysql】DQL操作单表、创建数据库、排序、聚合函数、分组、limit关键字
DQL操作单表
1.1 创建数据库
•创建一个新的数据库 db2
CREATE DATABASE db2 CHARACTER SET utf8;
•将db1数据库中的 emp表 复制到当前 db2数据库


** 1.2 排序**
通过 ORDER BY 子句,可以将查询出的结果进行排序 (排序只是显示效果,不会影响真实数据)
语法结构:
•SELECT 字段名 FROM 表名 [WHERE 字段 = 值] ORDER BY 字段名 [ASC / DESC]
ASC 表示升序排序(默认)
DESC 表示降序排序
1.2.1 单列排序
•单列排序:只按照某一个字段进行排序, 就是单列排序
需求: 使用 salary 字段,对emp 表数据进行排序 (升序/降序)
– 默认升序排序 ASC
SELECT * FROM emp ORDER BY salary;
– 降序排序
SELECT * FROM emp ORDER BY salary DESC;
1.2.2 组合排序
•组合排序: 同时对多个字段进行排序, 如果第一个字段相同 就按照第二个字段进行排序,以此类推
需求: 在薪水排序的基础上,再使用id进行排序, 如果薪水相同就以id 做降序排序
– 组合排序
SELECT * FROM emp ORDER BY salary DESC, eid DESC;
1.3 聚合函数
之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对某一列的值进行计算,然后返回一个单一的值(注意:聚合函数会忽略null空值)。
语法结构
•SELECT 聚合函数(字段名) FROM 表名;
我们来学习5个聚合函数
聚合函数 作用
count(字段) 统计指定列不为NULL的记录行数
sum(字段) 计算指定列的数值和
max(字段) 计算指定列的最大值
min(字段) 计算指定列的最小值
avg(字段) 计算指定列的平均值
需求1:
– 1 查询员工的总数
– 2 查看员工总薪水、最高薪水、最小薪水、薪水的平均值
– 3 查询薪水大于4000员工的个数
– 4 查询部门为’教学部’的所有员工的个数
– 5 查询部门为’市场部’所有员工的平均薪水
SQL实现
-- 1.查询员工的总数
-- 统计表中的记录条数 使用 count()
SELECT COUNT(eid) FROM emp; -- 使用某一个字段
SELECT COUNT(*) FROM emp; -- 使用 *
SELECT COUNT(1) FROM emp; -- 使用 1,与 * 效果一样-- 下面这条SQL 得到的总条数不准确,因为count函数忽略了空值
-- 所以使用时注意不要使用带有null的列进行统计
SELECT COUNT(dept_name) FROM emp;-- 2.查看员工总薪水、最高薪水、最小薪水、薪水的平均值
-- sum函数求和, max函数求最大, min函数求最小, avg函数求平均值
SELECT SUM(salary) AS '总薪水',MAX(salary) AS '最高薪水',MIN(salary) AS '最低薪水',AVG(salary) AS '平均薪水'
FROM emp;-- 3.查询薪水大于4000员工的个数
SELECT COUNT(*) FROM emp WHERE salary > 4000;-- 4.查询部门为'教学部'的所有员工的个数
SELECT COUNT(*) FROM emp WHERE dept_name = '教学部';-- 5.查询部门为'市场部'所有员工的平均薪水
SELECT AVG(salary) AS '市场部平均薪资'
FROM emp
WHERE dept_name = '市场部';
1.4 其他常用函数
- 日期时间函数
-- 返回当前日期和时间
SELECT NOW();-- 计算两个日期之间的天数差
SELECT DATEDIFF('2023-12-01','2023-12-10');
- 字符串操作
-- 拼接字符串
SELECT CONCAT('hello','world');-- 截取字符串(从1开始)
SELECT SUBSTRING('hello',1,2);
1.5分组
•分组查询:指的是使用 GROUP BY 语句,对查询的信息进行分组,相同数据作为一组。
语法格式
•SELECT 分组字段/聚合函数 FROM 表名 GROUP BY 分组字段 [HAVING 条件];
需求1: 通过性别字段 进行分组
-- 按照性别进行分组操作
SELECT * FROM emp GROUP BY sex; -- 注意 这样写没有意义
分析: GROUP BY 分组过程
注意:
分组时可以查询要分组的字段, 或者使用聚合函数进行统计操作.
- 查询其他字段没有意义
需求1: 通过性别字段 进行分组,求各组的平均薪资
SELECT sex, AVG(salary) FROM emp GROUP BY sex;
需求2:
– 1.查询所有部门信息
– 2.查询每个部门的平均薪资
– 3.查询每个部门的平均薪资, 部门名称不能为null
SQL实现
-- 1.查询有几个部门
SELECT dept_name AS '部门名称' FROM emp GROUP BY dept_name;-- 2.查询每个部门的平均薪资
SELECT
dept_name AS '部门名称',
AVG(salary) AS '平均薪资'
FROM emp GROUP BY dept_name;-- 3.查询每个部门的平均薪资, 部门名称不能为null
SELECT dept_name AS '部门名称',AVG(salary) AS '平均薪资'
FROM emp WHERE dept_name IS NOT NULL GROUP BY dept_name;
需求3:
– 查询平均薪资大于6000的部门.
分析:
- 需要在分组后,对数据进行过滤,使用 关键字 having
- 分组操作中的having子语句,是用于在分组后对数据进行过滤的,作用类似于where条件。
SQL实现:
-- 查询平均薪资大于6000的部门
-- 需要在分组后再次进行过滤,使用 having
SELECT dept_name , AVG(salary)
FROM emp WHERE dept_name IS NOT NULL GROUP BY dept_name HAVING AVG(salary) > 6000 ;
•where 与 having的区别
过滤方式 特点
where where 进行分组前的过滤
where 后面不能写 聚合函数
having having 是分组后的过滤
having 后面可以写 聚合函数
GROUP_CONCAT() 函数:
•作用: 用于将组内的行连接成一个单独的字符串,并使用指定的分隔符将它们分开。
•这在执行分组操作时非常有用。以下是 GROUP_CONCAT() 函数的基本语法:
SELECT
GROUP_CONCAT(column_name SEPARATOR ',') AS concat_col
FROM table_name
GROUP BY group_column;
1)column_name: 是要连接的列名。
2)SEPARATOR :是用于分隔连接的字符串,可以根据需要指定。
3)table_name 是表的名称。
4)group_column 是用于分组的列名,GROUP BY 子句根据这一列对数据进行分组。
使用演示: 使用 GROUP_CONCAT() 将每个部门的员工名字连接成一个字符串
-- 使用 GROUP_CONCAT() 将每个部门的员工名字连接成一个字符串
SELECTdept_name,GROUP_CONCAT(ename SEPARATOR ',') AS ename_list
FROM emp GROUP BY dept_name;
1.6 limit关键字
limit 关键字的作用
•limit是限制的意思,用于 限制返回的查询结果的行数 (可以通过limit指定查询多少行数据).
•limit 语法是 MySQL的方言,用来完成分页
语法结构
•SELECT 字段1,字段2… FROM 表名 LIMIT offset , length;
参数说明
1.limit offset , length; 关键字可以接受一个 或者两个 为0 或者正整数的参数
2.offset 起始行数, 从0开始记数, 如果省略 则默认为 0.
3.length返回的行数
需求1:
– 查询emp表中的前 5条数据
– 查询emp表中 从第4条开始,查询6条
SQL实现
-- 查询emp表中的前 5条数据
-- 参数1 起始值,默认是0 , 参数2 要查询的条数
SELECT * FROM emp LIMIT 5;
SELECT * FROM emp LIMIT 0 , 5;-- 查询emp表中 从第4条开始,查询6条
-- 起始值默认是从0开始的.
SELECT * FROM emp LIMIT 3 , 6;
相关文章:
【Mysql】DQL操作单表、创建数据库、排序、聚合函数、分组、limit关键字
DQL操作单表 1.1 创建数据库 •创建一个新的数据库 db2 CREATE DATABASE db2 CHARACTER SET utf8;•将db1数据库中的 emp表 复制到当前 db2数据库 ** 1.2 排序** 通过 ORDER BY 子句,可以将查询出的结果进行排序 (排序只是显示效果,不会影响真实数据) 语法结构:…...
Excel 常用技巧(四)
Microsoft Excel 是微软为 Windows、macOS、Android 和 iOS 开发的电子表格软件,可以用来制作电子表格、完成许多复杂的数据运算,进行数据的分析和预测,并且具有强大的制作图表的功能。由于 Excel 具有十分友好的人机界面和强大的计算功能&am…...
【Linux 基础】文件与目录管理
1. 文件和目录的基本概念 文件:是数据的集合,可以是文本、图像、视频等。 目录(也称为文件夹):是文件和子目录的集合,用于组织文件。 2. 目录和路径 绝对路径:从根目录(/&#x…...
C++系列-String(一)
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” string是用于字符串,可以增删改查 首先,我们来看一下string的底层 接下来,我们来看一下string的常用接口有哪些: #define _CRT_S…...
服务器硬件的基础知识
引言 服务器是现代数据中心和企业IT基础设施的核心组成部分。了解服务器硬件的基本知识不仅有助于选择和维护服务器,还能提高系统性能和可靠性。本文将详细介绍服务器硬件的各个方面,包括处理器、内存、存储、网络、散热和电源等,帮助读者全…...
java基于ssm+jsp 汽车在线销售系统
1 前台功能模块 网站首页 网页首页汽车在线销售系统模块如下:首页、汽车信息、新闻资讯、留言反馈、我的收藏管理等功能图1 图1网页首页 网页前台车辆信息效果图如图2所示 图2 车辆信息界面图 2 管理员功能模块 管理员输入个人的账号、密码登录系统,…...
【干货】Android中高级开发进阶必备资料(附:PDF+视频+源码笔记)
4、数据传输与序列化 5、Java虚拟机原理 6、高效IO 设计思想解读开源框架 随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有…...
AI通用写作模版,可以在此基础上进行修改
指令 角色 作者 :你是一位自媒体爆文写作专家,负责撰写文章,具备对特定主题的深入理解和一定的写作技巧。读者 :25-55岁通用人群,对资讯新闻类感兴趣,需要易于理解且富有启发性的内容。 技能 研究能力&…...
openEuler2203SP3自定义ios
需求: 1、legacy启动 2、/boot分区1G,剩余给/,lvm分区 3、创建root密码和一个普通用户user,密码Hello2024 4、服务器安装(选上development、legacy-unix、security-tools) 5、关闭firewalld、selinux …...
一年又一年志愿
--第一篇 20220624十年苦读,青春飞扬,其道大光,来日方长。又是一年高考时,高考改变命运,但是后面还有更关键几步,跟大家一起聊聊。之前写我考状元的经历,堂弟考省前十的经历,有不少…...
NL2SQL进阶系列(1):DB-GPT-Hub、SQLcoder、Text2SQL开源应用实践详解
1. MindSQL(库) MindSQL 是一个 Python RAG(检索增强生成)库,旨在仅使用几行代码来简化用户与其数据库之间的交互。 MindSQL 与 PostgreSQL、MySQL、SQLite 等知名数据库无缝集成,还通过扩展核心类,将其功能扩展到 Sn…...
OpenGL3.3_C++_Windows(15)
理解glad: OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的,由于OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询,因此开发者需要在运行时获取函数…...
NeRF从入门到放弃5: Neurad代码实现细节
Talk is cheap, show me the code。 CNN Decoder 如patch设置为32x32,patch_scale设置为3,则先在原图上采样96x96大小的像素块,然后每隔三个取一个像素,降采样成32x32的块。 用这32x32个像素render feature,再经过CNN反卷积预测…...
【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【11】ElasticSearch
持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【11】ElasticSearch 简介基本概念ElasticSearch概念-倒排索引安装基本命令Mapping-映射ElasticSearch7-去掉type概念Es-数组(数组装着Object)的扁平化处理ik 分词…...
Pip换源详解
Pip换源是指将pip(Python的包管理工具)的默认源更改为其他源。以下是关于Pip换源的详细说明: 一、Pip换源的原因 访问被阻止的源:在某些地区或网络环境下,直接访问官方的Python Package Index (PyPI) 可能受到限制或…...
【Docker】——安装镜像和创建容器,详解镜像和Dockerfile
前言 在此记录一下docker的镜像和容器的相关注意事项 前提条件:已安装Docker、显卡驱动等基础配置 1. 安装镜像 网上有太多的教程,但是都没说如何下载官方的镜像,在这里记录一下,使用docker安装官方的镜像 Docker Hub的官方链…...
利用LinkedHashMap实现一个LRU缓存
一、什么是 LRU LRU是 Least Recently Used 的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。 简单的说就是,对于一组数据,例如:int[] a {1,2,3,4,5,6},…...
git-pull详解
NAME git-pull - Fetch from and integrate with another repository or a local branch SYNOPSIS git pull [<options>] [<repository> [<refspec>…]] DESCRIPTION Incorporates changes from a remote repository into the current branch. If the…...
【SQL】count(1)、count(*) 与 count(列名) 的区别
在 SQL 中,COUNT 函数用于计算查询结果集中的行数。COUNT(1)、COUNT(*) 和 COUNT(列名) 都可以用来统计行数,但它们在实现细节和使用场景上有一些区别。以下是详细的解释: 1. COUNT(1) 定义: COUNT(1) 计算查询结果集中的行数。实现: 在执行…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
