1.查询结果集中自增功能
SET @i = 0;
SELECT (@i :=@i + 1) id
2.数据库备份
mysqldump database -uroot -p >:..\beifen.sql
3.数据库表空间tablespace优化
show table status from [database] like ‘[table_name] 显示表状态
optimize table table_name 释放空间
表空间的优化需要设置独享、共享空间
4.case使用
case when 两种语法:
case when 表达式 then a else b end
case value when valueb then a else b end
语法1中when后面是表达式,判断表达式是否为ture, 可以判断null
语法2中直接判断, 判断是否为True, 对null无效
SELECT
a.客户名称
,
SUM(case c.虚拟类型
when ‘行业’ then a.流量
else 0 end)’行业’,
SUM(case c.虚拟类型
when ‘敏感营销’ then a.流量
else 0 end)’敏感营销’,
SUM(case when c.虚拟类型 is NULL then a.流量
else 0 end)’无’
……
5.过程
'''
DROP PROCEDURE
IF EXISTS p_price_cusdx_update;
CREATE PROCEDURE p_price_cusdx_update ()
BEGIN
SET @tjsj = '2020-05';
-- 删除旧数据
DELETE
FROM
price_dx_cusid
WHERE
统计时间 = @tjsj;
-- 更改自增值
SET @idmax = (SELECT MAX(id) + 1 FROM price_dx_cusid);
SET @sql = CONCAT('ALTER TABLE price_dx_cusid AUTO_INCREMENT = ', @idmax);
PREPARE st FROM @sql;
EXECUTE st;
-- 同步更新当月客户id数据
INSERT price_dx_cusid (
客户名称,
业务分类,
客户ID,
通道类型,
统计时间
) SELECT DISTINCT
`客户名称`,
'短信',
`客户ID`,
`通道类型`,
@tjsj
FROM
dx_day_2020
WHERE
LEFT (统计时间, 7) = @tjsj
AND `资源分类` IN ('普通短信')
AND `成功量` > 0;
-- 同步当月价格
UPDATE price_dx_cusid a,
price_dx_cusid_all b
SET a.`单价` = b.`单价`,a.`计费方式` = b.`计费方式`,a.`销售` = b.`销售`
WHERE
b.`统计时间` = @tjsj
AND a.`客户名称` = b.`客户名称`
AND a.`通道类型` = b.`通道类型`
AND a.`客户ID` = b.`客户ID`
and a.`业务分类` = b.`业务分类`
AND a.`统计时间` = b.`统计时间`;
-- 更新客户补丁
UPDATE price_dx_cusid a,
price_dx_cusid_up b
SET a.`单价` = b.`单价`,a.`计费方式` = b.`计费方式`,a.`销售` = b.`销售`
WHERE
a.`统计时间` = @tjsj
AND a.`客户名称` = b.`客户名称`
AND a.`通道类型` = b.`通道类型`
AND a.`客户ID` = b.`客户ID`
AND a.`统计时间` = b.`统计时间`
AND a.业务分类 = b.业务分类;
--
END
'''