1、表关联更新:
1
2
3
|
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'
;
|
更新前的查询:
1
2
3
4
5
|
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、时间相关的函数
1
2
3
4
5
6
7
8
|
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函数的使用
1
|
select
if(host=
'127.0.0.1'
,
'本机'
,
'非本机'
)
from
mysql.
user
;
|
2.3、case的使用
1
2
3
4
5
6
7
8
9
|
select
db,
(
case
when host =
"localhost"
then
'本机'
when host =
"127.0.0.1"
then
'本机'
else
'其他'
end
) as host,user
from mysql.db;
|
2.4、分组函数使用
1
|
select
user
,
count
(
user
)
from
mysql.
user
group
by
user
;
|
2.5、产生唯一值
1
2
|
select
uuid();
-- 长uuid
select
UUID_SHORT();
-- 短uuid
|
2.6、存储过程
2.6.1、游标的使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
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
|
本文转自 tanzhenchao 51CTO博客,原文链接:http://blog.51cto.com/cmdschool/1721059,如需转载请自行联系原作者