数据小站
数据科学成长之路

mysql碎片应用

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
'''
赞(0) 打赏
未经允许不得转载:技术文档分享 » mysql碎片应用

评论 抢沙发