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

MySQL(B站CodeWithMosh)——2024.10.10(13)

ZZZZZZ目的
ZZZZZZ代码
ZZZZZZ重点
ZZZZZZ操作(非代码,需要自己手动)

2- 字符串函数 | String Functions_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=56&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. LENGTH:得到字符串中的字符数
    SELECT LENGTH('sky')

    输出为3
  2. UPPER:将字符串转化成大写
    LOWER:将字符串转成小写

    SELECT UPPER('sky')

    输出SKY
    SELECT LOWER('Sky')
    输出sky
  3. LTRIM:移除左侧的空白字符或其他自定义字符
    SELECT LTRIM('    Sky')

    输出Sky
    RTRIM:移除右侧的空白字符或其他自定义字符
    SELECT LTRIM('Sky    ')
    输出Sky
    TRIM:删除前面或者后面的空格
    SELECT TRIM('     Sky    ')
    输出Sky
  4. LEFT:返回左侧的几个字符
    RIGHT:返回右侧的几个字符

    SELECT LEFT('Kindergarden', 4)
    输出Kind
    SELECT LEFT('Kindergarden', 4)
    输出rten
  5. SUBSTRING:得到一个字符串中任何位置的字符
    SELECT SUBSTRING('Kindergarden', 3, 5)
    输出nderg,代码中的3代表从第三个开始,代码中的5表示输出5个字符,如果只填写一个3,表示输出从第三个开始后的所有字符
  6. LOCATE:返回第一个字符或者一串字符串匹配位置
    SELECT LOCATE('n','Kindergarden')
    输出为3,无论是输入大写还是小写,结果都是一样的,这个LOCATE查找不区分大小写
    SELECT LOCATE('Q','Kindergarden')
    输出为0
    SELECT LOCATE('garden','Kindergarden')
    输出为7
  7. REPLACE:替换一个字符或者一串字符
    SELECT REPLACE('Kindergarten', 'garten', 'garden')
    输出为Kindergarden,将garten换为garden
  8. CONCAT:串联两个字符串
    SELECT CONCAT('first', 'last')
    输出firstlast
    将sql_store表中的first_name和last_name连接起来,中间要用空格隔开
    USE sql_store;
    SELECT CONCAT(first_name, ' ', last_name)
    FROM customers

    以上是常见的函数,想要更多函数可以在网上搜索MySQL String Functions

3- MySQL中的日期函数 | Date Functions in MySQL_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=57&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1.  NOW:输出现在电脑上的时间,具体到几分几秒
    SELECT NOW()
    输出为2024-10-10 19:35:18
    CURDATE:Current Date缩写,输出电脑上的年月日
    SELECT CURDATE()
    输出为2024-10-10
    CURTIME:Current Time缩写,输出电脑上的时分秒
    SELECT CURTIME()
    输出为19:38:56
  2. YEAR、MONTH、DAY、HOUR、MINUTE、SECOND分别可以获取特定的年、月、日、时、分和秒
    SELECT YEAR(CURTIME()), MONTH(CURTIME()), DAY(CURTIME()),
           HOUR(CURTIME()), MINUTE(CURTIME()), SECOND(CURTIME())

    输出分别为2024,10,10,19,42,23
    DAYNAME、MONTHNAME:获取字符串格式的星期数和月数
    SELECT DAYNAME(CURTIME()), MONTHNAME(CURTIME())

    输出为Thursday,October
  3. EXTRACT:想要把代码录入别的DBMS,最好用EXTRACT函数
    SELECT EXTRACT(YEAR FROM NOW()), EXTRACT(MONTH FROM NOW()), EXTRACT(DAY FROM NOW())
    输出为2024,0,0

【练习题】
输出sql_store中当年的订单

USE sql_store;
SELECT *
FROM orders
WHERE YEAR(order_date) = YEAR(NOW())

思路是获取订单日期的年份,然后获取现在的年份,将两者进行对比,输出两者相等的订单

4- 格式化日期和时间 | Formatting Dates and Times_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=58&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. DATE_FORMATE:输出符合某种格式的时间,需要用日期值和格式字符串
    %y:返回两位数的年
    %Y:返回四位数的年
    %m:返回数字月
    %M:返回应为单词月
    %d:返回日

    SELECT DATE_FORMAT(NOW(), '%M %y')
    输出为October 24
    其他的时间函数可以在网上搜索Mysql Date Format String

5- 计算日期和时间 | Calculating Dates and Times_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=59&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. DATE_ADD:给日期添加时间
    SELECT DATE_ADD(NOW(), INTERVAL 1 DAY)
    输出为2024-10-11 20:12:35
    SELECT DATE_ADD(NOW(), INTERVAL -1 DAY)
    输出为2024-10-09 20:12:45
  2. DATE_SUB:在一个日期时间值上减去日期部分
    SELECT DATE_SUB(NOW(), INTERVAL 1 DAY)
    输出为2024-10-09 20:13:45
  3. DATEDIFF:计算两个日期的间隔
    SELECT DATEDIFF('2019-01-05 09:00', '2019-01-01 17:00')
    输出为4,注意DATEDIFF只返回天数,不返回小时什么的
    SELECT DATEDIFF('2019-01-01 17:00', '2019-01-05 09:00')
    输出为-4
  4. TIME_TO_SEC:返回从零点计算的秒数
    SELECT TIME_TO_SEC('09:00')
    输出为32400
    SELECT TIME_TO_SEC('09:00') - TIME_TO_SEC('09:02')
    输出为-120

6- IFNULL和COALESCE函数 | The IFNULL and COALESCE Functions_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=60&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. 在sql_store中,输出没有shipper_id的订单,并将NULL改为Not assigned,并把这一列改名为shipper
    SELECT order_id, IFNULL(shipper_id, 'Not assigned') AS shipper 
    FROM orders
  2. 在sql_store中,输出没有shipper_id的订单。如果有该订单有注释(comments),则用注释来代替NULL,如果没有,那么用Not assigned来代替
    SELECT order_id, COALESCE(shipper_id, comments, 'Not assigned') AS shipper 
    FROM orders

【练习题】
输出下面的图片


SELECT CONCAT(first_name, ' ', last_name) AS customer, I
                                FNULL(phone, 'Unknown') AS phone
FROM customers

7- IF函数 | The IF Function_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=61&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. IF(expression, first, second)IF函数可以输入一个测试用的表达式expression,如果这个表达式被判为真,则返回first这个位置的值,否则返回second这个位置的值,first和second这里可以是任何值,可以是NULL,空值什么的
  2. 根据orders表格,将里面所有的订单旁边都有一个标签”status“,如果订单是今年的,就叫active(活跃的),如果是以前的,就叫archived(存档),并输出订单id,订单日期和status
    SELECT order_id, order_date, IF(YEAR(NOW()) = YEAR(order_date), 'active', 'archived') AS status
    FROM orders

【练习题】
输出下面的图片,其中,orders是每个订单的产品数,frequency是根据orders决定的,如果某个产品被多次订购,那么就是Many times,如果不是。那就输出Once


SELECT p.product_id AS product_id, name, COUNT(o.order_id) AS orders,
               IF(COUNT(o.order_id) = 1, 'Once', 'Many times') AS frequency
FROM products p
JOIN order_items o USING (product_id)
GROUP BY p.product_id

这里IF后面不能用SELECT orders,个人认为是因为SELECT orders返回的是一个根据GROUP BY的分组值,而不是一个值


http://www.kler.cn/news/342474.html

相关文章:

  • adum1201数字隔离器中文资料与应用
  • TY1801 内置GaN电源芯片(18w-65w)
  • 『网络游戏』客户端发送消息到服务器【17】
  • [单master节点k8s部署]34.ingress 反向代理(一)
  • 遍历有向图链路(DFS算法)- 优化版
  • 充电宝租赁管理系统网站毕业设计SpringBootSSM框架开发
  • 为网站筑起坚固防线,应对HTTP/2快速重置DDoS威胁
  • jdk多版本来回切换不生效
  • Python爬虫(四)正则表达式(Regular Expressions for Python Crawlers)
  • ES6 WeakMap 详解
  • 做一只由 OpenCV 控制的仿生手
  • 算法笔记(十五)——BFS 解决拓扑排序
  • GRU--详解
  • 大数据-161 Apache Kylin 构建Cube 按照日期、区域、产品、渠道 与 Cube 优化
  • Visual Studio 2022安装(含重生版)
  • <Project-6 pdf2tx> Python Flask 应用:图片PDF图书的中文翻译解决方案
  • 《常见 HTML 标签和属性全解析》
  • Java函数式LongBinaryOperator接口介绍、应用场景和示例代码
  • 在 Marketo 中进行批量数据导出
  • HCIP-HarmonyOS Application Developer 习题(七)