MySQL-单行函数:数值函数、字符串函数、日期和时间函数、流程控制函数、加密与解密函数、MySQL信息函数、其他函数、单行函数练习

news2024/11/24 17:08:20

1.数值函数

1.1 基本的操作

SELECT ABS(-123),ABS(32),SIGN(-23),SIGN(43),PI(),CEIL(32.32),CEILING(-43.23),FLOOR(32.32),
FLOOR(-43.23),MOD(12,5),12 MOD 5,12 % 5
FROM DUAL;

在这里插入图片描述

1.2 取随机数

SELECT RAND(),RAND(),RAND(10),RAND(10),RAND(-1),RAND(-1)
FROM DUAL;

在这里插入图片描述

1.3 四舍五入,截断操作

SELECT ROUND(123.556),ROUND(123.456,0),ROUND(123.456,1),ROUND(123.456,2),
ROUND(123.456,-1),ROUND(153.456,-2)
FROM DUAL;

在这里插入图片描述

SELECT TRUNCATE(123.456,0),TRUNCATE(123.496,1),TRUNCATE(129.45,-1)
FROM DUAL;

在这里插入图片描述

1.4 单行函数可以嵌套

SELECT TRUNCATE(ROUND(123.456,2),0)
FROM DUAL;

在这里插入图片描述

1.5 角度与弧度的互换

SELECT RADIANS(30),RADIANS(45),RADIANS(60),RADIANS(90),
DEGREES(2*PI()),DEGREES(RADIANS(60))
FROM DUAL;

在这里插入图片描述

1.6 三角函数

SELECT SIN(RADIANS(30)),DEGREES(ASIN(1)),TAN(RADIANS(45)),DEGREES(ATAN(1))
FROM DUAL;

在这里插入图片描述

1.7 指数和对数

SELECT POW(2,5),POWER(2,4),EXP(2)
FROM DUAL;

在这里插入图片描述

SELECT LN(EXP(2)),LOG(EXP(2)),LOG10(10),LOG2(4)
FROM DUAL;

在这里插入图片描述

1.8 进制间的转换

SELECT BIN(10),HEX(10),OCT(10),CONV(10,10,8)
FROM DUAL;

在这里插入图片描述

2. 字符串函数

SELECT ASCII('Abcdfsf'),CHAR_LENGTH('hello'),CHAR_LENGTH('我们'),
LENGTH('hello'),LENGTH('我们')
FROM DUAL;

在这里插入图片描述

2.1 xxx worked for yyy

SELECT CONCAT(emp.last_name,' worked for ',mgr.last_name) "details"
FROM employees emp JOIN employees mgr
WHERE emp.`manager_id` = mgr.employee_id;

在这里插入图片描述

SELECT CONCAT_WS('-','hello','world','hello','beijing')
FROM DUAL;

在这里插入图片描述

#字符串的索引是从1开始的!
SELECT INSERT('helloworld',2,3,'aaaaa'),REPLACE('hello','lol','mmm')
FROM DUAL;

在这里插入图片描述

SELECT UPPER('HelLo'),LOWER('HelLo')
FROM DUAL;

在这里插入图片描述

SELECT last_name,salary
FROM employees
WHERE LOWER(last_name) = 'King';

在这里插入图片描述

SELECT LEFT('hello',2),RIGHT('hello',3),RIGHT('hello',13)
FROM DUAL;

在这里插入图片描述

2.2 LPAD:实现右对齐效果

2.3 RPAD:实现左对齐效果

SELECT employee_id,last_name,LPAD(salary,10,' ')
FROM employees;

在这里插入图片描述

SELECT CONCAT('---',LTRIM('    h  el  lo   '),'***'),
TRIM('oo' FROM 'ooheollo')
FROM DUAL;

在这里插入图片描述

SELECT REPEAT('hello',4),LENGTH(SPACE(5)),STRCMP('abc','abe')
FROM DUAL;

在这里插入图片描述

SELECT SUBSTR('hello',2,2),LOCATE('lll','hello')
FROM DUAL;

在这里插入图片描述

SELECT ELT(2,'a','b','c','d'),FIELD('mm','gg','jj','mm','dd','mm'),
FIND_IN_SET('mm','gg,mm,jj,dd,mm,gg')
FROM DUAL;

在这里插入图片描述

SELECT employee_id,NULLIF(LENGTH(first_name),LENGTH(last_name)) "compare"
FROM employees;

在这里插入图片描述

3. 日期和时间函数

3.1 获取日期、时间

SELECT CURDATE(),CURRENT_DATE(),CURTIME(),NOW(),SYSDATE(),
UTC_DATE(),UTC_TIME()
FROM DUAL;

在这里插入图片描述

SELECT CURDATE(),CURDATE() + 0,CURTIME() + 0,NOW() + 0
FROM DUAL;

在这里插入图片描述

3.2 日期与时间戳的转换

SELECT UNIX_TIMESTAMP(),UNIX_TIMESTAMP('2021-10-01 12:12:32'),
FROM_UNIXTIME(1635173853),FROM_UNIXTIME(1633061552)
FROM DUAL;

在这里插入图片描述

3.3 获取月份、星期、星期数、天数等函数

SELECT YEAR(CURDATE()),MONTH(CURDATE()),DAY(CURDATE()),
HOUR(CURTIME()),MINUTE(NOW()),SECOND(SYSDATE())
FROM DUAL;

在这里插入图片描述

SELECT MONTHNAME('2021-10-26'),DAYNAME('2021-10-26'),WEEKDAY('2021-10-26'),
QUARTER(CURDATE()),WEEK(CURDATE()),DAYOFYEAR(NOW()),
DAYOFMONTH(NOW()),DAYOFWEEK(NOW())
FROM DUAL;

在这里插入图片描述

3.4 日期的操作函数

SELECT EXTRACT(SECOND FROM NOW()),EXTRACT(DAY FROM NOW()),
EXTRACT(HOUR_MINUTE FROM NOW()),EXTRACT(QUARTER FROM '2021-05-12')
FROM DUAL;

在这里插入图片描述

3.5 时间和秒钟转换的函数

SELECT TIME_TO_SEC(CURTIME()),
SEC_TO_TIME(83355)
FROM DUAL;

在这里插入图片描述

3.6 计算日期和时间的函数

SELECT NOW(),DATE_ADD(NOW(),INTERVAL 1 YEAR),
DATE_ADD(NOW(),INTERVAL -1 YEAR),
DATE_SUB(NOW(),INTERVAL 1 YEAR)
FROM DUAL;

在这里插入图片描述

SELECT DATE_ADD(NOW(), INTERVAL 1 DAY) AS col1,DATE_ADD('2021-10-21 23:32:12',INTERVAL 1 SECOND) AS col2,
ADDDATE('2021-10-21 23:32:12',INTERVAL 1 SECOND) AS col3,
DATE_ADD('2021-10-21 23:32:12',INTERVAL '1_1' MINUTE_SECOND) AS col4,
DATE_ADD(NOW(), INTERVAL -1 YEAR) AS col5, #可以是负数
DATE_ADD(NOW(), INTERVAL '1_1' YEAR_MONTH) AS col6 #需要单引号
FROM DUAL;

在这里插入图片描述

SELECT ADDTIME(NOW(),20),SUBTIME(NOW(),30),SUBTIME(NOW(),'1:1:3'),DATEDIFF(NOW(),'2021-10-01'),
TIMEDIFF(NOW(),'2021-10-25 22:10:10'),FROM_DAYS(366),TO_DAYS('0000-12-25'),
LAST_DAY(NOW()),MAKEDATE(YEAR(NOW()),32),MAKETIME(10,21,23),PERIOD_ADD(20200101010101,10)
FROM DUAL;

在这里插入图片描述

3.7 日期的格式化与解析

格式化:日期 —> 字符串
解析: 字符串 ----> 日期
此时我们谈的是日期的显式格式化和解析
之前,我们接触过隐式的格式化或解析

SELECT *
FROM employees
WHERE hire_date = '1993-01-13';

在这里插入图片描述

#格式化:

SELECT DATE_FORMAT(CURDATE(),'%Y-%M-%D'),
DATE_FORMAT(NOW(),'%Y-%m-%d'),TIME_FORMAT(CURTIME(),'%h:%i:%S'),
DATE_FORMAT(NOW(),'%Y-%M-%D %h:%i:%S %W %w %T %r')
FROM DUAL;

在这里插入图片描述

解析:格式化的逆过程

SELECT STR_TO_DATE('2021-October-25th 11:37:30 Monday 1','%Y-%M-%D %h:%i:%S %W %w')
FROM DUAL;

在这里插入图片描述

SELECT GET_FORMAT(DATE,'USA')
FROM DUAL;

在这里插入图片描述

SELECT DATE_FORMAT(CURDATE(),GET_FORMAT(DATE,'USA'))
FROM DUAL;

在这里插入图片描述

4.流程控制函数

4.1 IF(VALUE,VALUE1,VALUE2)

SELECT last_name,salary,IF(salary >= 6000,'高工资','低工资') "details"
FROM employees;

在这里插入图片描述

SELECT last_name,commission_pct,IF(commission_pct IS NOT NULL,commission_pct,0) "details",
salary * 12 * (1 + IF(commission_pct IS NOT NULL,commission_pct,0)) "annual_sal"
FROM employees;

在这里插入图片描述

4.2 IFNULL(VALUE1,VALUE2):看做是IF(VALUE,VALUE1,VALUE2)的特殊情况

SELECT last_name,commission_pct,IFNULL(commission_pct,0) "details"
FROM employees;

在这里插入图片描述

4.3 CASE WHEN … THEN …WHEN … THEN … ELSE … END

类似于java的if … else if … else if … else

SELECT last_name,salary,CASE WHEN salary >= 15000 THEN '白骨精' 
			     WHEN salary >= 10000 THEN '潜力股'
			     WHEN salary >= 8000 THEN '小屌丝'
			     ELSE '草根' END "details",department_id
FROM employees;

在这里插入图片描述

SELECT last_name,salary,CASE WHEN salary >= 15000 THEN '白骨精' 
			     WHEN salary >= 10000 THEN '潜力股'
			     WHEN salary >= 8000 THEN '小屌丝'
			     END "details"
FROM employees;

在这里插入图片描述

4.4 CASE … WHEN … THEN … WHEN … THEN … ELSE … END

类似于java的swich … case…
练习1
查询部门号为 10,20, 30 的员工信息,
若部门号为 10, 则打印其工资的 1.1 倍,
20 号部门, 则打印其工资的 1.2 倍,
30 号部门,打印其工资的 1.3 倍数,
其他部门,打印其工资的 1.4 倍数

SELECT employee_id,last_name,department_id,salary,CASE department_id WHEN 10 THEN salary * 1.1
								     WHEN 20 THEN salary * 1.2
								     WHEN 30 THEN salary * 1.3
								     ELSE salary * 1.4 END "details"
FROM employees;

在这里插入图片描述

练习2
查询部门号为 10,20, 30 的员工信息,
若部门号为 10, 则打印其工资的 1.1 倍,
20 号部门, 则打印其工资的 1.2 倍,
30 号部门打印其工资的 1.3 倍数

SELECT employee_id,last_name,department_id,salary,CASE department_id WHEN 10 THEN salary * 1.1
								     WHEN 20 THEN salary * 1.2
								     WHEN 30 THEN salary * 1.3
								     END "details"
FROM employees
WHERE department_id IN (10,20,30);

在这里插入图片描述

5. 加密与解密的函数

PASSWORD()在mysql8.0中弃用。

SELECT MD5('mysql'),SHA('mysql'),MD5(MD5('mysql'))
FROM DUAL;

在这里插入图片描述

ENCODE()\DECODE() 在mysql8.0中弃用。

SELECT ENCODE('atguigu','mysql'),DECODE(ENCODE('atguigu','mysql'),'mysql')
FROM DUAL;

6. MySQL信息函数

SELECT VERSION(),CONNECTION_ID(),DATABASE(),SCHEMA(),
USER(),CURRENT_USER(),CHARSET('尚硅谷'),COLLATION('尚硅谷')
FROM DUAL;

在这里插入图片描述

7. 其他函数

#如果n的值小于或者等于0,则只保留整数部分

SELECT FORMAT(123.125,2),FORMAT(123.125,0),FORMAT(123.125,-2)
FROM DUAL;

在这里插入图片描述

SELECT CONV(16, 10, 2), CONV(8888,10,16), CONV(NULL, 10, 2)
FROM DUAL;

在这里插入图片描述

以“192.168.1.100”为例,计算方式为192乘以256的3次方,加上168乘以256的2次方,加上1乘以256,再加上100。

SELECT INET_ATON('192.168.1.100'),INET_NTOA(3232235876)
FROM DUAL;

在这里插入图片描述

BENCHMARK()用于测试表达式的执行效率

SELECT BENCHMARK(100000,MD5('mysql'))
FROM DUAL;

在这里插入图片描述

CONVERT():可以实现字符集的转换

SELECT CHARSET('atguigu'),CHARSET(CONVERT('atguigu' USING 'gbk'))
FROM DUAL;

在这里插入图片描述

8.单行函数-练习

1.显示系统时间(注:日期+时间)

SELECT NOW() 
FROM DUAL;

在这里插入图片描述

2.查询员工号,姓名,工资,以及工资提高百分之20%后的结果(new salary)

SELECT employee_id, last_name, salary, salary * 1.2 "new salary" 
FROM employees;

在这里插入图片描述

3.将员工的姓名按首字母排序,并写出姓名的长度(length)

SELECT last_name, LENGTH(last_name) 
FROM employees 
ORDER BY last_name 
DESC;

在这里插入图片描述

4.查询员工id,last_name,salary,并作为一个列输出,别名为OUT_PUT

SELECT CONCAT(employee_id, ',' , last_name , ',', salary) OUT_PUT 
FROM employees;

在这里插入图片描述

5.查询公司各员工工作的年数、工作的天数,并按工作年数的降序排序。 commission_pct不为空

SELECT DATEDIFF(NOW(),e.hire_date)/365 work_years,DATEDIFF(NOW(),e.hire_date) work_days
from employees e
ORDER BY work_years DESC;

在这里插入图片描述

6.查询员工姓名,hire_date , department_id,
满足以下条件:雇用时间在 1997年之后,department_id 为80 或 90 或110, commission_pct不为空

SELECT e.last_name,e.hire_date,e.department_id
from employees e
-- where hire_date>='1997-01-1' 
-- WHERE DATE_FORMAT(NOW(),'%Y')>= '1997'
where hire_date>=STR_TO_DATE('1997-01-01','%Y-%m-%d')
and department_id in(80,90,110) 
AND commission_pct is not null;

在这里插入图片描述

7.查询公司中入职超过10000天的员工姓名、入职时间

SELECT last_name,hire_date
from employees
-- where DATEDIFF(NOW(),hire_date)>10000;
WHERE TO_DAYS(NOW())-TO_DAYS(hire_date)>10000;

在这里插入图片描述

8.做一个查询,产生下面的结果

SELECT CONCAT(last_name,' earns ',salary,' monthly but wants ',TRUNCATE(salary*3,0)) "Dream Salary"
from employees;

在这里插入图片描述

SELECT last_name Last_name, job_id Job_id,CASE job_id when 'AD_PRES' then 'A'
                                                      when 'ST_MAN' then 'A'
                                                      when 'IT_PROG' then 'A'
                                                      when ' SA_REP' then 'A'
                                                      ELSE 'E'
                                                      END "Grade"
FROM employees;

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络——40各个层次的安全性

各个层次的安全性 安全电子邮件 Alice需要发送机密的报文m给Bob Alice 产生随机的对称秘钥, K s K_s Ks​使用 K s K_s Ks​对报文进行加密(为了效率)对 K s K_s Ks​使用Bob的公钥进行加密发送 K s ( m ) K_s(m) Ks​(m)和 K B ( K S ) K…

如何使用群晖Synology Drive结合cpolar内网穿透实现同步Obsidian笔记文件

文章目录 一、简介软件特色演示: 二、使用免费群晖虚拟机搭建群晖Synology Drive服务,实现局域网同步1 安装并设置Synology Drive套件2 局域网内同步文件测试 三、内网穿透群晖Synology Drive,实现异地多端同步Windows 安装 Cpolar步骤&#…

视觉大模型--DAB-deter的深入理解

原理大家参考这篇文章,我主要是根据自己的理解和整个流程图以及代码进行对应,这样更有利于深入理解: 下图是解码器结构图,编码器没动和deter一样的 这张图片基本上说清了模型的结构和传递过程,红色代表切断梯度反向传…

线程池实践篇

文章目录 配置线程池参数定义参数实体bean配置线程池使用 配置线程池参数 定时任务线程池基础参数 # 定时任务线程池基础参数 task:pool:corePoolSize: 5 # 核心线程数maxPoolSize: 20 # 设置最大线程数keepAliveSeconds: 300 # 设置线程活跃时间,单位秒queueCapa…

如何快速开启一个项目-ApiHug - API design Copilot

ApiHug101-001开启篇 🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin |…

BMS基础之锂电池充放电特性

磷酸铁锂电池 它充电在3.3V以后,会有一个猛地增加,所以3.3v其实就是他的饱和电压,如果继续充电就会损坏电池,同理放电到一定程度电压就会急剧下降,过放也会损坏电池(充放电截止电压) 三元锂电…

MySQL数据库 数据库基本操作(四):表的增删查改(下)

1. 联合查询 注:联合查询是面试中的重点,只要考到sql,大多数情况下都考的是联合查询,而且联合查询也是我们学习中的难点. 1.1 笛卡尔积 在实际开发中,数据往往来自不同的表,所以要多表联合查询.多表查询是对多张表的数据笛卡尔积. 它们是两张表的各行数据通过全排列得到的. …

人工智能_大模型023_AssistantsAPI_01_OpenAI助手的创建_API的调用_生命周期管理---人工智能工作笔记0159

先来说一下一些问题: 尽量不要微调,很麻烦,而且效果需要自己不断的去测试. 如果文档中有图表,大量的图片去分析就不合适了. 是否用RAG搜索,这个可以这样来弄,首先去es库去搜能直接找到答案可以就不用去RAG检索了,也可以设置一个分,如果低于60分,那么就可以去进行RAG检索 微…

dinov2爆肝记

一、网址 https://github.com/facebookresearch/dinov2 二、配置 pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ 三、雷 cuml-cu11无法安装,因为他只能linux 但我发现,没他也行 四、代码 注意: 下面代码…

二叉树的遍历——BFS广度优先搜索

1、BinNode类的创建 (1)代码总览 ##(2)测试示例 2、二叉树的遍历 (1)图示 (2)代码总览 (3)测试示例

Datax,hbase与mysql数据相互同步

参考文章:datax mysql 和hbase的 相互导入 目录 0、软件版本说明 1、hbase数据同步至mysql 1.1、hbase数据 1.2、mysql数据 1.3、json脚本(hbase2mysql.json) 1.4、同步成功日志 2、mysql数据同步至hbase 1.1、hbase数据 1.2、mysql…

GD32零基础教程第一节(开发环境搭建及工程模板介绍)

文章目录 前言一、MDK keil5安装二、设备支持包安装三、CH340串口驱动安装四、STLINIK驱动安装五、工程风格介绍总结 前言 本篇文章正式带大家开始学习GD32F407VET6国产单片机的学习,国产单片机性能强,而且价格也便宜,下面就开始带大家来介绍…

C#互联网区域医学检验中心云LIS系统源码

云LIS联通四级(市、县、乡、村)检验服务网构建互联网检验服务新体系落地检验资源区域共享建设。云LIS系统是一种基于云计算技术的区域实验室信息管理系统,它的主要功能是管理实验室中的各种信息数据,包括样品数据、检测结果、仪器…

微信小程序-接入sse数据流并实现打字机效果( ChatGPT )

从流中获取的数据格式如下 小程序调用SSE接口 const requestTask wx.request({url: xxx, // 需要请求的接口地址enableChunked: true, // enableChunked必须为truemethod: "GET",timeout: 120000,success(res) {console.log(res.data)},fail: function (error) {//…

Golang | Leetcode Golang题解之第18题四数之和

题目&#xff1a; 题解&#xff1a; func fourSum(nums []int, target int) (quadruplets [][]int) {sort.Ints(nums)n : len(nums)for i : 0; i < n-3 && nums[i]nums[i1]nums[i2]nums[i3] < target; i {if i > 0 && nums[i] nums[i-1] || nums[i]…

今日科普:车祸导致颈部挥鞭样损伤,该怎样治疗

王先生因一次严重的车祸遭遇了颈部挥鞭样损伤。车祸后&#xff0c;他感到颈部和上肢持续性的刀割样疼痛&#xff0c;麻木不堪&#xff0c;严重影响了日常生活。王先生为了寻求疼痛缓解&#xff0c;来到了北京精诚博爱医院。经过详细的检查&#xff0c;医生决定为他实施颈交感射…

高端大气自适应全屏酷炫渐变卡片html源码图片切换特效html5源码导航引导网站源码

源码特点&#xff1a; 1&#xff1a;手工书写DIVCSS、代码精简无冗余。 2&#xff1a;自适应结构&#xff0c;全球先进技术&#xff0c;高端视觉体验。 3&#xff1a;SEO框架布局&#xff0c;栏目及文章页均可独立设置标题/关键词/描述。 4&#xff1a;附带测试数据、安装教程、…

少儿编程 2024年3月电子学会图形化编程等级考试Scratch二级真题解析(判断题)

2024年3月scratch编程等级考试二级真题 判断题&#xff08;共10题&#xff0c;每题2分&#xff0c;共20分&#xff09; 26、下列积木块运行结果为false 答案&#xff1a;错 考点分析&#xff1a;考查积木综合使用&#xff0c;重点考查逻辑或积木的使用&#xff0c;或运算是只…

postgresql发布和订阅

一、发布订阅介绍 发布和订阅使用了pg的逻辑复制的功能&#xff0c;通过发布端创建publication与表绑定&#xff0c;订阅端创建subscription同时会在发布端创建逻辑复制槽实现逻辑复制功能 逻辑复制基于 发布&#xff08;Publication&#xff09; 与 订阅&#xff08;Subscri…

性能优化 - 你知道开发React项目中,可以做哪些性能优化吗

难度级别:中高级及以上 提问概率:75% 在React项目开发中,面临着比较大的问题就是组件更新以及重复渲染的问题,基于这两点,我们可以在日常开发工作中,可以通过以下几点,来提升React的性能,加快组件更新对比,避免过多的重复渲染问题。 …