1、表关联更新:
select a.`user`,a.`host`,b.db from mysql.`user` as a left join mysql.db as b on (a.`user` = b.`user` and a.`host` = b.`host`) where a.`user` != 'root';
更新前的查询:
select * from user_bank where id = 1650;select * from user_bank where bank_type is null;select count(*) from user_bank where bank_type is null;select * from bank;select * from bank where bank_code = '03010000';
2、函数的使用
2.1、时间相关的函数
select UNIX_TIMESTAMP('2015-12-11 11:24:00'); -- 日期时间转时间戳select FROM_UNIXTIME("1449804240"); -- 时间戳转日期时间select FROM_UNIXTIME("1449804240",'%Y-%m-%d %H:%i:%S') --含格式化的转换select NOW(); -- 当前系统时间select DATE_ADD(NOW(),INTERVAL 1 YEAR) -- 时间加1个年select DATE_ADD(NOW(),INTERVAL -1 YEAR) -- 时间减1个年select DATE_ADD(NOW(),INTERVAL 1 MONTH); -- 时间加1个月-- 常用日期单位:MICROSECOND,SECOND,MINUTE,HOUR,DAY,WEEK,MONTH,QUARTER,YEAR,SECOND_MICROSECOND,MINUTE_MICROSECOND,MINUTE_SECOND,HOUR_MICROSEC,ND,HOUR_SECOND,HOUR_MINUTE,DAY_MICROSECOND,DAY_SECOND,DAY_MINUTE,DAY_HOUR,YEAR_MONTH
2.2、if函数的使用
select if(host='127.0.0.1','本机','非本机') from mysql.user;
2.3、case的使用
select db, ( case when host = "localhost" then '本机' when host = "127.0.0.1" then '本机' else '其他' end ) as host,userfrom mysql.db;
2.4、分组函数使用
select user,count(user) from mysql.user group by user;
2.5、产生唯一值
select uuid(); -- 长uuidselect UUID_SHORT(); -- 短uuid
2.6、存储过程
2.6.1、游标的使用
BEGIN DECLARE v_user varchar(50); -- 遍历数据结束标志 DECLARE done INT DEFAULT FALSE; -- 游标 DECLARE cur CURSOR FOR select `user` from mysql.`user`; -- 将结束标记绑定到游标 DECLARE CONTINUE HANDLER FOR NOT found set done = TRUE; -- 打开游标 OPEN cur; -- 开始循环 read_loop:LOOP -- 变量初始化 SET v_user=''; -- 提取游标数据 FETCH cur INTO v_user; -- 声明游标结束条件 IF done THEN LEAVE read_loop; END IF; -- 这里写想做的循环 SELECT v_user; END LOOP; -- 关闭游标 CLOSE cur;END