數據備份
對數據表內容進行備份
備份:select [*/字段列表] into outfile 文件路徑 [字段處理] [行處理] from 表
還原:load data infile 文件路徑 into 表 [字段處理] [行處理]
備份 ---------------》 數據庫 -> 外部文件:①sql語法是正確的;②SQL語句是有效的
把表內數據給清理
還原 ---------------》 外部文件 –> 數據庫
對錶結構進行備份(也包含數據)
備份:mysqldump.exe –h –P –u –p 數據庫 [數據表 數據表…] > 文件路徑 (通常以.sql)
還原:mysql.exe –h –P –u –p 數據庫 < 文件路徑
mysql進入之後:source 文件路徑
事務處理
自動處理:autocommit = on(默認),改成off手動處理
手動處理:只在需要使用事務的地方開啟
開啟事務:start/begin transaction;
---SQL操作
設置回滾點:savepoint 回滾點名字
---SQL操作
回滾到回滾點:rollback to 回滾點名字
--
回滾或者提交:rollback/commit
事務處理四大特點:
原子性:一個事務是一個整體,要麼全部成功,要麼全部失敗
一致性:在事務處理的過程前後,數據是一致的。在做事務處理的時候,數據庫中的數據不會被改變,所以是一致的。
隔離性:一個事務的操作,不會影響另外事務的操作(兩個事務不能針對同一行記錄)
永久性:一旦事務提交,那麼對數據的修改是永久性的,不可逆
觸發器
語法:create trigger 觸發器名字 觸發時間 觸發類型 on 表名 for each row
begin
//觸發體,每一行都需要語句結束符,只能是分號
end
觸發器是自動被調用
觸發器時間:before和after
觸發類型:insert,update,delete
變量:系統變量和自定義變量
系統變量訪問:select @@變量名
修改系統變量:set 變量名 = 值;set global 變量名 = 值;
自定義變量:set @變量名 = 值;set @變量名 := 值;select 字段列表 from 表名 into @變量列表;declare 變量名 數據類型;
@變量名:全局變量,所有地方都可以使用
變量名:局部變量,只能在函數內
函數:系統函數和自定義函數
語法:create function 函數名(參數列表) returns 數據類型
begin
//函數體
//分支結構+循環結構
//return 數據
end
參數:參數必須有數據類型:變量名 數據類型
函數調用:select 函數名(參數列表)
存儲過程
語法:create procedure 過程名(參數列表)
begin
//過程體
end
參數列表:類型 變量名 數據類型
類型:in,out,inout
過程訪問:call 過程名(參數列表)
索引:mysql幾大索引
用戶管理:
創建用戶:create user 用戶名@主機名 indentified by 密碼
賦予權限:grant 權限列表 on 庫.表 to 用戶名@主機名
收回權限:revoke 權限列表 on 庫.表 from 用戶名@主機名
刪除用戶:drop user 用戶名@主機名
商品表:pro_goods
訂單表:pro_order
在插入訂單前,先判斷商品庫存是否足夠,如果不足,則不能生成訂單,如果足則可以。
before insert:判斷庫存是否足夠,並不終止insert語句的執行
after insert:判斷before insert的判斷結果,如果前面判斷失敗,那麼刪除訂單記錄
=========》
after insert:商品表庫存先減少。判斷商品表庫存是否大於0,如果小於0,把商品的庫存回退到之前的數據,然後將當前的這條訂單記錄給刪除。
使用before insert來對數據進行判斷,如果判斷失敗,則想辦法不讓insert語句執行。