函数篇 学习笔记

在使用时,需要注意函数的参数类型和返回值类型。

小tips:对于有一定基础、自学能力较强且希望快速提升技能的学习者,可以通过直接实践法或逆向学习法(直接跳入实践环节,通过分析和理解具体的项目源码来学习新知识,而不是从理论或基础知识开始逐步构建)来提高自己的学习效率。


目录

字符串函数

常用的字符串函数:

数值函数

常用的数值函数:

日期函数

常用的日期函数:

例子:查询所有员工的入职天数,并根据入职天数倒序排序。

流程函数

常用的SQL流程函数:

CASE语句:用于根据条件返回不同的值。

例子

IF语句:

IFNULL语句:

 例子:

其他函数学习方法及渠道:


字符串函数

在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;

其他函数学习方法及渠道:

  1. 官方文档

    • 访问MySQL的官方文档,查看SQL函数的完整列表和详细说明。MySQL的文档通常包含丰富的例子和用法指南。
  2. 在线教程和课程

    • 查找在线教育平台上的SQL课程,这些课程可能涵盖SQL函数的更多高级主题。
    • 观看YouTube上的SQL教程视频,这些视频通常由经验丰富的讲师制作,提供了实用的学习材料。
  3. 书籍

    • 阅读有关SQL和数据库管理的书籍,这些书籍通常会涵盖SQL函数的广泛主题。
    • 查找MySQL专用的书籍,它们可能包含专门关于MySQL函数和特性的内容。
  4. 实践

    • 在MySQL环境中实践使用不同函数。
    • 创建测试表和数据,尝试编写复杂的查询,使用不同的函数来执行特定的任务。
  5. 社区和论坛

    • 加入MySQL相关的社区和论坛。
    • 提问和回答问题,与其他开发者交流,学习他们的经验和技巧。
  6. 实际项目应用

    • 在实际项目中应用SQL函数,解决实际问题。
    • 通过项目实践来加深对函数的理解和掌握。
  7. 定期复习

    • 定期复习所学知识,巩固记忆。
    • 随着学习的深入,不断回顾和练习,以保持对函数的熟悉。

也可以通过某些工具提问,表明自己的需求应该使用什么函数能提高运行效率,通过他的回答和结合自己所学来实现代码需求。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值