昨天上午去中國移動面試,首先讓做了乙份智力題。。。。。,真是無力吐槽了,真正面試是是三個面試官,乙個是專案負責人,另外兩個是技術組長,他們主要針對你的專案問問題,問的很蛋疼,問題就是針對,要是如果登入成功以後使用某種會員功能,如何校驗,說的很明白會根據登入成功後的資料庫使用者資訊去判斷。就盯著你的專案問,還問你資料庫幾個什麼表,怎麼做表的。
具體有點意義的問題就是
1.資料庫事務
2.資料庫的事務操作
mysql中預設情況下,事務是自動提交的,當執行一條dml(增刪改)語句時,就開啟並且自動提交了事務。可以通過下面的語句檢視事務是否是自動提交的:
show variables like '%commit%';
如果想要關閉mysql事務的自動提交,可以使用下面語句手動開啟事務:
start transaction;
為了方便演示提交和回滾,先初始化一些資料:
create table t_bank(
account int(10) primary key,
money int(15)
);insert into t_bank values
(1001,1000),
(1002,2000);
手動開啟事務:
start transaction;
執行下面語句:
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;
Oralce資料庫的優化 面試必問題
1 選擇最有效率的表名順序 只在基於規則的優化器中有效 oracle 的解析器按照從右到左的順序處理from子句中的表名,from子句中寫在最後的表 基礎表 driving table 將被最先處理,在from子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表。如果有3個以上的表連線查詢...
Oralce資料庫的優化 面試必問題
1 選擇最有效率的表名順序 只在基於規則的優化器中有效 oracle 的解析器按照從右到左的順序處理from子句中的表名,from子句中寫在最後的表 基礎表 driving table 將被最先處理,在from子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表。如果有3個以上的表連線查詢...
關於資料庫的隔離性的面試問題
一 首先事務的四大特性 a 原子性,要麼全部提交,要不不提交 c 一致性,一致性是指事務必須使資料庫從乙個一致性狀態變換到另乙個一致性狀態,也就是說乙個事務執行之前和執行之後都必須處於一致性狀態。拿轉賬來說,假設使用者a和使用者b兩者的錢加起來一共是5000,那麼不管a和b之間如何轉賬,轉幾次賬,事...