[sql] 同庫表(結構)的備份和sql聚合&navicat使用
阿新 • • 發佈:2018-02-23
排序 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使用