IFNULL
IFNULL(A,B) 如果A是空的那么IFNULL的结果就是B,反之A不为空那么IFNULL的结果就是A
SELECT
IFNULL(commission_pct,0) AS 奖金率,
commission_pct
FROM
employees;这段 SQL 语句的作用是,查询 employees 表的 commission_pct 列,将其中的 NULL 值替换为 0 并给其取别名 "奖金率",同时还原 commission_pct 原有的列名称。最终查询结果中包括奖金率和 commission_pct 两列的数据。
字符串函数
LENGTH(last_name) as长度,
SUBSTR(last_name,1,1) as首字符 (字符串、起始位置和长度)
instr(last_name,n)查找n在字符第几个位置
LPad、RPad(last_name,2,N)在字符左/右加上指定数量的字符=NNlast_name
日期函数
to_date只要日期时间中的日期
day、hour、 minute、second 获取日期的天/小时/分钟/秒
date_sub、date_add 日期加减几天
datediff 两个日期作差
`STR_TO_DATE`:将一个字符串按照指定的格式转换为日期或时间类型。例如:`SELECT STR_TO_DATE('2022-01-01', '%Y-%m-%d')`,将字符串 "2022-01-01" 转换为日期类型,结果为 "2022-01-01"。
`DATE_FORMAT`:将一个日期或时间格式化为指定的字符串格式。
例如:`SELECT DATE_FORMAT('2022-01-01 12:34:56', '%Y-%m-%d')`,将日期 "2022-01-01 12:34:56" 格式化为字符串 "2022-01-01"。
CONCAT_WS与CONCAT
`CONCAT_WS` 函数指定了一个分隔符,而 `CONCAT` 函数不指定分隔符。所以,如果需要合并多个字符串并指定一个分隔符,就应该使用 `CONCAT_WS` 函数;如果不需要指定分隔符的话,就可以使用
case when 和if else
IF ELSE` 适合于对逻辑进行判断,并执行相应的命令;
而 `CASE WHEN` 适合于根据不同的情况返回不同的结果。
if 条件1 then 执行1
elseif 条件2 then 执行2
elseif 条件3 then 执行3
else 执行4
end if
case
when 条件1 then 结果1
when 条件2 then 结果2
when 条件3 then 结果3
else 结果4
end case
case 条件判断
when 值1 then 结果1
when 值2 then 结果2
when 值3 then 结果3
else 结果4
end case
模糊查询
% 表示多个字值,_ 下划线表示一个字符;
M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的。
%M% : 表示查询包含M的所有内容。
%M_ : 表示查询以M在倒数第二位的所有内容。
增删改
#DML语言 数据操作:
单表
插入:insert into 表名 values(值1,...)
insert into 表名 select * from A where
删除:delete from 表名 where 筛选条件
修改:update 表名 set 列=新值,列=新值,...where 筛选条件;
多表
删除:
delete 表名1 join 表2 on条件
from 表名 where 筛选条件
修改:
update 表名1 join 表2 on条件
set 列=新值,列=新值,...where 筛选条件;