MYSQL CHAPTER7

1-数值函数|Numerical Functions

  • SELECT ROUND(5.73)得到6
  • SELECT ROUND(5.73,1)得到5.7
  • SELECT TRUNCATE(5.7345,3)得到5.734
  • SELECT CEILING(5.7)会返回大于或等于这个数字的最小整数,即6
  • SELECT FLOOR(5.2)会返回小于或等于这个数字的最大整数,即5
  • SELECT ABS(-5.2)会返回绝对值,即5.2
  • SELECT RAND()用来生成0-1区间的随机浮点数,每次调用这个函数,我们会得到介于0-1之间的随机值

 可以在浏览器上搜索MySQL Numeric Functions来获取更多函数。

2-字符串函数|String Functions

  • SELECT LENGTH('sky')得到3
  • SELECT UPPER('sky')得到SKY
  • SELECT LOWER('Sky')得到sky
  • SELECT LTRIM('    sky')得到sky:LTRIM是LEFT TRIM的缩写
  • SELECT RTRIM('sky    ')得到sky:RTRIM是RIGHT TRIM的缩写
  • SELECT TRIM('    sky  ')得到sky:TRIM会删除所有的前导和尾随空格
  • SELECT LEFT(‘Kindergarden',4)得到Kind:会返回字符串左侧的几个字符
  • SELECT RIGHT(‘Kindergarden',6)得到garden:会返回字符串右侧的几个字符
  • SELECT SUBSTRING('Kindergarden',3,5),可以得到字符串中任何位置的字符,第二个参数是起始位置,第三个参数是长度,得到nderg,如果不写第三个字符,则会返回从起始位置起算到字符串最后的所有字符
  • SELECT LOCATE('n','Kindergarden')得到3
  • SELECT LOCATE('garden','Kindergarden'),得到7:会返回第一个字符或者一串字符匹配位置,,无所谓N是大写还是小写,这个查找不分大小写。如果搜索字符串里没有该字符,得到0
  • SELECT REPLACE('Kindergarten','garten','garden')得到Kindergarden
  • SELECT CONCAT('first','last')得到firstlast

3-MySQL中的日期函数|Date Function in MySQL

  • SELECT NOW()会返回当前的日期和时间,即2023-06-08 09:37:21
  • SELECT CURDATE()会返回当前的日期,即2023-06-08
  • SELECT CURTIME()会返回当前的时间,即09:37:21
  • SELECT YEAR(NOW())得到2023
  • SELECT MONTH(NOW())得到6
  • SELECT HOUR/MINUTE/SECOND(NOW())得到当前的时/分/秒
  • SELECT DAYNAME/MONTHNAME(NOW())得到Thursday/June
  • SELECT EXTRACT(YEAR/MONTH/DAY/SECOND FROM NOW())这个函数是标准SQL语言的一部分,所以如果想要把代码录入别的DBMS,最好用EXTRACT函数。

练习:得到当年下的订单

4-格式化日期和时间|Formatting Dates and Times

  • SELECT DATE_FORMAT(NOW(),'%Y')得到2023
  • SELECT DATE_FORMAT(NOW(),'%y')得到23
  • SELECT DATE_FORMAT(NOW(),'%M')得到June
  • SELECT DATE_FORMAT(NOW(),'%m')得到06
  • SELECT DATE_FORMAT(NOW(),'%d')得到08
  • SELECT DATE_FORMAT(NOW(),'%Y')得到2023
  • SELECT DATE_FORMAT(NOW(),'%M %d %Y')得到June 08 2023

以上为日期函数,时间函数同理

  • SELECT TIME_FORMAT(NOW(),'%H:%i %p')得到10:09 AM

可以在浏览器上搜索MySQL Date Format String获取更多函数

5-计算日期和时间|Calculating Dates and Times

如果我们想在日期的基础上增加一天或一个小时应当怎么做?

  • SELECT DATE_ADD(NOW(),INTERVAL 1 DAY)得到2023-06-09 10:14:52
  • SELECT DATE_ADD(NOW(),INTERVAL 1 YEAR)得到2024-06-08 10:14:52
  • SELECT DATE_ADD(NOW(),INTERVAL -1 YEAR)=SELECT DATE_SUB(NOW(),INTERVAL 1 YEAR)得到2022-06-08 10:14:52

如果我们想计算日期间隔应当怎么做?

  • SELECT DATEDIFF('2019-01-05','2019-01-01')得到4

注意:

如果DATEDIFF后面接的两个日期值对调,则会得到-4

且这个函数只返回天数的间隔,而不是小时或分钟

如果我们想计算时间间隔应当怎么做?

  • SELECT TIME_TO_SEC('09:00')得到32400,这个就是从00:00起流逝的秒数
  • SELECT TIME_TO_SEC('09:00')-TIME_TO_SEC('09:02')得到-120

6-IFNULL和COALESCETHE函数|IFNULL and COALESCE Functions

IFNULL:表中有些order没有shipper_id,现在想让这些空值显示为NOT assigned:

COALESCE:shipper_id是null时,返回comments列的值,而如果comments列的也是null,那就返回NOT assigned:

练习:

7-IF函数|The IF Functions

假设我们想把order表分成两个组别,如果是今年的订单就放在“Active”里,不然就放在“Archived”里。之前学习过用Union运算符合并结果,现在用IF函数(IF(expression,first,last))。

练习:

8-CASE运算符|The CASE Operator

在学完上面的IF之后,如果我们有好几个表达式需要测试怎么办?

练习:

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值