[sql] 同库表(结构)的备份和sql聚合&navicat使用

本文介绍如何使用SQL语句在同一个数据库内进行表结构和数据的备份,包括复制表结构和数据、仅复制表结构的方法,并讲解了如何通过SQL事务确保数据一致性。

同库表的备份-赋值表结构和数据SQL语句

参考

有时候我们处理某个表时,需要先备份下这个表到当前这个库,然后再执行sql. 站在sql角度,就无需在mysqldump或者诸如导出sql的方式来备份了. 同库表的备份更简单

1.复制表结构及数据到新表
CREATE TABLE 新表 SELECT * FROM 旧表
2.只复制表结构到新表
CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2
即:让WHERE条件不成立.

方法二:(由tianshibao提供)

CREATE TABLE 新表 LIKE 旧表
3.复制旧表的数据到新表(假设两个表结构一样)
INSERT INTO 新表 SELECT * FROM 旧表
4.复制旧表的数据到新表(假设两个表结构不一样)
INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表

sql的autocommit

参考
执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。

mysql> set autocommit=0;
Query OK, 0 rows affected (0.01 sec)

mysql>  show variables like "autocommit";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | OFF   |
+---------------+-------+

使用navicat需要特别注意两点

  • 有一点特别需要注意, 我发现如果navicat登录后首句执行的不是set autocommit = 0; 则会自动autocommit,即使你第二句设置了auto,对于这个会话也不生效了.
  • 第二点是autocommit是针对会话的.

1312420-20180223175500935-1954746224.png

navicat快捷键

4.ctrl+r           运行查询窗口的sql语句
5.ctrl+shift+r   只运行选中的sql语句

正确使用navicat的姿势

SET autocommit = 0;

CREATE DATABASE maotai;

DROP DATABASE maotai;
ROLLBACK; #如果我后悔了即可
COMMIT;   #已确认sql没问题

一般执行sql我都用navicat来搞,一方面便于核实结果复制给对方反馈,执行起来也顺手一些,因为写sql会有自动提示. ,在一方面他执行时候有快捷键

1312420-20180223173426897-11205241.png

mysql的事务

事务时怎么回事呢?

张三给李四转账500元。那么在数据库中应该是以下操作:

1,先查询张三的账户余额是否足够

2,张三的账户上减去500元

3,李四的账户上加上500元

以上三个步骤就可以放在一个事务中执行提交,要么全部执行要么全部不执行,如果一切都OK就commit提交永久性更改数据;如果出错则rollback回滚到更改前的状态。利用事务处理就不会出现张三的钱少了李四的账户却没有增加500元或者张三的钱没有减去李四的账户却加了500元。

MyISAM与InnoDB引擎的区别

InnoDB支持事务,MyISAM不支持
InnoDB支持外键,MyISAM不支持

sql聚合函数

- 用sql语句做数据汇聚,查出status 和 对应的总数, 按照状态码总数来排序
select status,sum(count) from log group by status;

转载于:https://www.cnblogs.com/iiiiiher/p/8462933.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值