主键冲突方法
-
on duplicate key update
-- 也可用于解决update时造成的唯一索引冲突, 当发生唯一索引冲突时替换原来的值 insert into tablename(field1,field2, field3) values (value1, value2, value3) on duplicate key update field1=value1,field2=value2, field3=value3;
-
replace into
-- 当发生主键冲突时替换原来的值 replace into tablename(field1,field2, field3) values (value1, value2, value3)
-
insert ignore into
-- 当发生唯一索引冲突时,返回0,不插入,不抛出错误 insert ignore into tablename (field1,field2,field3) values (value1,value2,value3);
模糊匹配与正则匹配
-
模糊匹配
-- 百分号(%):表示任意个或多个字符 -- 下划线(_):表示任意单个字符 select * from tablename where field1 like '%hello_'; -- 可以直接对参数进行模糊查询 select * from user where name like concat('%', 'hello', '%');
-
正则匹配
-- ^: 匹配表达式开始 -- $: 匹配表达式结束 -- .: 匹配任务单个字符 -- *: 匹配0个或多个表达式 -- +: 匹配一个或多个表达式 select * from tablename where field1 regexp 'hello.';
日期处理函数
-- 获取当前日期,当前时间,当前日期时间
select curdate(), current_date, curtime(), current_time, now(), sysdate(), localtime, current_timestamp;
-- 当前日期加减
select adddate(curdate(), 1), date_add(curdate(), interval 1 day ), subdate(curdate(), 1), date_sub(curdate(), interval 1 day )
-- 当前时间加减
select addtime(now(), 30), date_add(now(), interval 30 second ), subtime(now(), 30), date_sub(now(), interval 30 second ) ;
-- 提取日期和时间
select date(now()), time(now());
-- 提取日期时间中具体的某个值
select extract(year from now()), extract(month from now()), extract(day from now()), extract(hour from now()), extract(minute from now()), extract(second from now());
select year(now()), month(now()), day(now()), hour(now()), minute(now()),second(now());
-- 计算时间差
select datediff(adddate(now(), 1), now()), timediff(adddate(now(), 1), now()), timestampdiff(day ,adddate(now(), 1), now())
-- 计算今天是第多少天
select dayofweek(now()), dayofmonth(now()), dayofyear(now())
常用函数
-- IF(expr,v1,v2) 如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。
SELECT IF(1 > 0,'正确','错误')
-- IFNULL(v1,v2) 如果 v1 的值不为 NULL,则返回 v1,否则返回 v2。
SELECT IFNULL(null,'Hello Word')
-- ISNULL(expression) 判断表达式是否为 NULL
SELECT ISNULL(NULL);