一、mysql函数简介
MySQL是一种关系型数据库管理系统,它提供了一组内置函数,用于处理和操作数据库中的数据。这些函数可以用于查询、插入、更新和删除数据,以及执行各种数学、字符串和日期操作。函数一般是在数据上执行的,它给数据的转换和处理提供了方便。博文将在mysql5.7.26版下创建一个test数据库,一张goods表为例,介绍各函数的使用。
mysql >CREATE TABLE goods (
ID INT AUTO_INCREMENT PRIMARY KEY,
goods_name VARCHAR(255),
goods_price DECIMAL(10, 2),
goods_num INT,
goods_description TEXT
);
mysql> INSERT INTO goods (goods_name, goods_price, goods_num, goods_description) VALUES
-> (‘desk’, 10.00, 5, ‘这是商品1的描述’),
-> (‘book’, 20.00, 3, ‘这是商品2的描述’),
-> (‘papper’, 30.00, 7, ‘这是商品3的描述’),
-> (‘cup’, 40.00, 2, ‘这是商品4的描述’),
-> (‘apple’, 50.00, 8, ‘这是商品5的描述’),
-> (‘bag’, 60.00, 4, ‘这是商品6的描述’),
-> (‘mouse’, 70.00, 6, ‘这是商品7的描述’),
-> (‘pen’, 80.00, 9, ‘这是商品8的描述’),
-> (‘lunch_box’, 90.00, 1, ‘这是商品9的描述’),
-> (‘bench’, 100.00, 10, ‘这是商品10的描述’);
Query OK, 10 rows affected (0.07 sec)
Records: 10 Duplicates: 0 Warnings: 0
————————————————
获取当前日期和时间
mysql> select now();
±--------------------+
| now() |
±--------------------+
| 2023-07-27 11:17:58 |
±--------------------+
1 row in set (0.00 sec)
获取当前日期
mysql> select curdate();
±-----------+
| curdate() |
±-----------+
| 2023-07-27 |
±-----------+
1 row in set (0.00 sec)
获取当前时间
mysql> select curtime();
±----------+
| curtime() |
±----------+
| 11:20:26 |
±----------+
1 row in set (0.00 sec)
返回时间的日期部分
mysql> select date(now());
±------------+
| date(now()) |
±------------+
| 2023-07-27 |
±------------+
1 row in set (0.00 sec)
#date()函数常用于处理时间字段,时间字段包含日期和时间时,如果需要进行分组或者排序需要进行提取时间字段中的部分信息就可以使用,我们还可以提前其中的年份、月份、日期、时、分、秒等。
某日期增加一个天数或者星期
mysql> select adddate(‘2023-05-01’,interval 30 day);
±--------------------------------------+
| adddate(‘2023-05-01’,interval 30 day) |
±--------------------------------------+
| 2023-05-31 |
±--------------------------------------+
1 row in set (0.00 sec)
计算两个日期相差天数
mysql> select datediff(‘1986-06-01’,‘2023-07-27’);
±------------------------------------+
| datediff(‘1986-06-01’,‘2023-07-27’) |
±------------------------------------+
| -13570 |
±------------------------------------+
1 row in set (0.00 sec)
3、数值处理函数
数值处理函数仅处理数值数据。这些函数一般主要用于代数、三角或几何运算,因此没有串或日期—时间处理函数的使用那么频繁。在各类数据库管理系统中,数值函数基本是上一样的。
————————————————
返回一个随机数
mysql> select rand();
±-------------------+
| rand() |
±-------------------+
| 0.7540961585511418 |
±-------------------+
1 row in set (0.00 sec)
获取圆周率
mysql> select pi();
±---------+
| pi() |
±---------+
| 3.141593 |
±---------+
1 row in set (0.00 sec)
计算90度的正弦值
mysql> select sin(RADIANS(90));
±-----------------+
| sin(RADIANS(90)) |
±-----------------+
| 1 |
±-----------------+
1 row in set (0.00 sec)
计算9的平方根
mysql> select sqrt(9);
±--------+
| sqrt(9) |
±--------+
| 3 |
±--------+
1 row in set (0.00 sec)
查询商品表中剩余偶数件的商品
mysql> select goods_name,goods_num from goods where mod(goods_num,2)=0;
±-----------±----------+
| goods_name | goods_num |
±-----------±----------+
| cup | 2 |
| apple | 8 |
| bag | 4 |
| mouse | 6 |
| bench | 10 |
±-----------±----------+
5 rows in set (0.00 sec)
三、数据汇总函数使用示例
我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提供了专门的函数。使用这些函数,MySQL查询可用于检索数据,以便分析和报表生成。
函数 说明
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值之和
求商品价格的平均值
mysql> select avg(goods_price) from goods;
±-----------------+
| avg(goods_price) |
±-----------------+
| 55.000000 |
±-----------------+
1 row in set (0.01 sec)
统计商品的数量
mysql> select count() from goods;
±---------+
| count() |
±---------+
| 10 |
±---------+
1 row in set (0.00 sec)
查找单价最高的商品
mysql> select goods_name,goods_price from goods where goods_price in (select max(goods_price) from goods);
±-----------±------------+
| goods_name | goods_price |
±-----------±------------+
| bench | 100.00 |
±-----------±------------+
1 row in set (0.00 sec)
查找剩余数量最少的商品
mysql> select goods_name,goods_num from goods where goods_num in (select min(goods_num) from goods);
±-----------±----------+
| goods_name | goods_num |
±-----------±----------+
| lunch_box | 1 |
±-----------±----------+
1 row in set (0.00 sec)
计算商品销售总计可以获得的金额
mysql> select sum(goods_price*goods_num) as sum_sale from goods;
±---------+
| sum_sale |
±---------+
| 3270.00 |
±---------+
1 row in set (0.00 sec)
————————————————
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!