昨天上午去中國移動面試,首先讓作了一份智力題。。。。。,真是無力吐槽了,真正面試是是三個面試官,一個是項目負責人,另外兩個是技術組長,他們主要針對你的項目問問題,問的很蛋疼,問題就是針對,要是若是登陸成功之後使用某種會員功能,如何校驗,說的很明白會根據登陸成功後的數據庫用戶信息去判斷。就盯着你的項目問,還問你數據庫幾個什麼表,怎麼作表的。mysql
具體有點意義的問題就是面試
1.數據庫事務sql
2.數據庫的事務操做數據庫
MySQL中默認狀況下,事務是自動提交的,當執行一條DML(增刪改)語句時,就開啓而且自動提交了事務。能夠經過下面的語句查看事務是不是自動提交的:ui
show variables like '%commit%';
若是想要關閉MySQL事務的自動提交,可使用下面語句手動開啓事務:spa
start transaction;
爲了方便演示提交和回滾,先初始化一些數據:3d
create table t_bank( account int(10) primary key, money int(15) ); insert into t_bank values (1001,1000), (1002,2000);
手動開啓事務:code
start transaction;
執行下面語句:blog
update t_bank set money=500 where account=1001; update t_bank set money=2500 where account=1002;
執行查詢操做:事務
select * from t_bank;
數據已改變。
從新開啓一個MySQL鏈接,執行查詢操做:
select * from t_bank;
由於是新開啓的MySQL鏈接,因此查詢結果中money字段的數據並未改變,說明上面的操做尚未修改數據庫中的字段值。
回到以前的鏈接中,輸入:
rollback;
此時事務將會回滾,清空內存中的記錄,不會修改數據庫中的字段值。
再次執行查詢操做:
select * from t_bank;
數據並未改變。
上面輸入
rollback;
命令,數據庫會執行回滾操做,若是想要提交事務,則輸入命令:
commit;