【MySQL学习笔记】(七)内置函数

这篇具有很好参考价值的文章主要介绍了【MySQL学习笔记】(七)内置函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

日期函数

【MySQL学习笔记】(七)内置函数,MySQL学习笔记,mysql,学习,笔记

示例

  • 获得当前年月日
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2023-09-03     |
+----------------+
1 row in set (0.00 sec)
  • 获得当前时分秒
mysql> select current_time;
+--------------+
| current_time |
+--------------+
| 09:20:15     |
+--------------+
1 row in set (0.00 sec)

  • 获得当前时间戳

mysql中该函数会自动将时间戳转化为年月日时分秒的格式

mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2023-09-03 09:20:49 |
+---------------------+
1 row in set (0.00 sec)
  • date(datetime),返回 datetime 参数中的日期部分(年月日部分)
mysql> select date(current_date());
+----------------------+
| date(current_date()) |
+----------------------+
| 2023-09-03           |
+----------------------+
1 row in set (0.00 sec)

//虽然currnt_time()获得的只有时分秒时间,但该函数内部获得时间的时候是可以获得日期(年月日)的
mysql> select date(current_time());
+----------------------+
| date(current_time()) |
+----------------------+
| 2023-09-03           |
+----------------------+
1 row in set (0.00 sec)

mysql> select date(current_timestamp());
+---------------------------+
| date(current_timestamp()) |
+---------------------------+
| 2023-09-03                |
+---------------------------+
1 row in set (0.00 sec)
  • 在日期的基础上加上日期
//在 2023-9-3 的基础上加上 50 天
mysql> select date_add('2023-9-3',interval 50 day);
+--------------------------------------+
| date_add('2023-9-3',interval 50 day) |
+--------------------------------------+
| 2023-10-23                           |
+--------------------------------------+
1 row in set (0.00 sec)
  • 在日期的基础上减去日期
//在 2023-10-23 的基础上减去 50 天
mysql> select date_sub('2023-10-23',interval 50 day);
+----------------------------------------+
| date_sub('2023-10-23',interval 50 day) |
+----------------------------------------+
| 2023-09-03                             |
+----------------------------------------+
1 row in set (0.00 sec)

  • 计算两个日期相差多少天
mysql> select datediff('2023-9-3','2023-10-23');
+-----------------------------------+
| datediff('2023-9-3','2023-10-23') |
+-----------------------------------+
|                               -50 |
+-----------------------------------+
1 row in set (0.00 sec)

案例-1

  • 创建一张表,记录生日
mysql> create table tmp (id int primary key auto_increment,birthday date not null);
Query OK, 0 rows affected (0.01 sec)

mysql> desc tmp;
+----------+---------+------+-----+---------+----------------+
| Field    | Type    | Null | Key | Default | Extra          |
+----------+---------+------+-----+---------+----------------+
| id       | int(11) | NO   | PRI | NULL    | auto_increment |
| birthday | date    | NO   |     | NULL    |                |
+----------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

  • 添加当前日期
mysql> insert into tmp(birthday) values(current_date());
Query OK, 1 row affected (0.00 sec)

mysql> select* from tmp;
+----+------------+
| id | birthday   |
+----+------------+
|  1 | 2023-09-03 |
+----+------------+
1 row in set (0.00 sec)

案例-2

  • 创建一个留言表
mysql> create table msg(id int primary key auto_increment,content varchar(30) not null,sendtime datetime);
Query OK, 0 rows affected (0.01 sec)

mysql> desc msg;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| content  | varchar(30) | NO   |     | NULL    |                |
| sendtime | datetime    | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
  • 插入数据
mysql> insert into msg(content,sendtime) values('hello',now());
Query OK, 1 row affected (0.00 sec)

mysql> insert into msg(content,sendtime) values('hi',now());
Query OK, 1 row affected (0.00 sec)

mysql> select* from msg;
+----+---------+---------------------+
| id | content | sendtime            |
+----+---------+---------------------+
|  1 | hello   | 2023-09-03 09:48:45 |
|  2 | hi      | 2023-09-03 09:48:52 |
+----+---------+---------------------+
2 rows in set (0.00 sec)
  • 显示所有留言信息,发布日期只显示到年月日,不用显示具体时间
mysql> select content ,date(sendtime) from msg;
+---------+----------------+
| content | date(sendtime) |
+---------+----------------+
| hello   | 2023-09-03     |
| hi      | 2023-09-03     |
+---------+----------------+
2 rows in set (0.00 sec)
  • 查询在 10 分钟内发布的帖子
mysql> select* from msg where date_add(sendtime,interval 10 minute) > now();
+----+---------+---------------------+
| id | content | sendtime            |
+----+---------+---------------------+
|  1 | hello   | 2023-09-03 09:48:45 |
|  2 | hi      | 2023-09-03 09:48:52 |
+----+---------+---------------------+
2 rows in set (0.00 sec)
理解:

------------------------------|-----------|-------------|------------------

                           初始时间     now()       初始时间+10min  

字符串函数

【MySQL学习笔记】(七)内置函数,MySQL学习笔记,mysql,学习,笔记

示例

  • 获取表中的某一列的字符集
mysql> select charset(content) from msg;
+------------------+
| charset(content) |
+------------------+
| utf8             |
| utf8             |
+------------------+
2 rows in set (0.00 sec)
  • 字符串连接
mysql> select concat('app','le');
+--------------------+
| concat('app','le') |
+--------------------+
| apple              |
+--------------------+
1 row in set (0.00 sec)
  • 某字符串中是否包含某子串,包含则返回出现的位置,未包含则返回 0
mysql> select instr('apple','ple');
+----------------------+
| instr('apple','ple') |
+----------------------+
|                    3 |
+----------------------+
1 row in set (0.00 sec)

mysql> select instr('apple','b');
+--------------------+
| instr('apple','b') |
+--------------------+
|                  0 |
+--------------------+
1 row in set (0.00 sec)
  • 转换成大写
mysql> select ucase('abcA');
+---------------+
| ucase('abcA') |
+---------------+
| ABCA          |
+---------------+
1 row in set (0.00 sec)
  • 转换成小写
mysql> select lcase('abcA');
+---------------+
| lcase('abcA') |
+---------------+
| abca          |
+---------------+
1 row in set (0.00 sec)
  • 从字符串的左边或者右边起取 length 个字符
mysql> select left('abcdef',2);
+------------------+
| left('abcdef',2) |
+------------------+
| ab               |
+------------------+
1 row in set (0.00 sec)

mysql> select right('abcdef',2);
+-------------------+
| right('abcdef',2) |
+-------------------+
| ef                |
+-------------------+
1 row in set (0.00 sec)
  • 获取字符串的长度
mysql> select length('abc');
+---------------+
| length('abc') |
+---------------+
|             3 |
+---------------+
1 row in set (0.00 sec)

mysql> select length('你好');
+------------------+
| length('你好')   |
+------------------+
|                6 |
+------------------+
1 row in set (0.00 sec)

注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;
如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数
(与字符集编码有关)

  • 在字符串中用某子串替换掉其中的子串
//在 ‘hello world’ 中用 ‘jack’ 替换掉 ‘world’
mysql> select replace('hello world','world','jack');
+---------------------------------------+
| replace('hello world','world','jack') |
+---------------------------------------+
| hello jack                            |
+---------------------------------------+
1 row in set (0.00 sec)
  • 逐字符比较字符串的大小
//第一个字符串小于第二个字符串返回 -1
mysql> select strcmp('abc','abd');
+---------------------+
| strcmp('abc','abd') |
+---------------------+
|                  -1 |
+---------------------+
1 row in set (0.00 sec)

//相等返回 0
mysql> select strcmp('abc','abc');
+---------------------+
| strcmp('abc','abc') |
+---------------------+
|                   0 |
+---------------------+
1 row in set (0.00 sec)

//大于返回 1
mysql> select strcmp('abd','abc');
+---------------------+
| strcmp('abd','abc') |
+---------------------+
|                   1 |
+---------------------+
1 row in set (0.00 sec)
  • 从字符串的第 position 开始,取 length 个字符
//从第一个位置开始取三个字符
mysql> select substring('abcdefg','1',3);
+----------------------------+
| substring('abcdefg','1',3) |
+----------------------------+
| abc                        |
+----------------------------+
1 row in set (0.00 sec)
  • 去除 前空格 / 后空格 / 前后空格
mysql> select '   hello   ' as res;
+-------------+
| res         |
+-------------+
|    hello    |
+-------------+
1 row in set (0.00 sec)

mysql> select ltrim('   hello   ') as res;//去除前空格
+----------+
| res      |
+----------+
| hello    |
+----------+
1 row in set (0.00 sec)

mysql> select rtrim('   hello   ') as res;//去除后空格
+----------+
| res      |
+----------+
|    hello |
+----------+
1 row in set (0.00 sec)

mysql> select trim('   hello   ') as res; //去除前后空格
+-------+
| res   |
+-------+
| hello |
+-------+
1 row in set (0.00 sec)

数学函数

【MySQL学习笔记】(七)内置函数,MySQL学习笔记,mysql,学习,笔记文章来源地址https://www.toymoban.com/news/detail-696417.html

  • 绝对值
mysql> select abs(-100.5);
+-------------+
| abs(-100.5) |
+-------------+
|       100.5 |
+-------------+
1 row in set (0.00 sec)
  • 向上取整
mysql> select ceiling(23.4);
+---------------+
| ceiling(23.4) |
+---------------+
|            24 |
+---------------+
1 row in set (0.00 sec)

  • 向下取整
mysql> select floor(24.7);
+-------------+
| floor(24.7) |
+-------------+
|          24 |
+-------------+
1 row in set (0.00 sec)

  • 保留小数位数
//保留2位小数位数(小数四舍五入)
mysql> select format(12.3456,2);
+-------------------+
| format(12.3456,2) |
+-------------------+
| 12.35             |
+-------------------+
1 row in set (0.00 sec)

  • 产生随机数
mysql> select rand();
+--------------------+
| rand()             |
+--------------------+
| 0.2013088168588549 |
+--------------------+
1 row in set (0.00 sec)

mysql> select rand();
+--------------------+
| rand()             |
+--------------------+
| 0.2613807602425858 |
+--------------------+
1 row in set (0.00 sec)

其他函数

  • user() 查询当前用户
  • md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
  • database()显示当前正在使用的数据库
  • password()函数,MySQL数据库使用该函数对用户加密
  • ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值

到了这里,关于【MySQL学习笔记】(七)内置函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySQL】内置函数

    日期函数 获得年月日: 获得时分秒: 获得时间戳: 同时使用 current_date 和 current_time 就相当于 current_timestamp 在日期的基础上加日期: 在日期的基础上减去时间: 计算两个日期之间相差多少天: 获取时间戳中的日期 创建生日表 创建留言表 字符串函数 查看字符串的字符集

    2024年02月15日
    浏览(36)
  • 《MySQL》内置函数

    函数名称 功能 current_date() 当前日期(yyyy-mm-dd) current_time() 当前时间(hh-mm-ss) current_timestamp() 当前时间戳(yyyy-mm-dd hh-mm-ss) now() 当前日期时间 date(datetime) 返回datetime参数的日期部分 date_add(date, interval d_value_type) 返回date加上d的日期时间,d可以是天、时、分、秒 date_sub(dat

    2024年02月13日
    浏览(40)
  • MySQL学习笔记 ------ 分组函数

    //----------分组函数----------// 1、功能         用作统计使用,又称为聚合函数或统计函数或组函数 2、分类         sum 求和、avg 平均值、max 最大值 、min 最小值 、count 计算个数 3、特点 (1)sum、avg一般用于处理数值型;max、min、count可以处理任何类型; (2)以上分组

    2024年02月15日
    浏览(36)
  • MySQL学习笔记 ------ 常见函数

    //----------常见函数----------//   功能:类似于java中的方法;   好处:提高重用性和隐藏实现细节;   调用:SELECT 函数名(实参列表); 1、字符函数 (1)LENGTH :获取字节个数(utf-8一个汉字代表3个字节,gbk为2个字节) (2)CONCAT :拼接字符串 (3)SUBSTR :截取子串(注意:索引从

    2024年02月15日
    浏览(28)
  • MySQL基本查询与内置函数

    目录 聚合函数  分组查询  内置函数 日期函数 字符串函数 数学函数 COUNT:返回查询到的数据的数量 SUM:返回查询到的数据的总和(数字) AVG:返回数据的平均值 MAX:返回查询到的数据的最大值 MIN:返回查询到的数据的最小值    count    sum    max,avg 准备三个表: 部门

    2024年02月13日
    浏览(38)
  • MySQL数据库:内置函数

    规定:日期:年月日       时间:时分秒 函数名称 作用描述 current_date() 当前日期 current_time() 当前时间 current_timestamp() 当前时间戳 date(datetime) 返回datetime参数的日期部分 date_add(date,interval d_value_type) 在date中添加时间或日期。interval后面可以是year、day、minute、second date_sub(da

    2024年02月11日
    浏览(45)
  • Mysql日期格式及内置日期函数

    MySQL中常用的几种时间类型有:date、datetime、time、year、timestamp datetime和timestamp的区别 相同点 : 存储格式相同 datetime和timestamp 两者的时间格式都是YYYY-MM-DD HH:MM:SS 不同点 : a. 存储范围不同. datetime的范围是1000-01-01到9999-12-31. 而timestamp是从1970-01-01到2038-01-19, 即后者的时间范围很

    2023年04月09日
    浏览(36)
  • MySQL:内置函数、复合查询和内外连接

    select  函数;   实际开发中往往数据来自不同的表,所以需要多表查询。本节我们用一个简单的公司管理系统,有三张 表EMP,DEPT,SALGRADE来演示如何进行多表查询。 如果说 表1有n条记录,表2有m条记录,那么笛卡儿积之后就有n * m条记录。 在实际应用中,为了合并多个select的执

    2024年02月13日
    浏览(61)
  • 学习笔记-mysql-各种函数的基本使用

    count , sum , min , max ,avg , group_concat() (1). if逻辑判断 (2). case when mysql 8.0之后增加的,也称为开窗函数 (1). 序号函数 row_number( ) --排序 1,2,3 rank( ) --排序 1,1,3 dense_rank( ) --排序 1,1,2 另外还有开窗聚合函数:sum avg min max (2). 分布函数 cume_dist() 用途:分组内小于、等于当前rank值的行数

    2024年01月20日
    浏览(45)
  • MySQL学习笔记3——条件查询和聚合函数

    WHERE 和 HAVING 的区别: WHERE是直接对表中的字段进行限定,来筛选结果; HAVING则需要跟分组GROUP BY一起使用,通过对分组字段或分组计算函数进行限定,来筛选结果。 虽然它们都是对查询进行限定,却有着各自的特点和适用场景。 WHERE WHERE的特点是,直接用表的

    2024年04月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包