云计算运维第6天

1.三种类型的sql内嵌函数

1.1 数值函数

1.1.1 min()

最小函数,用于查某一列的最小值

select min(age) from user_profile where university='北京大学';

查找北京大学的年纪最小学生

1.1.2 max()

最大函数,用于查某一列的最大值

select max(age) from user_profile where university='北京大学';

查找北京大学的年纪最大学生

1.1.3 round()

保留几位小数,去除小数是采用四舍五入。格式:round(数据值,保留n位小数)

select round(1.666,2);

1.1.4 format()

对数字进行格式化,保留显示几位小数,格式:format(数值,n位小数)

select format(1.66,3);-- 输出1.660

1.1.5 floor()

向下取整数,格式:floor(数值);

无论什么值,都输出小于这个数的最大整数,也就是把小数部分丢弃。

如5.3向下取整为5

1.1.6 ceil()

向上取整数,格式:floor(数值);

无论什么值,都输出小于这个数的最大整数,也就是把小数部分丢弃。

如5.3向上取整为6

1.1.7 mod()

取余,格式为mod(10,3),第一个数为被取余数,第二个为除数,输出结果为余数。

相当于10%3=1;

1.1.8 pow()

指数函数,pow(2,3),相当于2的3次方,为8,第一个数为底数,第二个数为指数。

1.1.9 rand()

rand为随机函数,他会生成0-1直接的随机小数,每一次刷新都不相同。这个可以用于验证码,

通常用cast(rand() as decimal(10,6))*pow(10,6);

1.1.10 cast()

决定保留几位小数,用法为cast(数值 as 类型);

1.2 字符串函数

1.2.1 lower把大写字母变成小写

select lower('Hello World!'); -- 输出结果hello world!

1.2.2 upper把大写字母变成小写

select upper('Hello World!'); -- 输出结果HELLO WORLD!

1.2.3 reverse反转函数

select reverse('123456'); -- 反转 '654321' ,一般用于判断回文。

1.2.4 repeat重复输出

select repeat('abc', 3); -- 重复 'abcabcabc' 输出重复的信息,3为次数。

格式:repeat(输出内容,输出次数)

1.2.5 concat拼接函数

select concat('Hello', ' ', 'SQL'); -- 拼接 'Hello SQL'

select concat_ws('-', '2025', '08'); -- 拼接 带分隔符拼接,'2025-08'

1.2.6 replace 替换函数

select replace('abcabc', 'a', 'X'); -- 替换a为x  结果为:'XbcXbc'

1.2.7 substr函数

substr函数的用法:substr(str字段名, pos从1开始, len截取长度)

从n位置开始取长度m个字符,下标从1开始计算

select substr('MySQL函数学习',n, m); -- 截取出 SQL

1.2.8 left函数

从左边位置取长度3个字符,是从头开始取

select left('MySQL函数学习', 3); -- 截取出 MyS

1.2.9 right函数

从右边位置取长度2个字符,是从尾开始取

select right('MySQL函数学习', 3); -- 截取出 数学习

1.2.10 字符数char_length

select char_length('数据库'); -- 统计字符长度 3

1.2.11 字节数length

select length('数据库'); -- 字节长度9  UTF-8每汉字3字节

1.3 时间函数

1.3.1时间函数类型

可以说是分为四大类(除去年,月,日,时,分,秒六种类型)

分别为date 3字节 日期,time 3字节 时间,timestamp 4字节 时间戳,datetime 8字节 日期时间

1.3.2 获得目前时间函数

#返回当前 日期和时间

select now(); -- 2025-08-24 15:30:15

select current_timestamp();

#返回当前 日期

select current_date(); -- 2025-08-24

# 返回当前 时间

select current_time(); -- 15:30:15

1.3.3 时间加减函数

#date_add(date, interval expr unit) expr数字 unit时间

-- 正数为之后,负数为之前

select date_add('2025-08-24', interval 3 day); -- 2025-08-27

select date_add('2025-08-24', interval 3 hour); -- 2025-08-24 03:00:00

没有时间默认为00:00:00:

-- 获取三天前的时间

select date_add(now(), interval -3 day);

1.3.4 计算时间差

格式:datediff(date1, date2)

select datediff('2025-01-01','2026-01-01'); -- -365天,前面-后面时间,-为前小,+为前大

1.3.5 提取时间

select year('2025-08-24 15:20:00');-- 年

select month('2025-08-24 15:20:00');-- 月

select day('2025-08-24 15:20:00');-- 天

select hour('2025-08-24 15:20:00');-- 小时

select minute('2025-08-24 15:20:00');-- 分

select second('2025-08-24 15:20:01');-- 秒

select weekday('2025-12-19');-- 星期几

select quarter(now());-- 第几季度

select weekofyear(now());-- 第几周(全年)

1.3.6 时间格式转化

-- 字符串类型 转时间类型 才可以用时间运算 + interval 1 day

select str-to-date('2025-08-24 12:30:00', '%Y-%m-%d %H:%i:%s');

时间格式:%Y-%m-%d %H:%i:%s

%Y:4 位完整年份,%y:2 位简写年份,

%m:两位数字月份(01-12),%M:英文完整月份

%d:两位日期,带前导零(01-31),%D:带后缀英文日期例:9th

时间部分(时分秒)

%H:24 小时制,两位(00-23),%h:12 小时制,两位(01-12)

%i:分钟,固定小写(00-59), I 不代表分钟,代表12小时制,带前导零,范围 01-12

%s:秒,固定小写(00-59),大写 S和小写s等价

-- 时间转时间戳

select unix_timestamp('2025-08-24 12:30:00'); -- 1756029000s

时间戳本质是一串数字,在sql当中,是按照秒为单位的。这一串数字是从unix诞生的时候开始到目标时间之间相隔多少秒,时间戳时间范围从1970-01-01 08:00:00开始到2038年结束。有些语言时间戳可能不是按照s来计算的。

-- 时间戳转时间

select from_unixtime(1756029000, '%Y-%m-%d %H:%i:%s');

2.mysql的日志分类以及配置文件书写

2.1 mysql日志分类

1 通用日志 记录服务常规启动运行的日志,查询服务器日常状态

2 二进制日志 记录服务器所有的变更(DDL,DML,DCL)的记录。(备份还原)

3 查询日志 记录DQL

4 中继日志 集群服务器中,从服务器拷贝主服务器日志的载体。

2.2 配置文件书写

新建立一个ini为文件后缀的mysql配置文件(通用日志),写下如下代码,会生成一个general.log日志文件,路径在D:\\mysql-8.4.8-winx64。

[mysqld]

# 记当mysql的sql日志

general_log=on

# 日志地址

general_log_file=D:\\mysql-8.4.8-winx64\\general.log

此日志会记录数据库会记录客户端执行的所有SQL语(SELECT/INSERT/UPDATE/DELETE、连接、断开全部记录)

更多推荐