MySQL数据库:第五章:常见函数

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL数据库:第五章:常见函数

回退至Mysql数据库理论与实战

#进阶4:常见函数

函数:类似于java中的”方法“,将完成某个功能的一系列步骤封装起来,对外暴露一个名字,供外界调用

当我们学习别人定义好的方法(函数),只需要关心两件事:

①叫什么(函数名)

②干什么(函数功能)

sql中的函数:肯定有,并且仅有一个返回值

调用语法:

select 函数名(实参列表);

一、数学函数:

abs绝对值

mod取余

floor向下取整

truncate 截断

ceil向上取整

round四舍五入

注意:

sql中的round支持两个重载,规则:先按绝对值四舍五入,然后再添加正负

round(x):只保留整数部位

round(x,d):保留小数点后一位

java中Math.round只支持一个参数,规则:Math.round(x)等价于Math.floor(x+0.5)

Math.round(x)

rand随机数

二、字符函数

upper转换成大写

lower转换成小写

length获取字节长度

char_length获取字符长度

substr截取子串

trim去掉前后空格或字符

concat拼接

strcmp比较两个字符串

instr获取子串第一次出现的索引,如果找不到,返回0

注意:sql中起始索引,一般从1开始!

三、日期函数

now当前日期+时间

curdate当前日期

curtime当前时间

datediff两个日期天数差

date_format日期——>字符

str_to_date字符——>日期

四、流程控制函数

1、if函数

2、case结构

形式1:类似于switch

形式2:类似于多重if

#一、数学函数

#abs绝对值

SELECT ABS(-1.5);

#floor 向下取整,返回<=该参数的最大整数

SELECT FLOOR(-1.5);

#ceil 向上取整,返回>=该参数的最小整数

SELECT CEIL(-1.5);

#round 四舍五入

SELECT ROUND(-1.56);

SELECT ROUND(-1.56,1);

#truncate 截断

SELECT TRUNCATE(1.67,1);

#rand随机数 0——1之间的小数[0,1)

SELECT RAND();

#mod取余

SELECT MOD(10,3);

SELECT 10%3;

#二、字符函数

#length字节长度

SELECT LENGTH(‘john你好’);

#char_length字符长度

SELECT CHAR_LENGTH(‘john你好’);

#upper转大写

SELECT UPPER(last_name) FROM employees;

#lower转小写

SELECT LOWER(last_name) FROM employees;

#concat拼接

SELECT CONCAT(first_name,last_name) FROM employees;

#substr截取子串

注意:起始索引从1开始

包含起始索引

substr(str,起始索引,截取字符的长度):截取从起始索引(包含)开始,指定长度的子串

substr(str,起始索引):截取从起始索引开始,一直到后面所有的子串

SELECT SUBSTR(‘hello,郭襄爱上了杨过’,1,5);

SELECT SUBSTR(‘hello,郭襄爱上了杨过’,12,2);

SELECT SUBSTR(‘hello,郭襄爱上了杨过’,12);

#练习:查询员工的姓名,其中姓首字符大写,其他字符小写。

#名前两个字符大写,去其他字符小写,中间用.拼接,最终起别名 :姓名

SELECT UPPER(SUBSTR(last_name,1,2))

SELECT LOWER(SUBSTR(last_name,3))

SELECT CONCAT(UPPER(SUBSTR(first_name,1,1)),LOWER(SUBSTR(first_name,2)),’.’,UPPER(SUBSTR(last_name,1,2)),LOWER(SUBSTR(last_name,3))) 姓名

FROM employees;

#instr

类似于java中indexOf

功能:获取子串第一次出现的索引,如果找不到,返回0!

SELECT INSTR(‘郭襄张三丰郭襄爱上了郭襄’,‘郭小襄’);

#trim

trim(【substr from 】str):去掉str前后的指定的子串。如果substr from省略,默认去掉空格

SELECT TRIM('哈' FROM '哈哈哈哈he哈llo张 三 丰哈哈哈哈') AS 备注;
#strcmp

功能:比较两个字符串大小,

如果前者比后者大,则返回1,

如果前者比后者小,则返回-1

如果相等,则返回0

SELECT STRCMP('hillo','hillo');

#三、日期函数

#获取当前日期+时间
SELECT NOW();
#只获取当前日期,不包含时间
SELECT CURDATE();
#只获取当前时间,不包含日期
SELECT CURTIME();
#获取两个日期之差(前面-后面的天数差)
SELECT DATEDIFF('2018-8-18','2018-8-9');
#将日期转换成指定格式的字符串
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s %W') 日期;
#将字符串解析成日期
SELECT STR_TO_DATE('2018-10-19 10:40:09 Friday','%Y-%m-%d %H:%i:%s %W') 日期;
#案例:将入职日期早于'09-09/2000'的员工信息
SELECT * FROM employees WHERE hiredate<STR_TO_DATE('09-09/2000','%m-%d/%Y');

#四、流程控制函数

#1、if函数

类似于java的三元运算符。

参数1:条件

参数2:条件成立,返回的值

参数3:条件不成立,返回的值

SELECT IF(LENGTH(last_name)>LENGTH(first_name),'名大','姓大') 备注,
last_name,
first_name
FROM employees;

#2、case结构

回顾java的switch case语句

switch(判断的变量){

case 常量值1:语句1;break;

case 常量值2:语句1;break;

case 常量值3:语句1;break;

default:语句n;break

}

特点:做等值判断

语法1:类似于switch case,实现等值判断

case 判断的字段或表达式

when 值1 then 显示的值1

when 值2 then 显示的值2

【else 显示的值n】

end

#案例:显示不同职位的新工资。AD_VP 3倍  IT_PROG 4倍 FI_MGR 5倍
SELECT salary 原工资,job_id 职位,
CASE job_id
WHEN 'AD_VP' THEN SALARY*3
WHEN 'IT_PROG' THEN SALARY*4
WHEN 'FI_MGR' THEN SALARY*5
#ELSE SALARY
END  新工资
FROM employees;

语法2:类似于多重if的效果,实现区间判断

case

when 条件1 then 显示的值1

when 条件2 then 显示的值2

【else 显示的值n】

end

#案例:显示工资级别,如果工资>20000,则显示A;如果工资>15000,则显示B,如果工资>10000,则显示C
#否则显示D
SELECT salary,
CASE
WHEN salary>20000 THEN 'A'
WHEN salary>15000 THEN 'B'
WHEN salary>10000 THEN 'C'
#else 'D'
END 级别
FROM employees;

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

SELECT NOW();

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

SELECT employee_id,last_name,salary,salary1.2 ‘new salary’

FROM employees;

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

SELECT last_name,LENGTH(last_name) 长度

FROM employees

ORDER BY SUBSTR(last_name,1,1);

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

<last_name> earns monthly but wants <salary3>

Dream Salary

King earns 24000 monthly but wants 72000

SELECT CONCAT(last_name,' earns ',salary,' monthly but wants ',salary*3) 'Dream Salary'
FROM employees
WHERE salary=24000;

#5. 使用 case-when,按照下面的条件:

job                      grade

AD_PRES            A

ST_MAN              B

IT_PROG             C

SA_REP               D

ST_CLERK           E

产生下面的结果

Last_name    Job_id       Grade

king               AD_PRES       A


/

SELECT last_name,job_id,
CASE job_id
WHEN 'AD_PRES' THEN 'A'
WHEN 'ST_MAN' THEN 'B'
WHEN 'IT_PROG' THEN 'C'
WHEN 'SA_REP' THEN 'D'
WHEN 'ST_CLERK' THEN 'E'
END Grade
FROM employees
WHERE last_name = 'k_ing';
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
JSON 关系型数据库 MySQL
Mysql(5)—函数
MySQL提供了许多内置的函数以帮助用户进行数据操作和分析。这些函数可以分为几类,包括聚合函数、字符串函数、数值函数、日期和时间函数、控制流函数等。
72 1
Mysql(5)—函数
|
18天前
|
关系型数据库 MySQL Serverless
MySQL函数
最常用的MySQL函数,包括聚合函数,字符串函数,日期时间函数,控制流函数等
|
1月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
21天前
|
SQL NoSQL 关系型数据库
|
1月前
|
存储 SQL 关系型数据库
MySQL 存储函数及调用
MySQL 存储函数及调用
70 3
|
1月前
|
缓存 关系型数据库 MySQL
MySQL 满足条件函数中使用查询最大值函数
MySQL 满足条件函数中使用查询最大值函数
125 1
|
2月前
|
存储 SQL 关系型数据库
MySQL基础:函数
本文介绍了MySQL中几种常用的内建函数,包括字符串函数、数值函数、日期函数和流程函数。字符串函数如`CONCAT()`用于拼接字符串,`TRIM()`用于去除字符串两端的空格,`MOD()`求余数,`RAND()`生成随机数,`ROUND()`四舍五入。日期函数如`CURDATE()`返回当前日期,`NOW()`返回当前日期和时间,`DATE_ADD()`添加时间间隔,`DATEDIFF()`计算日期差。流程函数如`IF()`和`CASE WHEN THEN ELSE END`用于条件判断。聚合函数如`COUNT()`统计行数,`SUM()`求和,`AVG()`求平均值
30 8
MySQL基础:函数
|
1月前
|
关系型数据库 MySQL 数据库
mysql中tonumber函数使用要注意什么
在处理这类转换操作时,考虑周全,利用提供的高性能云服务器资源,可以进一步提升数据库处理效率,确保数据操作的稳定性和安全性,尤其是在处理大量数据转换和运算密集型应用时。
93 0
|
1月前
|
关系型数据库 MySQL 数据处理
企业级应用 mysql 日期函数变量,干货已整理
本文详细介绍了如何在MySQL8.0中使用DATE_FORMAT函数进行日期格式的转换,包括当日、昨日及不同时间段的数据获取,并提供了实际的ETL应用场景和注意事项,有助于提升数据处理的灵活性和一致性。
41 0
|
2月前
|
JSON 关系型数据库 MySQL
MySQL 8.0常用函数汇总与应用实例
这些函数只是MySQL 8.0提供的众多强大功能的一部分。通过结合使用这些函数,你可以有效地处理各种数据,优化数据库查询,并提高应用程序的性能和效率。
63 3
下一篇
无影云桌面