初始MySQL(三)(合计函数,分组函数,字符串相关函数,数字相关函数,时间日期函数,加密函数,流程控制函数)
目录
合计/统计函数
count 返回行的总数
sum
合计函数 - avg
group by
字符串相关函数
数学相关函数
时间日期相关函数
加密函数
流程控制函数
合计/统计函数
count 返回行的总数
Select count(*) | count (列名) from tablename [WHERE where_definition]
#演示MySQL的统计函数的使用
#统计一个班级共有多少学生
SELECT COUNT(*) FROM student;
#统计数学成绩大于90的学生有多少个
SELECT COUNT(*) FROM studentWHERE math >90;
#统计总分大于250的人数有多少?
SELECT COUNT(*) FROM studentWHERE (math+chinese+english) > 250;
#count(*)和count(列)的区别
#解释:count(*)返回满足条件的记录的行数
#count(列): 统计满足条件的某列有多少个,但是会排除为NULL的情况
#count(*)和count(列) 唯一区别就是一个统计NULL ,一个会排除NULL
CREATE TABLE t15(`name` VARCHAR(20));
INSERT INTO t15 VALUES('tom');
INSERT INTO t15 VALUES('jack');
INSERT INTO t15 VALUES('frank');
INSERT INTO t15 VALUES(NULL);
SELECT * FROM t15;
SELECT COUNT(*) FROM t15; -- 4
SELECT COUNT(`name`) FROM t15; -- 3
sum
sum函数返回满足where条件的行的和,一般使用在数值列中
select sum(列名){, sum(列名) ... } from tablename [WHERE where_definition]
#sum函数的使用
#统计班级数学总成绩
SELECT SUM(math) FROM student;
#统计一个班各科的总成绩
SELECT SUM(math) AS math_total_score,SUM(english),SUM(chinese) FROM student;
#统计一个班的所有的总和
SELECT SUM(math+chinese+english) FROM student;
#统计一个班级语文成绩平均分
SELECT SUM(chinese)/COUNT(*) FROM student;
合计函数 - avg
#演示avg的使用
#求一个班数学的平均分
SELECT AVG(math) FROM student;
#求一个班级总分的平均分
SELECT AVG(math + english+chinese) FROM student
合计函数 - MAX/MIN
MAX/MIN函数返回满足where条件的一列中最大值/最小值
SELECT MAX(列名) from tablename [WHERE where_definition]
#求一个班级的最高分和最低分
SELECT MAX(math+english+chinese),MIN(math+english+chinese) FROM student;
group by
使用grouby by字句对列进行分组(先创建测试表)
SELECT 列1,列2,列3 ... FROM table group by 列
使用hanving 字句对分组后的结果进行过滤
SELECT 列1,列2,列3 ... FROM table group by 列 having ...
group by 用于对查询的结果分组统计 having 子句用于统计分组显示结果
CREATE TABLE emp(
empno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,-- 编号
ename VARCHAR(20) NOT NULL DEFAULT "",-- 名字
job VARCHAR(9) NOT NULL DEFAULT "", -- 工作
mgr MEDIUMINT UNSIGNED,-- 上级编号
hiredate DATE NOT NULL,-- 入职日期
sal DECIMAL(7,2) NOT NULL,-- 工资
comm DECIMAL(7,2),-- 奖金
deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 -- 部门编号
);
INSERT INTO emp VALUES(7369,'SMITH','CLERK',7902,'1990-12-17',800.00,NULL,20),(7499,'ALLEN','SALESMAN',7698,'1991-2-20',1600.00,300.00,30),(7521,'WARD','SALESMAN',7968,'1991-2-22',1250.00,500.00,30),(7566,'JONES','MANAGER',7839,'1991-4-2',2975.00,NULL,20),(7654,'MARTIN','SALESMAN',7968,'1991-9-28',1250.00,1400.00,30),(7698,'BLAKE','MANAGER',7839,'1991-5-1',2850.00,NULL,30),(7782,'CLARK','MANAGER',7839,'1991-6-9',2450.00,NULL,10),(7788,'SCOTT','ANALYST',7566,'1991-4-19',3000.00,NULL,20),(7839,'KING','PRESIDENT',NULL,'1991-11-17',5000.00,NULL,10),(7844,'TURNER','SALESMAN',7698,'1991-9-8',1500.00,NULL,30),(7900,'JAMES','CLERK',7698,'1991-12-3',950.00,NULL,30),(7902,'FORD','ANALYST',7566,'1991-12-3',3000.00,NULL,20),(7934,'MILLER','CLERK',7782,'1991-1-23',1300.00,NULL,10);
SELECT * FROM emp;
# 按照部门来查询最高工资和平均工资
SELECT AVG(sal) , MAX(sal) ,deptno FROM emp GROUP BY deptno#显示每个部门的每种岗位的平均工资和最低工资
#1.每个部门的平均工资和最低工资
SELECT AVG(sal) , MIN(sal) ,deptno FROM emp GROUP BY deptno
#2.显示每个部门的每种岗位的平均工资和最低工资
SELECT AVG(sal) , MIN(sal) ,deptno,job FROM emp GROUP BY deptno,job#显示平均工资低于2000的部门号和它的平均工资
#1.显示各个部门的平均工资和部门号
SELECT AVG(sal) ,deptno FROM emp GROUP BY deptno
#2.低于2000
SELECT AVG(sal) ,deptno FROM emp GROUP BY deptno HAVING AVG(sal)<2000
#3.别名进行过滤
SELECT AVG(sal) AS avg_sal ,deptno FROM emp GROUP BY deptno HAVING avg_sal<2000;
字符串相关函数
#演示字符串相关函数的使用
#CHARSET(str) 返回字符串字符集
SELECT CHARSET(ename) FROM emp;
#CONCAT(string2 [,...]) 连接字串 ,将多个列拼接在一列
SELECT CONCAT(ename , "工作是" ,job) FROM emp;
#INSERT(string,substring) 返回substring 在 string 中出现的位置,没有返回0
-- dual 亚元表 ,系统表 ,作为测试表使用
SELECT INSTR('lihaoqianping','ping') FROM DUAL;
#UCASE (string2) 转成大写的
SELECT UCASE(ename) FROM emp;
#LCASE (string2) 转成小写的
SELECT LCASE(ename) FROM emp;
-- LEFT(string2,length) 从string2 中左边起取length个字符
SELECT LEFT(ename,2) FROM emp;
-- RIGHT(string2,length) 从string2 中右边起取length个字
SELECT RIGHT(ename,2) FROM emp;
-- LENGTH (string) string 长度[按照字节]
SELECT LENGTH('李浩谦') FROM DUAL;SELECT * FROM emp;
SELECT ename,REPLACE(job ,'MANAGER' , '经理') FROM emp;-- 逐个字段比较两个字串大小 前面的大于后面的返回1 , 前面的小于后面的返回-1
SELECT STRCMP('hsp','jsp') FROM emp;-- SUBSTRING(str ,position [,length])
-- 从str的position开始[从1开始计算],取length个字符
-- 从ename 列的第一个位置开始取出2个字符
SELECT SUBSTRING(ename,1,2) FROM emp;-- LTRIM(string2) RTRIM(string2) TRIM(string)
-- 去除前端空格或后端空格
SELECT LTRIM (' 李浩谦真厉害') FROM DUAL;
SELECT RTRIM('李浩谦真厉害 ') FROM DUAL;
SELECT TRIM(' 李浩谦真厉害 ') FROM DUAL;#练习: 以首字母小写的方式显示所有员工emp表的姓名
SELECT CONCAT(LCASE(LEFT(ename,1)) , RIGHT(ename,LENGTH(ename)-1)) FROM emp
数学相关函数
#取绝对值
SELECT ABS(-10) FROM DUAL;
# BIN(decimal_number) 十进制转二进制
SELECT BIN(10) FROM DUAL;
# ceiling(number2) 向上取整 , 得到比num2大的最小整数
SELECT CEILING(-1,1) FROM DUAL;
-- CONV(number2,from_base , to_base) 进制转换
-- 下面的含义是8 是十进制的8 , 转成2进制输出
SELECT CONV(8,10,2) FROM DUAL;
-- FLOOR(number2) 向下取整,得到比num2 小的最大整数
SELECT FLOOR(-1.1) FROM DUAL
-- FORMAT(number,decimal_places) 保留小数位数(四舍五入)
SELECT FORMAT(78.2345678,2) FROM DUAL;-- HEX(DecimalNumber) 转16进制-- LEAST(number , number2 [,..]) 求最小值
SELECT LEAST(0,-2,1,1000);
-- MOD(numerator,denominator) 求余
SELECT MOD(10,3) FROM DUAL;
-- RAND([seed]) RAND([seed]) 返回随机数,其范围为0<=v<=1.0
#1.如果使用rand(),每次返回不同的随机数,在0<=v<=1.0
#2.如果rand()里面添加上了一个seed这是随机数种子,加上之后,返回的随机数的不变了的
SELECT RAND() FROM DUAL;
SELECT RAND(3) FROM DUAL;
时间日期相关函数
-- 日期时间相关函数
-- current_Date 当前日期
SELECT CURRENT_DATE() FROM DUAL;
-- CURRENT_TIME 当前时间
SELECT CURRENT_TIME() FROM DUAL;
-- 当前时间戳 CURRENT_TIMESTAMP
SELECT CURRENT_TIMESTAMP() FROM DUAL;-- 创建测试表
CREATE TABLE mes(id INT, content VARCHAR(30),send_time DATETIME);
SELECT * FROM mes;
INSERT INTO mes VALUES(1,'北京新闻',CURRENT_TIMESTAMP());
#NOW() 返回当前的日期+时间
INSERT INTO mes VALUES(2,'上海新闻',NOW());
INSERT INTO mes VALUES(3,'广州新闻',NOW());
SELECT * FROM mes;-- 案例
-- 显示所有留言信息 , 发布日期只显示日期,不用显示时间
SELECT id,content, DATE(send_time) FROM mes;
-- 查询在10分钟内发布的新闻
SELECT * FROM mesWHERE DATE_ADD(send_time,INTERVAL 10 MINUTE) >=NOW()
#minute可以是year,second啥的
# 请在mysql 的sql 语句中求出2011-11-11 和1990-1-1 相差多少天
SELECT DATEDIFF('2023-11-12','2004-04-03') FROM DUAL;
#YEAR,MONTH,DAY
SELECT YEAR(NOW()) FROM DUAL;
SELECT MONTH(NOW()) FROM DUAL;
SELECT DAY(NOW()) FROM DUAL;
加密函数
-- 演示加密函数和系统函数-- user() 查询用户
-- 可以查看登录到mysql的有哪些用户,以及登录的IP
SELECT USER() FROM DUAL; -- 用户的@ip地址
-- DATEBASE() 查询当前使用数据库名称
SELECT DATABASE()
-- MD5(str) 为字符串算出一个MD5 32位的字符串,常用(用户密码) 加密
-- root 密码是hsp ->加密md5 ->在数据库里存放的是加密后的密码
SELECT MD5('hsp') FROM DUAL-- password(str) -- 加密函数,MySQL 数据库的用户密码就是PASSWORD密码加密的
SELECT PASSWORD('hsp') FROM DUAL;-- select * from mysql.user \G 从原文密码str 计算并返回密码字符串
-- 通常用于对mysql数据库的密码加密
-- mysql.user 表示数据库.表
流程控制函数
-- 演示流程控制语句
#IF(expr1,expr2,expr3) 如果expr1为true,则返回expr2,为false返回expr3
SELECT IF(TRUE,'北京','上海') FROM DUAL;
#IFNULL(expr1,expr2) 如果expr1 不为空NULL,则返回expr1,否则返回expr2
SELECT IFNULL(NULL,'李浩谦牛逼') FROM DUAL;
#多重分支
SELECT CASE WHEN TRUE THEN 'jack'WHEN FALSE THEN 'tom'ELSE 'mary' END
相关文章:

初始MySQL(三)(合计函数,分组函数,字符串相关函数,数字相关函数,时间日期函数,加密函数,流程控制函数)
目录 合计/统计函数 count 返回行的总数 sum 合计函数 - avg group by 字符串相关函数 数学相关函数 时间日期相关函数 加密函数 流程控制函数 合计/统计函数 count 返回行的总数 Select count(*) | count (列名) from tablename [WHERE where_definition] #演…...

AI系统ChatGPT源码+详细搭建部署教程+AI绘画系统+支持GPT4.0+Midjourney绘画+已支持OpenAI GPT全模型+国内AI全模型
一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…...
程序员语录:一个真正有本事的人,往往有哪些特征呢?
目录 不要畏手畏脚,大胆去就是了 敢于拥抱成功,别怕抛头露面,别怕出丑丢人 永远不抱怨 凡事从利益的角度,摒弃情感(感情除外) 永远积极主动 人和人就是利益关系或者情绪价值 不在烂事上纠缠…...

做一个Springboot文章分类模块
目录 文章分类 1、新增文章分类 前言 代码编写 测试 2、 文章分类列表 前言 代码编写 测试 3、获取文章列表详情 前言 代码实现 测试 4、更新文章分类 前言 代码实现 测试 5、删除文章分类 前言 代码实现 测试 分页查询 文章列表条件分页 前言 代码编…...
MTK手机平台充电原理
EPT GPIO初始化文件 bsp_gpio_ept_config.c 1 知识点总结 1.1 Official 参考充电电路 Figure 1-1 参考电路 VCHG:USB正极 VCDT:VCHG Charger Detect充电电压检测脚 ISENSE:充电电流检测电阻的正极 BATSNS:充电电流检测电阻的负极 …...

产品化的GPT,能否为“百模大战”照亮未来?
这两天,AI圈都处在一种莫名的震撼感当中。 北京时间 11月7日,OpenAI 举办了首次DevDay开发者日活动。活动现场发布了非常多内容,其中有一些按部就班的,比如技术上更新了最新版本的GPT-4 Turbo。也有一些让从业者目瞪口呆ÿ…...

【中间件篇-Redis缓存数据库03】Redis高级特性和应用(发布 订阅、Stream)
Redis高级特性和应用(发布 订阅、Stream) 发布和订阅 Redis提供了基于“发布/订阅”模式的消息机制,此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道( channel)发布消息,订阅该频道的每个客户端都可以收到该消息。 …...

Verilog基础:三段式状态机与输出寄存
相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html 对于Verilog HDL而言,有限状态机(FSM)是一种重要而强大的模块,常见的有限状态机书写方式可以分为一段式,二段式和三段式,笔者强烈建议使用三…...

抖音商城双11好物节,从供需两侧重新定义“好货”
【潮汐商业评论/原创】 你用的第一款护肤品是什么? 大部分人回忆起童年的时候,想起来的都是那款有着牛奶香味的、塑料包装的小袋白色乳霜——郁美净儿童霜。 但是不知何时,它逐渐淡出了很多人、特别是年轻人的视野,直到今年在互…...

Mysql Explain工具介绍
使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析查询语句或是结构的性能瓶颈。 准备表 -- 课程表 CREATE TABLE class (id int(11) NOT NULL,name varchar(45) DEFAULT NULL,update_time datetime DEFAULT NULL,PRIMARY KEY (id)) ENGINEInnoDB DEFAULT CHARSET…...

Linux系统中的静态库和共享库,以及一些计算机的基础知识
目录 1.库文件 2.静态库 3.共享库 4.静态库与共享库的区别 5.计算机基础知识 6.进程的基础知识 7.主函数的三个参数 1.库文件 1).库文件库是一组预先编译好的方法的集合;Linux系统存储库的位置一般在/lib 和 /usr/lib (64位系统/usr/lib64)库的头文件放在/usr/include 2…...
商品管理图片更换实现
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.java1234.mapper.ProductMa…...

SDL2 加载图片
1.简介 在SDL中,本身只支持加载BMP格式的图片SDL_LoadBMP,如果想要加载别的格式图片,需要编译SDL_image库。 SDL_image库中IMG_Load和都是IMG_LoadTexture用于加载图片的函数,但是它们的使用方式和返回值有所不同。 IMG_Load和…...

监控和数据采集软件架构和详细设计
介绍 监控和数据采集软件通过提供实时监控、数据收集和分析功能,在各个行业中发挥着至关重要的作用。这些软件应用程序可帮助企业收集有价值的见解、优化流程并做出明智的决策。在本文中,我们将探讨监测和数据采集软件的软件架构、编程技术和详细设计规范…...

链动2+1模式系统开发之区域代理深度解析
区域代理的保护机制:在链动商城系统里设定的代理有唯一性,每个省只有一个省代,每个市只有一个市代,每个区县只有一个区县代。这样也是保护每个代理的收益权益。 区域代理包含的权益类别:购物奖励折扣;区域实…...

Amazon Bedrock | 大语言模型CLAUDE 2体验
这场生成式AI与大语言模型的饥饿游戏,亚马逊云科技也参与了进来。2023年,亚马逊云科技正式发布了 Amazon Bedrock,是客户使用基础模型构建和扩展生成式AI应用程序的最简单方法,为所有开发者降低使用门槛。在 Bedrock 上࿰…...

通讯协议学习之路(实践部分):IIC开发实践
通讯协议之路主要分为两部分,第一部分从理论上面讲解各类协议的通讯原理以及通讯格式,第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN;视频会发布在bilibili(UID:399951374) 本文…...

『亚马逊云科技产品测评』活动征文|搭建带有“弱”图像处理功能的流媒体服务器
授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道。 本文基于以下软硬件工具: aws ec2 frp-0.52.3 mediamtx-1.3…...
正交矩阵的定义
对于n阶矩阵A,如果,其中为单位矩阵,为A的转置矩阵,那么就称A为正交矩阵。 对于正交矩阵, 对于正交矩阵,其列向量都是单位向量,行向量都是单位向量...
K8S集群etcd 某个节点数据不一致如何修复 —— 筑梦之路
背景说明 二进制方式安装的k8s集群,etcd集群有3个节点,某天有一台机器hang住了,无法远程ssh登陆,于是被管理员直接重启了,重启后发现k8s集群删除一个deployment应用,多次刷新一会有,一会没有&am…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...