解决too many connections问题
select concat('KILL ',id,';') from information_schema.processlist
查看最大连接数
show variables like 'max_connections';
临时设置成500
set GLOBAL max_connections=500;
删除某列首位空格 - trim函数
update tableName set columnName = trim(columnName)
字符串截取
如: 将 "宾至如归:(bīnzhìrúguī)" 截取成 "宾至如归"
select left(columnName, 4) from tableName where id = 230;
计算字符串长度 - length函数
select * from tableName where length(columnName) > 12
字符串截取
示例: 截取 爱(ài)别(bié)离(lí)苦(kǔ) , 将中文和拼音分别截取出来
截取 爱别离苦
select CONCAT(left(columnName,1),
left(substring_index(columnName,')',-4),1),
left(substring_index(columnName,')',-3),1),
left(substring_index(columnName,')',-2),1))
from tableName
截取 ài bié lí kǔ
select CONCAT(
substring_index(substring_index(columnName,'(',-4),')',1),' ',
substring_index(substring_index(columnName,'(',-3),')',1),' ',
substring_index(substring_index(columnName,'(',-2),')',1),' ',
substring_index(substring_index(columnName,'(',-1),')',1)
)
from tableName
Error : You can't specify target table 'm' for update in FROM clause
原语句:
update idiom_info m, idiom_info_copy n
set m.spell = n.spell
where m.idiom = n.idiom and m.id in(
select id from idiom_info where id not in(select id from idiom_info where spell like '% %')
)
更改后:
update idiom_info m, idiom_info_copy n
set m.spell = n.spell
where m.idiom = n.idiom and m.id in(
select x.id from
(select id from idiom_info where id not in(select id from idiom_info where spell like '% %')) x
)
将in后面的语句外面包了一层, 将其作为一个临时表x, 再查询这个临时表的id
条件判断
select *,(CASE WHEN sex='1' THEN '男' WHEN sex='0' THEN '女' ELSE '保密' END) as sex_text
from user
order by sex_text DESC
行数
SELECT t.*,
@rownum := @rownum + 1 AS rank
FROM YOUR_TABLE t,
(SELECT @rownum := 0) r
在进行数值加减的时候, 要注意到NULL的这种情况
1. 在设计初, 如果涉及到值加减, 需要将其默认值设置为0, 不要默认, 默认是NULL
2. 如果无法改变, 在查询时, 需要使用IFNULL函数将其转为0, 再进行计算, 因为:
NULL - 100 = NULL
100 - NULL = NULL
正确使用应该为: IFNULL(charge_total,0), 如果charge_total为NULL只, 则取值0
在与NULL进行CONCAT时, 结果都为NULL
SELECT CONCAT(100,NULL) FROM DUAL
查询数据库版本:
mysql> select @@version;
金额保留2位小数
select format(money/100,2) from dual
int和timestamp格式时间相互转换
select unix_timestamp(create_time) from jp_bank_info
1492677330
select from_unixtime('1492677330') from dual;
2017-04-20 16:35:30.000000
修改mysql用户密码
登录服务器的mysql客户端
# mysql -uroot -p
修改使用的数据库
mysql> use mysql;
更新用户root的密码
mysql> update user set password = password('newpassword') where user = 'root';
提交修改
mysql> flush privileges;