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

我在广州学 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 birthDate
   FROM 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, 'Samuel', 'Green', 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.kler.cn/a/444933.html

相关文章:

  • 拼多多电子面单接入:常见问题及专业解决方案
  • 【Jenkins】pipeline 的基础语法以及快速构建一个 jenkinsfile
  • AFL-Fuzz 的使用
  • COMSOL with Matlab
  • 在Win11系统上安装Android Studio
  • libaom 源码分析:熵编码模块介绍
  • 发送webhook到飞书机器人
  • Kingbase数据库备份还原操作手册
  • 解锁 Jenkins+Ant+Jmeter 自动化框架搭建新思路
  • 【Ubuntu】设置静态Ip
  • HTML5+CSS3+JS制作精美的宠物主题网站(内附源码,含5个页面)
  • 前端之CSS光速入门
  • 在Win11系统上安装Android Studio
  • 【C#】方法参数的修饰符ref 与 out
  • 华纳云:虚拟服务器之间如何分布式运行?
  • PostgreSQL的交互式终端使用一系列命令来获取有关文本搜索配置对象的信息
  • WPF Binding 绑定
  • linux常用命令(touch、cat、less、head、tail)
  • Scala的惰性求值:深入理解与实践
  • 回归预测模型 | LSTM、CNN、Transformer、TCN、串行、并行模型集合
  • 最大子数组和 最大子数组和(有长度限制) 最大m段子数组和
  • windows openssl编译x64版libssl.lib,编译x64版本libcurl.lib,支持https,vs2015编译器
  • 【NVIDIA】启动ubuntu后显卡驱动丢失
  • esp8266_TFTST7735语音识别UI界面虚拟小助手
  • 信号处理相关的东东(学习解惑)
  • 高浓度盐酸除铁的详细介绍