事务,视图 ,函数,存储过程,触发器
生活随笔
收集整理的這篇文章主要介紹了
事务,视图 ,函数,存储过程,触发器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1,?事務:
一組操作, 要么都成功, 要么都失敗 特性:原子性: 一組操作, 要么都成功, 要么都失敗一致性(Consistency):指事務發生前和發生后,數據的總額依然匹配 隔離性(Isolation):簡單點說,某個事務的操作對其他事務不可見的 持久性(Durability):當事務完成后,其影響應該保留下來,不能撤消,只能通過“另開起一個事物”來抵消之前的錯誤關鍵字:begin,for update,commit
begin; # 開啟事務
select * from emp where id = 1 for update; # 查詢id值,for update添加行鎖;
update emp set salary=10000 where id = 1; # 完成更新
commit; # 提交事務,此時鎖才結束 場景:思考:我去銀行給朋友匯款,我卡上有1000元,朋友卡上500元,我給朋友轉賬100元(無手續費),如果,網線斷了, 我的錢剛扣,而朋友的錢又沒加時, 怎么辦?create table t11 (id int auto_increment primary key,name varchar(32) not null default '',money int not null default 0)engine=Innodb charset=utf8;insert into t11 (name,money) values ('zekai', 1000), ('eagon', 500); 解決方法:開啟事務 (start transaction)(執行sql操作)commit : 提交上面的SQL, 讓其生效rollback: 回滾show full tables; 顯示全部類型
?
2,視圖 :
產生的原因:
如果有一個SQL語句頻繁的會被使用到,比如說:select * from t4 where id>12 and id <24;搞一個映射,或者取一個別名select * from t4 where id>12 and id <24 === > v1
查看視圖:select * from v1; 創建視圖:create view v1 as select * from t4 where id>12 and id <24; 修改視圖:
alter view v1 as sql語句; 刪除視圖:
drop view v1; 問題:如果原生的表數據發生了變化, 那視圖會不會發生變化? 也會變化視圖中的數據會不會發生修改? 不會發生修改 應用場景:MySQL: (DBA)生成視圖View程序:調用 select * from v1;
?
3,函數:
不要輕易使用在程序中, 用代碼計算, 計算好了, 再傳給SQL語句執行?
4,存儲過程 :?
將一大堆 SQL 語句進行封裝, 類似于函數, 結果就是存儲過程MySQL服務端:DBA (寫) a. 簡單的存儲過程:delimiter //create procedure p1()BEGINselect * from t11;END //delimiter ; # 結束之后記得再改回來,不然后面結束符就都是//程序:call p1(); b. 傳參數: (in)delimiter //create procedure p2(in n1 int,in n2 int)BEGINselect * from t11 where id > n1;END //delimiter ;程序:call p2(12, 2) c. 傳入參數: (out)delimiter //create procedure p3(in n1 int,out n2 int)BEGINselect * from t11 where id > n1;set n2 = 1;END //delimiter ;set @v2=123212;call p3(12, @v2);select @v2;
?
5 ,?觸發器? :
在滿足對某張表數據的增、刪、改的情況下,自動觸發的功能稱之為觸發器例如 : 向用戶表中添加一條數據的同時, 在日志表中也添加一條記錄delimiter //CREATE TRIGGER t1 BEFORE INSERT ON t7 FOR EACH ROWBEGINinsert into t11 (name, money) values ('xxx', 1234);END //delimiter ;
?
轉載于:https://www.cnblogs.com/HZLS/p/11046083.html
總結
以上是生活随笔為你收集整理的事务,视图 ,函数,存储过程,触发器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类型自动转换的问题
- 下一篇: gitlab远程提交