1. 程式人生 > >[sql] 同庫表(結構)的備份和sql聚合&navicat使用

[sql] 同庫表(結構)的備份和sql聚合&navicat使用

排序 inno bubuko 表結構 mysql 後悔 cat 選中 data

同庫表的備份-賦值表結構和數據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是針對會話的.

技術分享圖片

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會有自動提示. ,在一方面他執行時候有快捷鍵

技術分享圖片

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;

[sql] 同庫表(結構)的備份和sql聚合&navicat使用