编写代码实现事务:
public void takeEffect() throws SQLException {
getConnection().setAutoCommit(false); **//事务不自动提交,需要人手动提交**
Statement stmt = getConnection().createStatement();
stmt.execute("truncate table xxxx");
stmt.execute("insert into xxxx (select * from xxxx)");
stmt.execute("truncate table yyyy");
stmt.execute("insert into yyy (select * from yyy)");
getConnection().commit(); **//手动提交事务**
getConnection().setAutoCommit(true);**//自动提交事务**
}
2.计算两个日期之前的差值
以小时为例:
删除大于最近24小时的数据
DELETE FROM table_name WHERE TIMESTAMPDIFF(HOUR,time,CURRENT_TIMESTAMP) > 24
mysql关键字的执行顺序
from–where–group by–having–select–order by,
from:需要从哪个数据表检索数据
where:过滤表中数据的条件
group by:如何将上面过滤出的数据分组
having:对上面已经分组的数据进行过滤的条件
select:查看结果集中的哪个列,或列的计算结果
order by :按照什么样的顺序来查看返回的数据
关于临时表产生使用SELECT INTO和CREATE TABLE + INSERT INTO的选择,一般情况下:
SELECT INTO会比CREATE TABLE + INSERT INTO的方法快很多,
但是SELECT INTO会锁定TEMPDB的系统表SYSOBJECTS、SYSINDEXES、SYSCOLUMNS,在多用户并发环境下,容易阻塞其他进程。
所以我的建议是,在并发系统中,尽量使用CREATE TABLE + INSERT INTO,而大数据量的单个语句使用中,使用SELECT INTO。