初始MySQL(三)(合计函数,分组函数,字符串相关函数,数字相关函数,时间日期函数,加密函数,流程控制函数)

目录

合计/统计函数 

count 返回行的总数

sum 

合计函数 - avg 

group by

字符串相关函数

数学相关函数

时间日期相关函数

加密函数

流程控制函数


合计/统计函数 

count 返回行的总数

Select count(*) | count (列名) from tablename [WHERE where_definition]

#演示MySQL的统计函数的使用
#统计一个班级共有多少学生
SELECT COUNT(*) FROM student;
#统计数学成绩大于90的学生有多少个
SELECT COUNT(*) FROM student
         WHERE math >90;
#统计总分大于250的人数有多少?
SELECT COUNT(*) FROM student
         WHERE (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 mes
        WHERE 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
   

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

答题猜歌闯关流量主小程序开发

视频互动答题是一款微信小程序游戏&#xff0c;以视频互动的形式进行答题&#xff0c;内容涵盖广泛&#xff0c;包括天文地理、生活百科、历史文化、综艺娱乐、数理知识等。 用户可以通过答题获得红包兑换余额&#xff0c;并有机会赢得豪华奖品。 设计风格&#xff1a;设计风格…

数据结构与算法之美学习笔记:18 | 散列表(上):Word文档中的单词拼写检查功能是如何实现的?

目录 前言散列思想散列函数散列冲突解答开篇 前言 本节课程思维导图&#xff1a; Word 的单词拼写检查功能&#xff0c;虽然很小但却非常实用。你有没有想过&#xff0c;这个功能是如何实现的呢&#xff1f;其实啊&#xff0c;一点儿都不难。只要你学完今天的内容&#xff0c;…

EXCEL——计算数据分散程度的相关函数

一、PERCENTIL函数 1.函数介绍 通常用来返回数据集给定百分点上的值。 2.函数解读 函数公式&#xff1a; PERCENTILE(数据, 百分点) 参数释义&#xff1a; 数据&#xff08;必填&#xff09;&#xff1a;待处理的数组或数据区域。 百分点&#xff08;必填&#xff09;&…

mapboxGL中的底图切换

概述 底图切换&#xff0c;这么简单的功能还要写一篇文章&#xff1f;值得的&#xff0c;为什么这么说呢&#xff1f;因为mapboxGL的矢量底图有上百个&#xff0c;不同的底图用的样式、图层的名称、图层的内容、字体库、图标库都不一样&#xff0c;尤其是当地图上已经叠加了很…

2022年06月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 Python中 print(“八进制{: o}”.format(12)) 正确的输出结果是?( ) A: 八进制:O B: 八进制:O14 C: 八进制14O D: 八进制14 答案:D 字符串的format()格式。 第2题 下列的程…

计算机组成原理之概述

概述 计组主要讲的是计算机的硬件实现方式。 机器字长 比如8080处理器&#xff0c;如果想处理16位数的整数运算&#xff0c;就需要执行两次。 可见&#xff0c;机器字长会影响到数据的处理速度。 计算机硬件的基本组成 早期的冯诺依曼机 冯诺依曼提出了“存储程序”的概念&…

汽车FMCW毫米波雷达信号处理流程(推荐---基础详细---清楚的讲解了雷达的过程---强烈推荐)

毫米波雷达在进行多目标检测时&#xff0c;TX发射一个Chirp&#xff0c;在不同距离下RX会接收到多个反射Chirp信号&#xff08;仅以单个chirp为例&#xff09;。 雷达通过接收不同物体的发射信号&#xff0c;并转为IF信号&#xff0c;利用傅里叶变换将产生一个具有不同的分离峰…

SQL-----STUDENT

【学生信息表】 【宿舍信息表】 【宿舍分配表】 为了相互关联&#xff0c;我们需要在表中添加外键。在宿舍分配表中添加用于关联学生信息表的外键 student_id&#xff0c;以及用于关联宿舍信息表的外键 dormitory_id&#xff1b; sql代码 -- 创建学生信息表 CREATE TABLE st…

python画折线图 一张图上三条折线 设置折线marker chatgpt画折线图的提示词

chatgpt提示词 用python写一段代码&#xff0c;该代码的功能是&#xff1a;画一个折线图&#xff0c;该折线图x轴的标题是面积&#xff0c;y轴的标题是房价。该图上有三条折线&#xff0c;分别代表深圳&#xff0c;广州&#xff0c;郑州。这三条折线的颜色分别为红&#xff0c…

接口自动化测试流程、工具及其实践!

01、接口自动化测试简介 接口自动化测试是指通过编写脚本或使用自动化工具&#xff0c;对软件系统的接口进行测试的过程。接口测试是软件测试中的一种重要测试类型&#xff0c;主要用于验证系统组件之间的通信和数据交换是否正常。通过接口自动化测试可以快速发现接口中的问题…

飞天使-template模版相关知识

遇到报错django.template.exceptions.TemplateSyntaxError: ‘staticfiles’ is not a registered tag library. Must ROOT_URLCONF TEMPLATES [{BACKEND: django.template.backends.django.DjangoTemplates,DIRS: [os.path.join(BASE_DIR, templates)],APP_DIRS: True,OPTI…

如何设置静态代理IP切换电脑上网地址使用?

在当今的网络时代&#xff0c;代理IP已成为一种常见的网络访问方式。通过使用代理IP&#xff0c;我们可以隐藏自己的真实IP地址&#xff0c;从而保护自己的隐私和安全。但是&#xff0c;有时候我们需要切换代理IP来满足不同的上网需求。本文将介绍如何设置静态代理IP切换电脑上…

【LIUNX】配置DNS服务器

【LIUNX】配置DNS A.安装bind bind-utilsB.修改named.conf配置文件C.生成并修改uos.com.db 文件1.复制模版文件named.localhost 到文件uos.com.db2.修改uos.com.db文件 D.重启named服务E.配置DNS服务器F.测试DNS服务器 A.安装bind bind-utils yum -y install bind bind-utilso…

【02】Istio流量治理

2.1 Istio流量治理 Istio的流量路由规则使运维人员可以轻松控制服务之间的流量和API调用 Istio简化了诸如断路器&#xff0c;超时和重试之类的服务级别属性的配置&#xff0c;并使其易于设置重要任务&#xff08;如A/B测试&#xff0c;canary部署和基于百分比的流量拆分的分段部…

ChatGPT-3.5 插件推荐:语音输入,视频总结,联网检索

前言 GPT4 里是有内置的插件市场的&#xff0c;不过博主一直觉得自己对这个工具的使用还不够到位&#xff0c;现在购买升级版性价比不划算所以暂时还没有开。不过今天在学习使用的时候&#xff0c;发现 GPT3.5 也是可以通过网页插件方式进行升级扩展的&#xff0c;而且功能还比…

【APUE】高级I/O

目录 一、五大 IO 模型 1.1 完整的 IO 过程 1.2 阻塞 IO 1.3 非阻塞 IO 1.4 信号驱动式 IO 1.5 多路转接 1.6 异步 IO 二、有限状态机编程 2.1 基本思想 2.2 数据中继模型 2.3 数据中继实现 2.4 中继引擎实现 三、IO多路转接 3.1 select 3.2 poll 3.3 epoll …

python3+requests+unittest实战系列【一】

1.环境准备 python3 pycharm编辑器 2.框架目录展示 &#xff08;该套代码只是简单入门&#xff0c;有兴趣的可以不断后期完善&#xff09; &#xff08;1&#xff09;run.py主运行文件&#xff0c;运行之后可以生成相应的测试报告&#xff0c;并以邮件形式发送&#xff1b;…

postswigger 靶场(CSRF)攻略-- 1.没有防御措施的 CSRF 漏洞

靶场地址&#xff1a; What is CSRF (Cross-site request forgery)? Tutorial & Examples | Web Security Academy (portswigger.net)https://portswigger.net/web-security/csrf 没有防御措施的 CSRF 漏洞 题目中已告知易受攻击的是电子邮件的更改功能&#xff0c;而目…

Python实现WOA智能鲸鱼优化算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

DeepFool: a simple and accurate method to fool deep neural networks

DeepFool: a simple and accurate method to fool deep neural networks----《DeepFool&#xff1a;一种简单而准确的欺骗深度神经网络的方法》 摘要 最先进的深度神经网络已经在许多图像分类任务上取得了令人印象深刻的结果。然而&#xff0c;这些相同的架构已被证明对于图像…