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

我在广州学 Mysql 系列——有关 Mysql 函数的练习

ℹ️大家好,我是LXJ,通过Mysql各种函数的相关学习,本文将通过一些练习来巩固Mysql的函数~~
明天就冬至啦,提前大家冬至快乐!!“差不多冬至,一早一晚还是有雨”~
复习:👉《Mysql函数的介绍和使用方式》
同时,数据库相关内容查看专栏👉【数据库专栏】~
了解更多内容请点击我的主页 “【练小杰的CSDN】”

在这里插入图片描述

文章目录

  • 前言
  • 使用数学函数`RAND()`生成3个10以内的随机整数
  • 使用`SIN(),COS(),TAN(),COT()`函数计算三角函数值,并将计算结果转换成整数值
  • 创建表,并使用字符串和日期函数,对字段值进行操作
    • 创建表lxj
    • 插入一条记录
    • 返回m_FN的长度,返回第1条记录中人的全名,将m_info字段值转换成小写字母,将m_info的值反向输出
    • 计算第一条记录中人的年龄,并计算m_birth字段中的值在那一年中的位置,按照“January 1st, 2001”格式输出时间值
    • 插入一条新的记录,m_FN值为“蒙奇·D”,m_LN值为“路飞”,m_birth值为系统当前时间,m_info为空。使用LAST_INSERT_ID()查看最后插入的ID值
  • 使用CASE进行条件判断
  • 利用STRCMP函数比较字符串大小
  • 使用FIND_IN_SET()函数返回子字符串在字符串列表中的位置
  • SHOW PROCESSLIST命令输出当前用户的连接信息
  • PASSWORD函数加密密码
  • CONVERT()函数改变字符串的默认字符集
  • 使用CAST和CONVERT函数进行数据类型的转换

在这里插入图片描述

前言

本文的目的是通过mysql相关函数的练习,使用各种函数操作数据,掌握各种函数的作用和使用方法。
温馨提醒:要先了解👉《mysql函数介绍和使用方式》
以下命令都是在【MySQL在线运行】在线网站运行测试的~~

使用数学函数RAND()生成3个10以内的随机整数

  • RAND()函数生成的随机数在0~1 之间,要生成0~10之间的随机数,RAND()需要乘以10,如果要求是整数,则还必须舍去结果的小数部分。

  • 在这里使用ROUND()函数,结果如下:

SELECT ROUND(RAND() * 10),  ROUND(RAND() * 10), ROUND(RAND() * 10); 
+----------------------------+-------------------------------+----------------------------+
| ROUND(RAND() * 10) | ROUND(RAND() * 10) | ROUND(RAND() * 10) |
+----------------------------+-------------------------------+----------------------------+
|                  2 |                    6 |                   5 |
+----------------------------+--------------------------------+----------------------------+ 
1 row in set (0.01 sec)

使用SIN(),COS(),TAN(),COT()函数计算三角函数值,并将计算结果转换成整数值

  • MySQL中三角函数计算出来的值并不一定是整数值,需要使用数学函数将其转换为整数,可以使用的数学函数有ROUND(),FLOOR() 等。

  • 结果如下:

 SELECT PI(), sin(PI()/2),cos(PI()), ROUND(tan(PI()/4)), FLOOR(cot(PI()/4));
+-----------+-------------+-----------+-------------------------+--------------------------+
| PI()     | sin(PI()/2) | cos(PI()) | ROUND(tan(PI()/4)) | FLOOR(cot(PI()/4)) |
+-----------+-------------+-----------+-------------------------+--------------------------+
| 3.141593 |        1 |      -1 |                1 |                1 |
+-----------+-------------+-----------+-------------------------+--------------------------+

创建表,并使用字符串和日期函数,对字段值进行操作

  • 操作内容:
  1. 创建表lxj ,其中包含3个字段,分别为AUTO_INCREMENT约束的m_id字段,VARCHAR类型的m_FN字段,VARCHAR类型的m_LN字段,DATETIME类型的m_birth字段和VARCHAR类型的m_info字段。
  2. 插入一条记录,m_id值为默认,m_FN值为“Xiaojie”,m_LN值为“Lian”,m_birth值为2001-01-01,m_info值为“GoodMan”。
  3. 返回m_FN的长度,返回第一条记录中的人的全名,将m_info字段值转换成小写字母。将m_info的值反向输出。
  4. 计算第一条记录中人的年龄,并计算m_birth字段中的值在那一年中的位置,按照“ Monday 1st January 2001 ”格式输出时间值。
  5. 插入一条新的记录,m_FN值为“蒙奇·D”,m_LN值为“路飞”,m_birth值为系统当前时间,m_info为空。使用LAST_INSERT_ID()查看最后插入的ID值。

创建表lxj

  • 执行结果如下
 CREATE TABLE lxj(m_id    INT AUTO_INCREMENT PRIMARY KEY,m_FN   VARCHAR(100),m_LN   VARCHAR(100),m_birth  DATETIME,m_info   VARCHAR(255) NULL);
Query OK, 0 rows affected (0.01 sec)

插入一条记录

  • 输入语句如下
INSERT INTO lxj VALUES (NULL, 'Xiaojie', 'Lian', '2001-01-01', 'GoodMan');
  • 使用SELECT语句查看插入结果
 SELECT * FROM  lxj;
+------+----------+--------+-------------------------+--------------+
| m_id | m_FN  | m_LN | m_birth           | m_info   |
+------+----------+--------+-------------------------+--------------+
|    1 | Xiaojie  | Lian | 2001-01-01 00:00:00 | GoodMan |
+------+----------+--------+-------------------------+--------------+
1 row in set (0.00 sec)

返回m_FN的长度,返回第1条记录中人的全名,将m_info字段值转换成小写字母,将m_info的值反向输出

SELECT LENGTH(m_FN), CONCAT(m_FN, m_LN), LOWER(m_info), REVERSE(m_info) FROM lxj;

执行结果如下:

SELECT LENGTH(m_FN), CONCAT(m_FN, m_LN), LOWER(m_info), REVERSE(m_info) FROM lxj;
+--------------+--------------------+---------------+-----------------+
| LENGTH(m_FN) | CONCAT(m_FN, m_LN) | LOWER(m_info) | REVERSE(m_info) |
+--------------+--------------------+---------------+-----------------+
|            7 | XiaojieLian        | goodman       | naMdooG         |
+--------------+--------------------+---------------+-----------------+

计算第一条记录中人的年龄,并计算m_birth字段中的值在那一年中的位置,按照“January 1st, 2001”格式输出时间值

SELECT YEAR(CURDATE())-YEAR(m_birth) AS age, DAYOFYEAR(m_birth) AS days, DATE_FORMAT(m_birth, '%W %D %M %Y') AS birthDate FROM lxj;

语句执行结果如下:

 SELECT YEAR(CURDATE())-YEAR(m_birth) AS age,DAYOFYEAR(m_birth) AS days,DATE_FORMAT(m_birth, '%W %D %M %Y') AS birthDateFROM lxj;
+------+------+-------------------------+
| age  | days | birthDate               |
+------+------+-------------------------+
|   23 |    1 | Monday 1st January 2001 |
+------+------+-------------------------+

插入一条新的记录,m_FN值为“蒙奇·D”,m_LN值为“路飞”,m_birth值为系统当前时间,m_info为空。使用LAST_INSERT_ID()查看最后插入的ID值

INSERT INTO lxj  VALUES (NULL, '蒙奇·D', '路飞', NOW(),NULL);

结果如下:

INSERT INTO lxj VALUES (NULL, '蒙奇·D', '路飞', NOW(),NULL);
Query OK, 1 row affected (0.00 sec)

使用SELECT语句查看插入结果:

SELECT * FROM lxj;
+------+-----------+--------+---------------------+---------+
| m_id | m_FN      | m_LN   | m_birth             | m_info  |
+------+-----------+--------+---------------------+---------+
|    1 | Xiaojie   | Lian   | 2001-01-01 00:00:00 | GoodMan |
|    2 | 蒙奇·D    | 路飞  |  2024-12-20 18:39:09 | NULL    |
+------+-----------+--------+---------------------+---------+

可以看到,表中现在有两条记录,接下来使用LAST_INSERT_ID()函数查看最后插入的ID值

  • 查询结果如下:
SELECT LAST_INSERT_ID();
+--------------------------+
| LAST_INSERT_ID() |
+--------------------------+
|                 2 |
+--------------------------+
1 row in set (0.00 sec)

最后插入的为第二条记录,其ID值为2,因此返回值为2

使用CASE进行条件判断

如果m_birth小于2000年,显示“old”;如果m_birth大于2000年,则显示“young”

  • 查询语句如下:
 SELECT m_birth, CASE WHEN YEAR(m_birth) < 2000  THEN  'old'WHEN YEAR(m_birth)  2000 THEN  'young'ELSE 'not born' END AS status FROM lxj;

运行结果:

+-------------------------+---------+
| m_birth           | status  |
+-------------------------+---------+
| 2001-01-01 00:00:00 | young   |
| 2024-12-20 18:50:09 | young  |
+-------------------------+----------+
2 rows in set (0.00 sec)

利用STRCMP函数比较字符串大小

  • 执行命令语句
SELECT STRCMP('txt', 'txt2'),STRCMP('txt2', 'txt'), STRCMP('lxj', 'txt');
  • 查询结果
+-----------------------+-----------------------+----------------------+
| STRCMP('txt', 'txt2') | STRCMP('txt2', 'txt') | STRCMP('lxj', 'txt') |
+-----------------------+-----------------------+----------------------+
|                    -1 |                     1 |                   -1 |
+-----------------------+-----------------------+----------------------+

使用FIND_IN_SET()函数返回子字符串在字符串列表中的位置

  • 执行命令语句
SELECT FIELD('Hi', 'lxj', 'Hey', 'Hi', 'bas') as col1,FIELD('Hi', 'Hey', 'Lo', 'Hilo',  'foo') as col2;
  • 查询结果
+------+------+
| col1 | col2 |
+------+------+
|    3 |    0 |
+------+------+

SHOW PROCESSLIST命令输出当前用户的连接信息

  • 执行命令
SHOW PROCESSLIST;
  • 查询结果
+----+------+-----------+------+---------+------+----------+------------------+
| Id | User | Host      | db   | Command | Time | State    | Info             |
+----+------+-----------+------+---------+------+----------+------------------+
|  4 | root | localhost | test | Query   |    0 | starting | SHOW PROCESSLIST |
+----+------+-----------+------+---------+------+----------+------------------+

PASSWORD函数加密密码

  • 执行命令
SELECT PASSWORD('123456');
  • 查询结果
+-------------------------------------------+
| PASSWORD('123456')                        |
+-------------------------------------------+
| *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-------------------------------------------+

CONVERT()函数改变字符串的默认字符集

  • 输入语句如下
 SELECT CHARSET('string'),  CHARSET(CONVERT('string' USING latin1));
  • 运行结果
+-------------------+-----------------------------------------+
| CHARSET('string') | CHARSET(CONVERT('string' USING latin1)) |
+-------------------+-----------------------------------------+
| utf8              | latin1                                  |
+-------------------+-----------------------------------------+

使用CAST和CONVERT函数进行数据类型的转换

  • 输入语句如下
SELECT CAST(100 AS CHAR(2)), CONVERT('2024-12-20 18:12:12',TIME);
  • 运行结果

CAST 函数将整数 100 转换为 CHAR(2) 类型,而且 CHAR(2) 表示一个长度为 2 个字符串,只保留前两个字符,即 “10”
CONVERT 函数将一个日期时间字符串 ‘2024-12-20 18:12:12’ 转换为 TIME 类型,返回结果是一个时间值 18:12:12

+----------------------+-------------------------------------+
| CAST(100 AS CHAR(2)) | CONVERT('2024-12-20 18:12:12',TIME) |
+----------------------+-------------------------------------+
| 10                   | 18:12:12                            |
+----------------------+-------------------------------------+

本文有关mysql函数的练习题部分已经总结完,冬至快乐啦,下周见!!!
😆想要了解更多内容请点击“练小杰的CSDN”
ℹ️欢迎各位在评论区踊跃讨论,积极提出问题,解决困惑!!!

在这里插入图片描述


http://www.mrgr.cn/news/80920.html

相关文章:

  • Mysql语法之DQL查询的多行函数
  • Linux文件属性 -- 查看文件命令
  • jvm符号引用和直接引用
  • 操作系统如何管理进程所用的资源
  • 编译原理复习---正则表达式+有穷自动机
  • 机器学习探索之旅:开启智能预测的新篇章!!! 笔记 ! ! !)
  • UE5 移植Editor或Developer模块到Runtime
  • *【每日一题 基础题】 [蓝桥杯 2024 省 B] 好数
  • FFmpeg库之ffplay
  • 2024.2 ACM Explainability for Large Language Models: A Survey
  • 计算机组成原理的学习笔记(2)--数据表示与运算·其二 逻辑门和加减乘
  • 细说STM32F407单片机轮询方式读写SPI FLASH W25Q16BV
  • 微信小程序的轮播图学习报告
  • UDP系统控制器_音量控制、电脑关机、文件打开、PPT演示、任务栏自动隐藏
  • JS子页面调用父页面函数,监听刷新事件
  • Spring学习之——Sping-XML
  • Linux文件:动静态库制作 动态库链接原理解析
  • 深度学习中,用损失的均值或者总和反向传播的区别
  • 以腾讯混元模型为例,在管理平台上集成一个智能助手
  • 黑马Java面试教程_P8_并发编程