mysql-數據備份與存儲過程


修改隔離級別

修改全局的  
 set global transaction isolation level read committed;
 或者:
 set @@tx_isolation = "asasasasas-read";
 修改局部
 set session transaction isolation level read committed;
 

 @@系統內置變量
 @表示用戶自定義的變量

存儲過程

什么是存儲過程

是任意的sql語句的組合,被放到某一個存儲過程中,類似於一個函數,有一個函數名/參數/還有函數體.

用來干什么

其中可以包含任何的sql語句,邏輯處理,事務處理,所有的我們學過的sql語句都可以放到里面

三種數據處理方式

  1. 應用程序只關注業務邏輯,所有與數據相關的邏輯封裝到mysql中

    • 優點:應用程序要處理的事情變少了,可以減少網絡傳輸
  2. 應用程序既要處理業務邏輯,還要編寫sql語句

    • 優點:降低了溝通成本,人力成本
    • 缺點: 網絡傳輸增加,sql語句編寫非常復雜
  3. 通過ORM框架, 使用對象關系映射,自動生成sql語句並執行

    • 優點:不需要在編寫sql語句,提升了開發效率
    • 缺點:不夠靈活,應用程序開發者和數據庫完全隔離,可能導致僅關注上層開發,而不清楚底層原理
# 語法
create procedure p_name(p_type p_name p_date_type)
begin
sql......
end

# p_type 參數的類型  in 輸入   out 輸出必須是一個變量,不能是值    inout 即可輸出也可輸入  
# p_name 參數的名字
# p_data_type  參數的數據類型  如  int  float

案例

delimiter |
create procedure a1(in a int, in b int, out c int) 
begin
set c = a + b;
end |
delimiter ;

# 調用
set @res =0;
call a1(1,1,@res);
select * from @res;

# 刪除
drop procedure 名稱;

# 查看
show create procedure 名稱

# 查看全部  例如 db庫下的所有
select name from mysql.proc where db = 庫名 and  type = "PROCEDURE";

delimiter |
create procedure transfer2(in aid int,in bid int,in m float,out res int)
begin 
	declare exit handler for sqlexception
	begin
		# 異常處理代碼
		set res = 99;
		rollback;
	end;
	
	start transaction;
	update account set money = money - m where id = aid;
	update account set money = moneys + m where id = bid;
	commit;
	set res = 1;
end|
delimiter ;

備份與恢復

# 備份
mysqldump.exe   
mysqldump -u用戶名 -p密碼 數據庫 表名1 表名2 .... > 文件路徑....
# 注意 第一個表示數據庫  后面全都是表名
mysqldump -uroot -p day41 student  > 


#備份多個數據庫
mysqldump -uroot -p111 --databases day41 day40  > x3x.sql
#指定 --databases 后導出的文件包含 創建庫的語句   而上面的方式不包含

#備份所有數據  
mysqldump -uroot -p111 --all-databases > all.sql


#自動備份
linux crontab 指令可以定時執行某一個指令



# 恢復數據:
沒有登錄mysql 
mysql < 文件的路徑


已經登錄了MySQL 
source  文件路徑


注意: 如果導出的sql中沒有包含選擇數據庫的語句 需要手動加上 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM