云计算运维第6天
云计算运维第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、连接、断开全部记录)
更多推荐

所有评论(0)