在使用时,需要注意函数的参数类型和返回值类型。
小tips:对于有一定基础、自学能力较强且希望快速提升技能的学习者,可以通过直接实践法或逆向学习法(直接跳入实践环节,通过分析和理解具体的项目源码来学习新知识,而不是从理论或基础知识开始逐步构建)来提高自己的学习效率。
目录
字符串函数
在MySQL中,字符串函数是一组用于处理字符串值的函数。
常用的字符串函数:
CONCAT(str1, str2, …) --返回字符串的拼接结果。
LPAD(str, len, padstr) --在字符串str的左侧填充字符padstr,直到长度为len。
RPAD(str, len, padstr) --在字符串str的右侧填充字符padstr,直到长度为len。
SUBSTRING(str, start, len) --提取字符串str从位置start开始的长度为len的子字符串。字符串的第一个字符的位置是1。如果start是负数,则子字符串的起始位置是从字符串的末尾开始计算的。
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) --去掉字符串两边的空格或指定的字符。
LOWER(str) --将字符串转换为小写。
UPPER(str) --将字符串转换为大写。
数值函数
在MySQL中,数值函数是一组用于处理数值数据的函数。
常用的数值函数:
CEIL(x) --返回大于或等于x的最小整数值。
FLOOR(x) --返回小于或等于x的最大整数值。
RAND() --返回一个在0到1之间的随机浮点数。
ROUND(x) --将x四舍五入到最接近的整数。
ROUND(x, d) --将x四舍五入到d指定的小数位数。
日期函数
在MySQL中,日期函数用于处理日期值。
常用的日期函数:
NOW() --返回当前日期和时间。
CURDATE() --返回当前日期。
CURTIME() --返回当前时间。
YEAR(expr) --返回年份。
MONTH(expr) --返回月份。
DAY(expr) --返回日期。
DATEDIFF(expr1, expr2) --返回两个日期之间的天数差。
DATE_ADD(date, INTERVAL expr type)
--返回一个日期值加上一个时间间隔expr后的时间值。
--date: 这是起始日期,可以是 DATE、DATETIME 或 TIMESTAMP 类型。
--INTERVAL expr type: 这是您想要添加到 date 的间隔。expr 是一个表达式,表示时间间隔的数量,type 表示时间间隔的单位。
例子:查询所有员工的入职天数,并根据入职天数倒序排序。
SELECT name, DATEDIFF(CURDATE(), entrydate) AS 'entrydays'
FROM emp
ORDER BY entrydays DESC;
--DATEDIFF(CURDATE(), entrydate) 函数计算了当前日期与每个员工的入职日期之间的天数差。
--AS 'entrydays' 给计算出的天数差起了一个别名,这样在结果集中就可以用entrydays来引用这个值。
--ORDER BY entrydays DESC 确保了结果按照入职天数从多到少进行排序。
流程函数
在SQL中,流程函数(也称为控制流函数)用于在查询或存储过程中控制流程。这些函数允许您执行条件判断、循环和异常处理等操作。
常用的SQL流程函数:
CASE语句:用于根据条件返回不同的值。
CASE
WHEN condition THEN value1 --条件表达式condition1为真,则返回的值value1
WHEN condition THEN value2
...
ELSE default_value --如果所有条件都不满足,则返回的默认值。
END;
例子
--如果您有一个包含订单状态的表,并且您想要为每个订单状态返回一个描述性的名称
SELECT
order_id,
order_status,
CASE
WHEN order_status = 'PENDING' THEN '等待处理'
WHEN order_status = 'PROCESSING' THEN '处理中'
WHEN order_status = 'SHIPPED' THEN '已发货'
ELSE '未知状态'
END AS status_description
FROM orders;
--CASE语句会根据order_status列的值返回相应的描述性名称。
--如果order_status列的值不在PENDING、PROCESSING或SHIPPED中,则将返回'未知状态'
--如果成绩math大于等于85,则显示优秀。
--如果成绩math大于等于60但小于85,则显示及格。
--如果成绩math小于60,则显示不及格。
SELECT
id,
name,
math,
english,
chinese,
CASE
WHEN math >= 85 THEN '优秀'
WHEN math >= 60 THEN '及格'
ELSE '不及格'
END AS 数学,
CASE
WHEN english >= 85 THEN '优秀'
WHEN english >= 60 THEN '及格'
ELSE '不及格'
END AS 英语,
CASE
WHEN chinese >= 85 THEN '优秀'
WHEN chinese >= 60 THEN '及格'
ELSE '不及格'
END AS 语文
FROM score;
IF语句:
IF(value,t,f) --如果value为true,则返回t,否则返回f
IF condition THEN
value1
ELSE
value2
END IF;
IFNULL语句:
IFNULL(expr1, expr2)
--如果expr1为NULL,则IFNULL()函数将返回expr2的值
例子:
--查询emp表的员工姓名和工作地址〈北京/上海---->一线城市,其他---->二线城市)
SELECT
name,
(CASE
WHEN workaddress = '北京' THEN '一线城市'
WHEN workaddress = '上海' THEN '一线城市'
ELSE '二线城市'
END) AS '工作地址'
FROM emp;
其他函数学习方法及渠道:
-
官方文档:
- 访问MySQL的官方文档,查看SQL函数的完整列表和详细说明。MySQL的文档通常包含丰富的例子和用法指南。
-
在线教程和课程:
- 查找在线教育平台上的SQL课程,这些课程可能涵盖SQL函数的更多高级主题。
- 观看YouTube上的SQL教程视频,这些视频通常由经验丰富的讲师制作,提供了实用的学习材料。
-
书籍:
- 阅读有关SQL和数据库管理的书籍,这些书籍通常会涵盖SQL函数的广泛主题。
- 查找MySQL专用的书籍,它们可能包含专门关于MySQL函数和特性的内容。
-
实践:
- 在MySQL环境中实践使用不同函数。
- 创建测试表和数据,尝试编写复杂的查询,使用不同的函数来执行特定的任务。
-
社区和论坛:
- 加入MySQL相关的社区和论坛。
- 提问和回答问题,与其他开发者交流,学习他们的经验和技巧。
-
实际项目应用:
- 在实际项目中应用SQL函数,解决实际问题。
- 通过项目实践来加深对函数的理解和掌握。
-
定期复习:
- 定期复习所学知识,巩固记忆。
- 随着学习的深入,不断回顾和练习,以保持对函数的熟悉。
也可以通过某些工具提问,表明自己的需求应该使用什么函数能提高运行效率,通过他的回答和结合自己所学来实现代码需求。
标签:返回,函数,--,WHEN,笔记,学习,SQL,字符串 From: https://blog.csdn.net/lonelyxxyo/article/details/140626071