mysql修改删除添加查询连表操作(查询7天内的数据)

本文介绍了SQL中的关键操作,包括如何使用LEFT JOIN进行更新、删除和插入记录,以及如何进行复杂查询,如条件计数和日期范围筛选。这些技巧对于数据库管理和数据操作至关重要。

修改

update user as a left join activity as b on a.id=b.user_id set a.title=b.title,a.cont2=b.cont where b.odate < '2022-05-01';

删除

delete 表1(要删除的表) [,表2] from 表1 left join 表2…

delete a from user as a left join activity as b on a.id=b.user_id where b.odate < '2022-05-01';

添加

insert into user(title, title1, tittle2) select title, title1, tittle2 from activity where odate < '2022-05-01';

查询

select * from user where (select count(*) from activity where id in (1,2,3,4,5))=1 and ...

查询某字段小于7天内的数据

date_sub(curdate(), interval 7 day) <= date(字段)

select * from user where date_sub(curdate(), interval 7 day) <= date(odate) and operate!='d'
查询 MySQL 中用户删除数据操作日志,主要依赖于以下几种日志机制: - **通用查询日志(General Query Log)**:该日志记录了所有连接到 MySQL 服务器的客户端所执行的 SQL 语句,包括 `DELETE` 操作。可以通过启用通用查询日志来捕获用户执行的删除操作。日志以文本形式存储在文件系统中,可使用文本编辑器查看。例如在 Linux 系统中,可以使用 `vim` 或 `cat` 命令查看日志内容 [^1]。 - **二进制日志(Binary Log)**:二进制日志记录了所有更改数据库内容的操作,包括 `DELETE` 语句。它主要用于数据恢复和主从复制。通过 `mysqlbinlog` 工具可以解析二进制日志文件,例如使用命令 `mysqlbinlog -vv --base64-output=decode-rows mysql-bin.000003` 查看日志内容 [^2]。此外,还可以通过 `SHOW BINLOG EVENTS IN 'mysql-bin.000008'` 命令查看具体的 SQL 操作,例如 `DELETE FROM t1` 或 `DROP TABLE t1` [^3]。 - **查询日志与二进制日志的对比**: - **通用查询日志**更适用于实时监控用户操作,但日志文件可能较大,影响性能。 - **二进制日志**则更适用于恢复数据或审计,记录了更详细的变更信息,但需要额外工具解析。 ### 示例:使用 `mysqlbinlog` 工具解析二进制日志中的删除操作 ```bash mysqlbinlog -vv --base64-output=decode-rows mysql-bin.000003 | grep -i 'delete' ``` 该命令可以提取日志文件中所有 `DELETE` 操作的记录,便于分析用户删除数据的行为。 ### 启用通用查询日志的方法 在 MySQL 配置文件 `my.cnf` 或 `my.ini` 中添加以下配置项: ```ini [mysqld] general_log = 1 general_log_file = /path/to/general.log ``` 重启 MySQL 服务后,通用查询日志将被写入指定路径的文件中。 ### 日志文件的管理与清理 由于日志文件可能占用大量磁盘空间,建议定期清理。例如,可以使用以下命令查看日志文件大小并进行清理: ```bash du -sh /var/log/mysql/*.log ``` 对于二进制日志文件,可以通过以下命令删除旧的日志: ```sql PURGE BINARY LOGS TO 'mysql-bin.000010'; ``` 或者设置自动清理策略,在 `my.cnf` 中添加: ```ini [mysqld] expire_logs_days = 7 ``` 这将保留最近 7 的日志,自动删除更早的日志文件 [^4]。 ### 示例:按时间范围提取二进制日志中的删除操作 ```bash mysqlbinlog --no-defaults --start-datetime="2021-06-22 09:18:00" --stop-datetime="2021-06-22 09:40:00" /data/mysql/binlogs/mysql-bin.000027 | grep -i 'delete' > delete_operations.txt ``` 该命令将提取指定时间段内的所有删除操作,并保存到 `delete_operations.txt` 文件中 [^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值