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

MySQL--day6--单行函数

请添加图片描述
(以下内容全部来自上述课程)
在这里插入图片描述

单行函数

1. 内置函数及分类

  • 单行函数
  • 聚合函数(或分组函数)
    请添加图片描述

1.1 单行函数特点

  • 操作数据对象
  • 接受参数返回一个结果
  • 只对一行进行变换
  • 每行返回一个结果
  • 可以嵌套
  • 参数可以是一列或一个值

2. 数值函数

2.1 基本函数

请添加图片描述

#1.数值函数
# 基本的操作
# 	  绝对值:123     32	 正负号:-1    1     3.14...    33          -43           32
SELECT ABS (-123),ABS (32),SIGN (-23),SIGN (43),PI(),CEIL(32.32),CEILING(-43.23),FLOOR(32.32),
#    -44        取余:2     2       2
FLOOR(-43.23),MOD(12,5),12 MOD 5,12 % 5 
FROM DUAL;# 取随机数:()内因子相同,随机数也相同
SELECT RAND(),RAND(),RAND(10),RAND(10),RAND(-1),RAND(-1) 
FROM DUAL;#四舍五入,截断操作
#           124             123              123.5            123.46              120              200
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;#                123                 123.4              120
SELECT TRUNCATE(123.456,0),TRUNCATE(123.496,1),TRUNCATE(129.45,-1) 
FROM DUAL;#单行函数可以嵌套
#                  123
SELECT TRUNCATE(ROUND(123.456,2),0) 
FROM DUAL;

2.2 角度与弧度的转换

请添加图片描述

#角度与弧度的互换
SELECT RADIANS(30),RADIANS(45),RADIANS(60),RADIANS(90), 
DEGREES(2*PI()),DEGREES(RADIANS(60)) 
FROM DUAL;

2.3 三角函数

请添加图片描述

2.4 指数与对数

请添加图片描述

# 指数与对数
#       32          16        7.389....
select pow(2,5),power(2,4),exp(2)
from dual;#          2 			2	    	1		2
select ln(exp(2)),log(exp(2)),log10(10),log2(4),
from dual;

2.5 进制间的转换

请添加图片描述

#进制间的转换
SELECT BIN(10),HEX(10),OCT(10),CONV(10),2,8) 
FROM DUAL;

3.字符串函数

请添加图片描述

# 2.字符串函数
#          65                   5                  2
SELECT ASCII('Abcdfsf'),CHAR_LENGTH('hello'),CHAR_LENGTH('我们'), 
#       5             6
LENGTH('hello'),LENGTH('我们') 
FROM DUAL;# 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;#字符串的索引是从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;# LPAD:实现右对齐效果
# RPAD:实现左对齐效果
SELECT employee_id,last_name,LPAD(salary,10,'') 
FROM employees;

请添加图片描述
请添加图片描述

4. 日期和时间函数

4.1 获取日期、时间

请添加图片描述

4.2 日期与时间戳的转换

请添加图片描述

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

请添加图片描述

4.4 日期的操作函数

请添加图片描述
请添加图片描述
请添加图片描述

SELECT EXTRACT(MINUTE FROM NOW()),EXTRACT( WEEK FROM NOW()),
EXTRACT( QUARTER FROM NOW()),EXTRACT(MINUTE_SECOND FROM NOW()) 
FROM DUAL;

4.5 时间和秒钟转换的函数

请添加图片描述

4.6 计算日期和时间的函数

  • 第一组:
    请添加图片描述
    请添加图片描述
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 DATE_SUB('2021-01-21',INTERVAL 31 DAY) AS col1, 
SUBDATE('2021-01-21',INTERVAL 31 DAY) AS col2,
DATE_SUB('2021-01-2102:01:01',INTERVAL '1 1'DAY_HOUR) AS col3 
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()),12),MAKETIME(10,21,23),PERIOD_ADD(20200101010101,10) 
FROM DUAL;

4.7 日期的格式化与解析

请添加图片描述
请添加图片描述
请添加图片描述

#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-0ctober-25th 11:34:42 Monday 1 23:34:42','%Y-%M-%D %h:%i:%S %W %w %T') 
FROM DUAL;

请添加图片描述

5. 控制流程函数

请添加图片描述

#4.流程控制函数
#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;
http://www.xdnf.cn/news/8527.html

相关文章:

  • 【HCIA】端口隔离
  • threadPool.submit() 和 threadPool.execute()的区别
  • nvidia Thor U与qualcomm 8295 DMPIS算力测试对比
  • 日志分析-IIS日志分析
  • Oracle常用函数
  • 关于使用高德安卓api时so文件的坑
  • 解锁 BADBOX 2.0 的 DNS 密码箱
  • IP-guard发布新版本4.87.2241.0
  • matlab2007 和 microsoft access怎么连接?
  • java将rtsp转成flv在浏览器播放
  • 【HTML-9】深入理解HTML超链接标签:从基础到高级应用
  • 第R7周:糖尿病预测模型优化探索
  • YOLO12改进-Backbone-引入Swin Transformer替换backbone
  • 地理特征类可视化图像总结
  • Java面向对象编程核心:封装、继承与多态
  • AT24C02(I2C总线)
  • C# TCP协议全面指南:从可靠传输到企业级高并发的深度实践​
  • 当 BIM 遇见 GIS:GISBox 中 Revit 数据导入的技术联动与应用场景
  • 《AI 绘画崛起,人类艺术家如何在夹缝中寻找新机遇?》
  • 复杂工况下液压挖掘机工作臂系统创新设计与性能优化
  • 如何在STM32CubeMX下为STM32工程配置调试打印功能
  • 使用pip安装ptflops报错
  • 探索Qwen2ForCausalLM 架构上进行微调
  • k8s容器入门(2) 容器化组件“可漂移“
  • 企业知识管理面临的挑战与飞书知识问答的解决方案
  • 字节开源多模态文档图像解析模型:Dolphin
  • 【FastAPI】--基础教程
  • 使用compressorjs实现前端图片压缩
  • 文章记单词 | 第106篇(六级)
  • 提高 Maven 项目的编译效率