初始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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xml schema中的sequence的含义

https://www.w3.org/TR/xmlschema-1/#element-sequence xml schema中的sequence的含义&#xff1a;包含的元素必须按规定的顺序出现。通过属性maxOccurs和minOccurs可以定义最多、最少出现的次数。最多可以定义不限制次数&#xff0c;最少可以定义0次。默认是最少出现1次&…

nodejs+vue+python+PHP+微信小程序-安卓- 基于小程序的高校后勤管理系统-计算机毕业设计

考虑到实际生活中在高校后勤管理小程序管理方面的需要以及对该系统认真的分析,将系统权限按管理员和用户这两类涉及用户划分。任何系统都要遵循系统设计的基本流程&#xff0c;本系统也不例外&#xff0c;同样需要经过市场调研&#xff0c;需求分析&#xff0c;概要设计&#x…

阿里云国际站:云备份

文章目录 一、阿里云云备份的概念 二、云备份的优势 三、云备份的功能 四、云备份的应用场景 一、阿里云云备份的概念 云备份作为阿里云统一灾备平台&#xff0c;是一种简单易用、敏捷高效、安全可靠的公共云数据管理服务&#xff0c;可以为阿里云ECS整机、ECS数据库、文件…

git分支与tag标签的介绍与使用)

git分支与tag标签的介绍与使用 一.什么是分支与标签1.2.开发环境分层 二git分支介绍2.1分支操作2.2.IDEA中操作分支 三、Git标签的讲解3.1.GitBashHere操作标签3.2. IDEA中操作标签 一.什么是分支与标签 分支&#xff08;Branches&#xff09;&#xff1a; 功能开发&#xff…

未来的拥塞控制与 Linux EEVDF 调度器

有破要有立。 前面提到 经典端到端拥塞控制将越来越失效&#xff0c;未来该如何&#xff0c;谈谈我的看法。 端到端拥塞控制的难点根本上是要解决公平性问题&#xff0c;顺带着提高资源利用率。我们很容易理解&#xff0c;在共享资源场景下&#xff0c;不公平一定是低效的&am…

[云原生案例2.4 ] Kubernetes的部署安装 【通过Kubeadm部署Kubernetes高可用集群】

文章目录 1. 基本架构及前置准备1.1 基本架构1.2 前置准备 2. 系统初始化操作 ---- 所有节点2.1 关闭防火墙、selinux和swap分区2.1.1 关闭防火墙和selinux2.1.2 关闭交换分区 2.2 修改主机名&#xff0c;添加域名映射2.2.1 修改主机名2.2.2 修改本地hosts文件 2.3 内核升级2.4…

html菜单的基本制作

前面写过一点网页菜单的博文&#xff1b;下面再复习一些技术要点&#xff1b; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.…

RLHF讲解

RLHF包含了两个至关重要的步骤&#xff1a; 训练Reward Model用Reward Model和SFT Model构造Reward Function&#xff0c;基于PPO算法来训练LLM frozen RMfrozen SFT ModelActor π Φ R L \pi_{\Phi}^{R L} πΦRL​ initialized from SFT ModelCritic V η V_\eta Vη​ i…

tensorboard报错解决:No dashboards are active for the current data set

版本&#xff1a;tensorboard 2.10.0 问题&#xff1a;文件夹下明明有events文件&#xff0c;但用tensorboard命令却无法显示。 例如&#xff1a; 原因&#xff1a;有可能是文件路径太长了&#xff0c;导致系统无法读取文件。在win系统中规定&#xff0c;目录的绝对路径不得超…

案例续集留言板

前端没有保存数据的功能,后端把数据保存下来(内存,数据库等等......) 前端代码如下 : <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…

论文笔记--Baichuan 2: Open Large-scale Language Models

论文笔记--Baichuan 2: Open Large-scale Language Models 1. 文章简介2. 文章概括3 文章重点技术3.1 预训练3.1.1 预训练数据3.1.2 模型架构 3.2 对齐3.2.1 SFT3.2.2 Reward Model(RM)3.2.3 PPO 3.3 安全性 4. 文章亮点5. 原文传送门 1. 文章简介 标题&#xff1a;Baichuan 2…

PyQt制作【小红书图片抓取】神器

文章目录 &#x1f4e2;闲言碎语&#x1f43e;窗口设计&#x1f43e;功能设计&#x1f4da;资源领取 &#x1f4e2;闲言碎语 最近写一个系统&#xff0c;被一个Bug折腾了两天&#xff0c;至今还未解决。由于解决Bug弄得我有点心力憔悴&#xff0c;于是想着写其他小项目玩玩&am…

Halcon WPF 开发学习笔记(2):Halcon导出c#脚本和WPF初步开发

文章目录 前言HalconC#教学简单说明如何二开机器视觉如何二次开发Halcon导出Halcon脚本新建WPF项目&#xff0c;导入Halcon脚本和Halcon命名空间 前言 我目前搜了一下我了解的机器视觉软件&#xff0c;有如下特点 优点缺点兼容性教学视频(B站前三播放量)OpenCV开源&#xff0…

Windows桌面黑屏无法打开软件窗口不显示卡死等解决方案

问题还原 该软件窗口无论如何操作均 无法打开显示的窗口 ,但是 可使用 ALTTab 看到任务视图 目录 问题还原 解决方案 1. 使用 WinR 打开命令窗口 盲输 cmd 2. 盲输 taskkill /f /im explorer.exe 关闭资源管理器 3. 输入 start explorer.exe 启动任务管理器即可恢复正常…

TDD、BDD、ATDD以及SBE的概念和区别

在软件开发或是软件测试中会遇到以下这些词&#xff1a;TDD 、BDD 、ATDD以及SBE&#xff0c;这些词代表什么意思呢&#xff1f; 它们之间有什么关系吗&#xff1f; TDD 、BDD 、ATDD以及SBE的基本概念 TDD&#xff1a;&#xff08;Test Driven Development&#xff09;是一种…

基于飞蛾扑火算法优化概率神经网络PNN的分类预测 - 附代码

基于飞蛾扑火算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于飞蛾扑火算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于飞蛾扑火优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

链表OJ题(4)

目录 10.链表的回文结构 11.随机链表的复制 &#x1f642;找中间节点一定要考虑偶数个和奇数个的问题。 &#x1f642;指针指向的前中后。 &#x1f642;链表节点的位置个数/链表的节点中的数字。&#x1f197;&#x1f197; 今天最后两道链表OJ题目。 10.链表的回文结构…

【C++】非类型模板参数 | array容器 | 模板特化 | 模板为什么不能分离编译

目录 一、非类型模板参数 二、array容器 三、模板特化 为什么要对模板进行特化 函数模板特化 补充一个问题 类模板特化 全特化与偏特化 全特化 偏特化 四、模板为什么不能分离编译 为什么 怎么办 五、总结模板的优缺点 一、非类型模板参数 模板参数分两类&#x…

数据结构预算法--链表(单链表,双向链表)

1.链表 目录 1.链表 1.1链表的概念及结构 1.2 链表的分类 2.单链表的实现(不带哨兵位&#xff09; 2.1接口函数 2.2函数的实现 3.双向链表的实现&#xff08;带哨兵位&#xff09; 3.1接口函数 3.2函数的实现 1.1链表的概念及结构 概念&#xff1a;链表是一种物理存储结…

黑豹程序员-架构师学习路线图-百科:Knife4j API接口文档管理

文章目录 由来&#xff1a;接口文档第一代&#xff1a;Swagger第二代&#xff1a;Knife4j界面 由来&#xff1a;接口文档 古老编程是一个语言前后端通吃&#xff0c;ASP、JSP、PHP都是如此。 但随着项目规模变大&#xff0c;项目团队也开始壮大&#xff0c;岗位职责开始细分&a…