NIIT認證數據庫面試題及答案

  1. 存儲過程和函數的區別

NIIT認證數據庫面試題及答案

存儲過程是用戶定義的一系列sql語句的集合,涉及特定表或其它對象的任務,用戶可以調用存儲過程,而函數通常是數據庫已定義的方法,它接收參數並返回某種類型的值並且不涉及特定用戶表。

  2. 事務是什麼?

事務是作爲一個邏輯單元執行的一系列操作,一個邏輯工作單元必須有四個屬性,稱爲 ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才能成爲一個事務:

原子性

事務必須是原子工作單元;對於其數據修改,要麼全都執行,要麼全都不執行。

一致性

事務在完成時,必須使所有的數據都保持一致狀態。在相關數據庫中,所有規則都必須應用於事務的修改,以保持所有數據的完整性。事務結束時,所有的內部數據結構(如 B 樹索引或雙向鏈表)都必須是正確的。

隔離性

由併發事務所作的修改必須與任何其它併發事務所作的修改隔離。事務查看數據時數據所處的狀態,要麼是另一併發事務修改它之前的狀態,要麼是另一事務修改它之後的狀態,事務不會查看中間狀態的數據。這稱爲可串行性,因爲它能夠重新裝載起始數據,並且重播一系列事務,以使數據結束時的狀態與原始事務執行的`狀態相同。

持久性

事務完成之後,它對於系統的影響是永久性的。該修改即使出現系統故障也將一直保持。

  3. 遊標的作用?如何知道遊標已經到了最後?

遊標用於定位結果集的行,通過判斷全局變量@@FETCH_STATUS可以判斷是否到了最後,通常此變量不等於0表示出錯或到了最後。

  4. 觸發器分爲事前觸發和事後觸發,這兩種觸發有和區別。語句級觸發和行級觸發有何區別。

事前觸發器運行於觸發事件發生之前,而事後觸發器運行於觸發事件發生之後。通常事前觸發器可以獲取事件之前和新的字段值。

語句級觸發器可以在語句執行前或後執行,而行級觸發在觸發器所影響的每一行觸發一次