15 MySQL 系统函数及聚合函数

本文详细介绍了MySQL中的系统信息函数,如version(), connection_id(), database(), user(), md5(), password()等,并通过实例展示了如何使用这些函数。此外,还深入探讨了常用的聚合函数,包括avg(), count(), max(), min(), sum(),并提供了具体的应用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统信息函数

函数名/说明应用实例
version()
返回当前MySQL服务器版本
select version();
- - 返回: 8.0.18
connection_id()
MySQL服务器当前连接次数,
各连接都有唯一 id
select connection_id();
- - 返回:18
database() 和 schema()
返回当前数据库名
select database();
- - 返回: booksys
user()
返回当前登录的用户名
select user();
- - 返回:root@localhost
md5(str)
返回 32位字符串
以16进制数二进制加密;
若str为null 则返回null
select md5(‘test1’);
- -结果 5a105e8b9d40e1329780d62ea2265d8a
select md5(‘test2’);
- -结果 ad0234829205b9033196ba818f7a872b
password(str)
返回加密后的密码字符串;
若str为null 则返回null
- - 老师课程涉及此函数,但测试发现有错误
示例:md5 加密/ 验证
create table tabUser(
	userName varchar(16),
	pwd varchar(32)
);	-- 创建tabUser数据表;

insert into tabUser values('test', md5('testpwd')), ('test2', md5('testpwd2')), ('test3', md5('testpwd3'));
--插入3条 用户信息:test~test3的用户名及密码;

执行结果:

mysql> create table tabUser(
    ->  userName varchar(16),
    ->  pwd varchar(32)
    -> );
Query OK, 0 rows affected (0.32 sec)

mysql> insert into tabUser values('test', md5('testpwd')),('test2', md5('testpwd2')),('test3', md5('testpwd3'));
Query OK, 3 rows affected (0.12 sec)
Records: 3  Duplicates: 0  Warnings: 0

以查询 select 查询语句查询/验证:

select * from tabUser; 
-- 可查询全部用户名及密码
select * from tabUser where userName='test' and password=md5('pwd'); 
-- 错误密码验证
select * from tabUser where userName='test2' and password=md5('testpwd2');
-- 正确密码验证

执行结果:

mysql> select * from tabUser;
+----------+----------------------------------+
| userName | pwd                              |
+----------+----------------------------------+
| test     | 342df5b036b2f28184536820af6d1caf |
| test2    | 54ea9cd5119e518beaf0525885ac2875 |
| test3    | 9478af7f2f6205a633e0849ea5094bca |
+----------+----------------------------------+
3 rows in set (0.00 sec)

mysql> select * from tabUser where userName='test' and password=md5('pwd');
Empty set (0.05 sec)

mysql> select * from tabUser where userName='test2' and password=md5('testpwd2');
+----------+----------------------------------+
| userName | pwd                              |
+----------+----------------------------------+
| test2    | 54ea9cd5119e518beaf0525885ac2875 |
+----------+----------------------------------+
1 row in set (0.00 sec)

常用聚合函数

函数名说明
avg(col)返回col列的平均值
count(col)返回col列的行数
max(col)返回col列的最大值
min(col)返回col列的最小值
sum(col)返回col列的求和

应用示例:

alter table tabUser add balance int; --为tabUser表 先插入balance列
-- 再更新test/ test2/ test3用户的余额balance列
update tabUser set balance=100 where userName='test';
update tabUser set balance=200 where userName='test2';
update tabUser set balance=300 where userName='test3';
--再测试以下SQL语句:
select avg(balance) from tabUser; 	-- 200
select count(balance) from tabUser;	-- 3
select max(balance) from tabUser; 	-- 300
select min(balance) from tabUser; 	-- 100
select sum(balance) from tabUser; 	-- 600
mysql> select * from tabUser;
+----------+----------------------------------+---------+
| userName | password                         | balance |
+----------+----------------------------------+---------+
| test     | 342df5b036b2f28184536820af6d1caf |     100 |
| test2    | 54ea9cd5119e518beaf0525885ac2875 |     200 |
| test3    | 9478af7f2f6205a633e0849ea5094bca |     300 |
+----------+----------------------------------+---------+
3 rows in set (0.00 sec)

1 测试SQL语句:select avg(balance) from tabUser;

mysql> select avg(balance) from tabUser;
+--------------+
| avg(balance) |
+--------------+
|     200.0000 |
+--------------+
1 row in set (0.09 sec)

2 测试SQL语句:select count(balance) from tabUser;

mysql> select count(balance) from tabUser;
+----------------+
| count(balance) |
+----------------+
|              3 |
+----------------+
1 row in set (0.00 sec)

3 测试SQL语句:select max(balance) from tabUser;

mysql> select max(balance) from tabUser;
+--------------+
| max(balance) |
+--------------+
|          300 |
+--------------+
1 row in set (0.06 sec)

4 测试SQL语句:select min(balance) from tabUser;

mysql> select min(balance) from tabUser;
+--------------+
| min(balance) |
+--------------+
|          100 |
+--------------+
1 row in set (0.00 sec)

5 测试SQL语句:select sum(balance) from tabUser;

mysql> select sum(balance) from tabUser;
+--------------+
| sum(balance) |
+--------------+
|          600 |
+--------------+
1 row in set (0.00 sec)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值