最近经常使用到MySql数据库中一些自带的类库和函数、方法,现对之前使用过的做一个记录。
- 快速查看数据表的全部字段和注释数据类型、权限、默认值、是否为null等。
show full columns from table name
- 时间格式化
-- 年月日
DATE_FORMAT(字段, '%Y-%m-%d')
-- 年月日时分秒
DATE_FORMAT(字段, '%Y-%m-%d %H:%i:%S')
- 字符拼接
-- 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。
conat(str1,str2,str3,...)
eg:select concat('1','2',null);
输出: null
CONCAT_WS(separator,str1,str2,...)
第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
和concat函数不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL
eg:select concat_ws(',','1','2',null);
输出: 1,2
- MySQL计算函数并保留小数点
-- 四舍五入并保留俩位小数
ROUND(数学运算, 2)
ROUND(X) :返回参数X的四舍五入的一个整数。
- IFNULL() 函数
-- 用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。
IFNULL(字段,如果第一个值为null返回自定义值)
- case函数
-- 如果status 是 0 未提交,1 已提交、待处理,2 已处理 三个都不是 输出空, 显示字段是status_
CASE status WHEN 0 THEN '未提交'
WHEN 1 THEN '已提交、待处理'
WHEN 2 THEN '已处理'
ELSE '' END 'status_'
- not in 替换为效率更高的左连接
-- table1 表为主表,table2表为拓展表,关联字段 table1.id = table2.tid
-- 查询的是 table1表和 table2表没有关系的table1 的 name、age 即不存在(not exists)
SELECT ti.name, t1.age FROM
(
SELECT t1.*, t2.tid FROM
table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.tid
) AS res
WHERE res.tid is null
-- exists 的话就是 最后的where 条件改为 is not null
暂时用到的就这么几个,想到了在更新。