case when .. then ... when ... then ... else end
case when:类似于if,根据条件返回值
case when sex = '0' then '女' when sex='1' then '男' end
或者
case when sex='0' then '女' else '男' end
IF() IF(TRUE,A,B) = A
IF(FALSE,A,B) = B
IFNULL()
IFNULL(字段,替换内容)
NULLIF()
NULLIF(字段,进行对比内容) :相同则为null,不同则还是原内容
ISNULL()
ISNULL(字段) :0 - 不为空,1 - 为空
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SUBSTRING_INDEX(字段,分隔符,取段位置)
字段名称:var = '123_232_aaa_ewrwe,123'
SUBSTRING_INDEX(var,'_',1) = 123
SUBSTRING_INDEX(var,'_',2) = 123_232
SUBSTRING(字段,开始位置,取值长度)
SUBSTRING(var,1,7) = 123_232
SUBSTRING(var,2,7) = 23_232_
left(字段,取值长度)
字段名称:var = 123123123123123
left(var,10) 从左到右取10位数 = 1231231231
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
获取系统当前时间,格式为 yyyy-MM-dd HH:mm:ss
now()、current_timestamp() :语句开始执行的时间
sysdate():函数开始执行的时间
unix_timestamp(current_timestamp()) 将时间戳换成秒
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
REPLACE('123.123.345','.','') 将字符'.'换成空字符
结果等于 123123345
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
timediff:求得两个时间的时间差,返回结果为 yyyy-MM-dd HH:mm:ss
timediff(NOW(),'2019-07-10 10:32:03')
TIME_TO_SEC:将转换为秒
TIME_TO_SEC('00:01:19') = 79
date_format:输出时间格式
date_format(NOW(),'%Y-%m-%d %H:%i:%s') = 2019-07-10 10:38:12
date_format(NOW(),'%Y-%m-%d) = 2019-07-10
show PROCESSLIST; -- 查询当前执行内容;
当时遇到一个mysql问题:有个15秒就执行一次的定时任务,因为当时表没有进行分表等操作,数据量太大,导致事务一直在等待执行,最终导致数据库表锁,程序无法启动;
解决办法:
1.分表,结案少表中数据
2.关闭事务定时任务 -- kill 线程id
简单描述主从(执行语句先执行主,在执行从):
例如:
1.204(主表,读)
1.205(从表,写)
主、从通过日志来进行同步;
问题:日志同步失败?
解决办法:
1.手动解决日志同步失败
2.主从数据库全部还原
简单描述集群(单机:1、3、5台机器)
-- 都是双网卡(且在不同的网段上:比如 1网段、2网段)
1.201、2.201(主)
1.202、2.202(从)
1.203、2.203(从)
1.基本都有读写功能
2.语句大部分是从主开始执行
3.如果1.201宕机,那么就执行选举谁为主机(可能是1.202,也可能是1.203)
4.2网段监听心跳