mysql学习问题

编写代码实现事务:

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值