本文用于记录MySQL中的一些函数或语法。
持续更新中。。。
dual用于创建虚拟的临时表,保证sql正常执行
sqlselect now() from dual;
在一条sql的开头使用,用于分析sql的执行情况。
sqlexplain select * from dncc_dist where id = 1;
输出:
id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | SIMPLE | dncc_dist | const | PRIMARY | PRIMARY | 4 | const | 1 | 100 |
limit N
: 返回 N 条记录limit N,M
: 相当于 limit M offset N , 从第 N 条记录开始, 返回 M 条记录DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
DATE_FORMAT(date, format)
,date 参数是合法的日期。format 规定日期/时间的输出格式。可以使用的格式有:
格式 | 描述 |
---|---|
%a | 缩写星期名 |
%b | 缩写月名 |
%c | 月,数值 |
%D | 带有英文前缀的月中的天 |
%d | 月的天,数值(00-31) |
%e | 月的天,数值(0-31) |
%f | 微秒 |
%H | 小时 (00-23) |
%h | 小时 (01-12) |
%I | 小时 (01-12) |
%i | 分钟,数值(00-59) |
%j | 年的天 (001-366) |
%k | 小时 (0-23) |
%l | 小时 (1-12) |
%M | 月名 |
%m | 月,数值(00-12) |
%p | AM 或 PM |
%r | 时间,12-小时(hh:mm:ss AM 或 PM) |
%S | 秒(00-59) |
%s | 秒(00-59) |
%T | 时间, 24-小时 (hh:mm:ss ) |
%U | 周 (00-53) 星期日是一周的第一天 |
%u | 周 (00-53) 星期一是一周的第一天 |
%V | 周 (01-53) 星期日是一周的第一天,与 %X 使用 |
%v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
%W | 星期名 |
%w | 周的天 (0=星期日, 6=星期六) |
%X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
%x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
%Y | 年,4 位 |
%y | 年,2 位 |
语法:str_to_date(str,format)
;format格式必须和str的格式相同,否则返回空
例子:select str_to_date('2017-10-29', '%Y-%m-%d %H:%i:%S')
format可用的格式见上表。
生成1以内随机数,包含小数点后16位
sql-- 生成10以内随机数,并取整
select ROUND(RAND() * 10) from dual;
ROUND(X),对数字X取整
ROUND(X, N),对数字X取小数点后N位
应用示例:
sql-- 保留2为小数
select ROUND(10.12345, 2) from dual;
对时间类型数据进行加减,通过参数可以指定对时间加减秒、分钟、小时、天等等。
sql-- 对当前时间增加60分钟
select adddate(SYSDATE(), interval 60 minute) from dual;
sqlselect id, group_concat(score) as scores, group_concat(subject) as subjects from student_score group by id
student_score为学生成绩表,subject为科目名称,score为科目成绩,id为学生id。
此sql表示按学生id分组,将每个学生的科目聚合,成绩聚合。输出结果可能为:
id | scores | subjects |
---|---|---|
1 | 78,98,88 | 语文,数学,英语 |
2 | 89,80,94 | 语文,数学,英语 |
VARBINARY 是一种 MySQL 数据库中用于存储可变长度二进制数据的数据类型。它与 VARCHAR 类似,但用于存储二进制数据而不是字符数据。VARBINARY 可以存储任意长度的二进制数据,包括字节、图片、文件等。这种数据类型在存储 IP 地址时非常有用,特别是当处理 IPv6 地址时,因为 IPv6 地址比 IPv4 地址更长。
假设你有一张 log
表,有 ip
和 v
两个字段,分别用于存储IP地址和类型。
VARBINARY(16)
int
,4代表IPv4,6代表IPv6。示例:
sql-- 插入IPv4数据
insert into iplog(ip,v) value (INET_ATON('192.168.0.1'), 4);
-- 查询IPv4数据
select INET_NTOA(ip) from iplog where v = 4;
-- 插入IPv6数据
insert into iplog(ip,v) value (INET6_ATON('2409:8a3c:46d:5b70:48e:3882:11dd:3119'), 6);
-- 查询IPv6数据
select INET6_NTOA(ip) from iplog where v = 6;
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!