文章目录
1. 几个函数
1.1 IFNULL
返回两个字段中第一个不为NULL的值
SELECT IFNULL(NULL, 1)
# 1
1.2 GREATEST
返回多个字段中最大值
SELECT GREATEST(3, 2, 5, 1)
# 5
1.3 LEAST
返回多个字段中最小值
SELECT LEAST(3, 2, 5, 1)
# 1
1.4 CURDATE
获取当前日期
SELECT CURDATE()
# 2020-10-16
2. 几个语法
2.1 CASE WHEN
SELECT CASE sex WHEN 1 THEN '男' WHEN 2 THEN '女' ELSE '未知' END AS sex FROM xxx;
SELECT CASE WHEN age >= 18 THEN '成年' WHEN age > 0 THEN '未成年' ELSE '未知' END AS `type` FROM xxx;
2.2 INSERT INTO … ON DUPLICATE KEY UPDATE …
若插入的数据的主键或唯一索引不存在于目标表中则执行插入否则根据UPDATE后面的逻辑进行更新
INSERT INTO xxx(a, b, c) VALUES(1, 2, 3), (3, 4, 5) ON DUPLICATE KEY UPDATE
a = VALUE(a), # 若记录存在则使用新值覆盖旧值
b = GREATEST(VALUE(b), b), # 若记录存在则保留新旧记录中的较大值
d = d + 1; # 若记录存在则d字段值加一
# 若记录存在c字段保留原值
2.3 UPDATE JOIN
UPDATE T1, T2,
[INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1
SET T1.C2 = T2.C2,
T2.C3 = expr
WHERE condition
3. 几个注意事项
3.1 SELECT
select 字段时遗漏逗号
SELECT a b FROM xxx
# 由于sql中as可以省略, 所以上述查询等同于
SELECT a AS b FROM xxx
# 所以不小心遗漏逗号会导致丢失b列数据