当前位置: 首页 > news >正文

初始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绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…...

程序员语录:一个真正有本事的人,往往有哪些特征呢?

目录 不要畏手畏脚&#xff0c;大胆去就是了 敢于拥抱成功&#xff0c;别怕抛头露面&#xff0c;别怕出丑丢人 永远不抱怨 凡事从利益的角度&#xff0c;摒弃情感&#xff08;感情除外&#xff09; 永远积极主动 人和人就是利益关系或者情绪价值 不在烂事上纠缠&#xf…...

做一个Springboot文章分类模块

目录 文章分类 1、新增文章分类 前言 代码编写 测试 2、 文章分类列表 前言 代码编写 测试 3、获取文章列表详情 前言 代码实现 测试 4、更新文章分类 前言 代码实现 测试 5、删除文章分类 前言 代码实现 测试 分页查询 文章列表条件分页 前言 代码编…...

MTK手机平台充电原理

EPT GPIO初始化文件 bsp_gpio_ept_config.c 1 知识点总结 1.1 Official 参考充电电路 Figure 1-1 参考电路 VCHG&#xff1a;USB正极 VCDT&#xff1a;VCHG Charger Detect充电电压检测脚 ISENSE&#xff1a;充电电流检测电阻的正极 BATSNS&#xff1a;充电电流检测电阻的负极 …...

产品化的GPT,能否为“百模大战”照亮未来?

这两天&#xff0c;AI圈都处在一种莫名的震撼感当中。 北京时间 11月7日&#xff0c;OpenAI 举办了首次DevDay开发者日活动。活动现场发布了非常多内容&#xff0c;其中有一些按部就班的&#xff0c;比如技术上更新了最新版本的GPT-4 Turbo。也有一些让从业者目瞪口呆&#xff…...

【中间件篇-Redis缓存数据库03】Redis高级特性和应用(发布 订阅、Stream)

Redis高级特性和应用(发布 订阅、Stream) 发布和订阅 Redis提供了基于“发布/订阅”模式的消息机制&#xff0c;此种模式下&#xff0c;消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道( channel)发布消息&#xff0c;订阅该频道的每个客户端都可以收到该消息。 …...

Verilog基础:三段式状态机与输出寄存

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

抖音商城双11好物节,从供需两侧重新定义“好货”

【潮汐商业评论/原创】 你用的第一款护肤品是什么&#xff1f; 大部分人回忆起童年的时候&#xff0c;想起来的都是那款有着牛奶香味的、塑料包装的小袋白色乳霜——郁美净儿童霜。 但是不知何时&#xff0c;它逐渐淡出了很多人、特别是年轻人的视野&#xff0c;直到今年在互…...

Mysql Explain工具介绍

使用EXPLAIN关键字可以模拟优化器执行SQL语句&#xff0c;分析查询语句或是结构的性能瓶颈。 准备表 -- 课程表 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中&#xff0c;本身只支持加载BMP格式的图片SDL_LoadBMP&#xff0c;如果想要加载别的格式图片&#xff0c;需要编译SDL_image库。 SDL_image库中IMG_Load和都是IMG_LoadTexture用于加载图片的函数&#xff0c;但是它们的使用方式和返回值有所不同。 IMG_Load和…...

监控和数据采集软件架构和详细设计

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

链动2+1模式系统开发之区域代理深度解析

区域代理的保护机制&#xff1a;在链动商城系统里设定的代理有唯一性&#xff0c;每个省只有一个省代&#xff0c;每个市只有一个市代&#xff0c;每个区县只有一个区县代。这样也是保护每个代理的收益权益。 区域代理包含的权益类别&#xff1a;购物奖励折扣&#xff1b;区域实…...

Amazon Bedrock | 大语言模型CLAUDE 2体验

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

通讯协议学习之路(实践部分):IIC开发实践

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

『亚马逊云科技产品测评』活动征文|搭建带有“弱”图像处理功能的流媒体服务器

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道。 本文基于以下软硬件工具&#xff1a; aws ec2 frp-0.52.3 mediamtx-1.3…...

正交矩阵的定义

对于n阶矩阵A&#xff0c;如果&#xff0c;其中为单位矩阵&#xff0c;为A的转置矩阵&#xff0c;那么就称A为正交矩阵。 对于正交矩阵&#xff0c; 对于正交矩阵&#xff0c;其列向量都是单位向量&#xff0c;行向量都是单位向量...

K8S集群etcd 某个节点数据不一致如何修复 —— 筑梦之路

背景说明 二进制方式安装的k8s集群&#xff0c;etcd集群有3个节点&#xff0c;某天有一台机器hang住了&#xff0c;无法远程ssh登陆&#xff0c;于是被管理员直接重启了&#xff0c;重启后发现k8s集群删除一个deployment应用&#xff0c;多次刷新一会有&#xff0c;一会没有&am…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...