标签 mysql 下的文章

前提:目前需要删除大部分的数据,保留最近一段时间的数据

1、delete删除数据
我们知道delete语句的删除速度与索引量成正比,此表中的索引量已经很大了,而且数据量非常之巨大,若采用常规delete语句删除,必定会话费很长的时间。并且Delete语句删除不会释放出磁盘空间,所以肯定还是会出现报警,所以此种方式不可取。
2、drop删除表
流程简述:新建结构相同的表,命名“table_new”,’将需要保存的数据插入到此表中,然后drop掉老表"table_old",然后修改“table_new”的表名。

# Sql语句如下:
# 基于老表新建新表
CREATE TABLE table_new LIKE table_old;
# 插入数据到新表(以保存2019-10-01到现在的数据为例,如果数据过大可分批插入)
INSERT INTO table_new SELECT * FROM table_old WHERE date > '2019-10-01 00:00:00';
# 然后drop老表“table_old”
DROP TABLE table_old;
# 重命名新表“table_new”
ALTER TABLE table_new RENAME TO table_old;

1SQL运算符例子实际查询条件
eq=$map['id'] = array('eq',100);等效于:$map['id'] = 100;
neq!=$map['id'] = array('neq',100);id != 100
gt>$map['id'] = array('gt',100);id > 100
egt>=$map['id'] = array('egt',100);id >= 100
lt<$map['id'] = array('lt',100);id < 100
elt<=$map['id'] = array('elt',100);id <= 100
likelike$map['username'] = array('like','li%');username like 'li%'
betweenbetween and$map['id'] = array('between','1,8');id BETWEEN 1 AND 8
not betweennot between and$map['id'] = array('not between','1,8');id NOT BETWEEN 1 AND 8
inin$map['id'] = array('in','1,5,8');id in(1,5,8)
not innot in$map['id'] = array('not in','1,5,8');id not in(1,5,8)
and(默认)and$map['id'] = array(array('gt',1),array('lt',10));(id > 1) AND (id < 10)
oror$map['id'] = array(array('gt',3),array('lt',10), 'or');(id > 3) OR (id < 10)
xor(异或)xor两个输入中只有一个是true时,结果为true,否则为false,例子略。1 xor 1 = 0
exp综合表达式$map['id'] = array('exp','in(1,3,8)');$map['id'] = array('in','1,3,8');

注意:exp 不是一个运算符,而是一个综合表达式以支持更复杂的条件设置。exp 的操作条件不会被当成字符串,可以使用任何 SQL 支持的语法,包括使用函数和字段名称。

最近总是看到mysql查询的结果后面抛出错误:

ERROR: 
No query specified

出现此错误是sql不合法原因:

\G后面不能再加分号;,因为\G在功能上等同于加了;,如果再加分号,那么就是;;(2个分号),就会出现SQL语法错误。

#!/bin/sh
rq=`date +%Y%m%d`
# 删除文件夹中一些过期的备份文件
find /back/ -name "*.sql" -mtime +10 |xargs rm -fr
find /back/ -name "*.tar.gz" -mtime +10 |xargs rm -fr
# 备份整个www目录
zip -r /back/wwwback_$rq.tar.gz /apps/www/*
# 备份数据库
mysqldump -uroot -p123456 database > /back/database`date +%Y-%m-%d_%H%M%S`.sql

启动备份只需要使用计划任务执行sh脚本就行,如:

55 23 * * *    /back.sh