天天看點

MySQL面試題(四)

38、  Myql 中的事務復原機制概述

事務是使用者定義的一個資料庫操作序列, 這些操作 要麼全做要麼全不做, 是一個不可分割的工作機關, 事務復原是指将該事務已經完成的對資料庫的更新 操作撤銷。

要同時修改資料庫中兩個不同表時, 如果 它們不是一個事務的話,  當第一個表修 改完, 可能第二個表修改過程中出現了異常而沒能修改, 此時就隻有第二個表依 舊是未修改之前的狀态, 而第一個表已經被修改完畢。 而當你把它們設定為一個事務的時候,  當第一個表修改完, 第二表修改出現異常而沒能修改, 第一個表和 第二個表都要回到未修改的狀态, 這就是所謂的事務復原

39、SQL 語言包括哪幾部分?每部分都有哪些操作關鍵字?

SQL 語言 包括資料定義(DDL)、資料 操縱 (DML),資料 控制 (DCL)和數 據查 詢 (DQL)  四個 部分。

資料定義: Create Table,Alter Table,Drop Table, Craete/Drop Index 等

資料操縱:  Select ,insert,update,delete,

資料控制: grant,revoke

資料查詢:  select

40、完整性限制包括哪些?

資料完整性(Data Integrity)是指 資料 的精 确 (Accuracy)和可 靠性 (Reliability)。

分為以下四類:

1、實 體完 整性 :  規 定表 的每一行在表中是惟一的實體。

2 、域完 整性 :  是指表中的列必須滿足某種特定的資料類型限制, 其中限制又包括 取值範圍 、精度等規定。

3 、參照 完整 性 :  是指兩個表的主關鍵字和外關鍵字的資料應一緻, 保證了表之間 的資料的一緻性,  防止了資料丢失或無意義的資料在資料庫中擴散。

4 、用 戶 定 義 的 完 整 性 :  不 同 的 關 系 數 據 庫 系 統 根 據 其 應 用 環 境 的 不 同 ,  往 往 還 需 要 一些特殊的限制條件。 使用者定義的完整性即是針對某個特定關系資料庫的限制  條 件,  它反映某一具體應用必須滿足的語義要求。

與表有關的限制:包括列限制(NOT NULL  (非 空 約 束 )  )和 表 約 束 (PRIMARY KEY、 foreign key 、  check 、   UNIQUE)  。

41、什麼是鎖?

資料庫是一個多使用者使用的共享資源。  當多個使用者并發地存取資料時, 在數 據 庫中就會産生多個事務同時存取同一資料的情況。 若對并發操作不加控制就可 能 會讀取和存儲不正确的資料, 破壞資料庫的一緻性。

加鎖 是實作資料庫并發控制的一個非常重要的技術。  當事務在對某個資料對象進 行 操作前, 先向系統送出請求, 對其加鎖。 加鎖後事務就對該資料對象有了一定 的控制, 在該事務釋放鎖之前, 其他的事務不能對此資料對象進行更新操作。

基本鎖類型: 鎖包括行級鎖和表級鎖

42、什麼叫視圖?遊标是什麼?

視圖是一種虛拟的表, 具有和實體表相同的功能。 可以對視圖進行增, 改, 查 , 操作, 視圖通常是有一個表或者多個表的行或列的子集。 對視圖的修改不影 響 基本表。  它使得我們擷取資料更容易, 相比多表查詢。

遊标 : 是對查詢出來的結果集作為一個單元來有效的處理。 遊标可以定在該單元 中的 特定行, 從結果集的目前行檢索一行或多行。 可以對結果集目前行做修改。 一般不使用遊标, 但是需要逐條處理資料的時候, 遊标顯得十分重要。

43、什麼是存儲過程?用什麼來調用?

存儲過程是一個預編譯的SQL 語句, 優點是允許子產品 化的設計, 就是說隻需建立一次,  以後在該程式中就可以調用多次。 如果某次操作需要執行多次SQL ,  使用存儲過程比單純SQL 語句執行要快。可以用一個指令對象來調用存儲過程。

44、如何通俗地了解三個範式?

第一範式:1NF 是對 屬性 的原 子性 限制 ,  要求 屬性 具有 原子 性 ,  不可 再分 解 ;

第二範式:2NF 是對 記錄 的惟 一性 限制 ,  要求 記錄 有惟 一标 識 ,  即實 體的 惟一 性 ;

第三範式:3NF 是對 字段備援性的限制,  即任何字段不能由其他字段派生出來, 它要求字段沒有備援。  。

範式化設計優缺點:

優點:

可以盡量得減少資料備援, 使得更新快,  體積小

缺點:對于 查詢需要多個表進行關聯, 減少寫得效率增加讀得效率, 更難進行索引優化

反範 化:

優點:可以 減少表得關聯,可以更好得進行索引優化

缺點:資料備援以及資料異常, 資料得修改需要更多的成本

45、什麼是基本表?什麼是視圖?

基本表是本身獨立存在的表,在 SQL  中一個關系就對應一個表。    視圖是從 一個或幾個基本表導出的表。視圖本身不獨立存儲在數 據庫中, 是一個虛表

46、試述視圖的優點?

(1)  視圖 能夠 簡化 使用者 的操 作

(2)  視圖 使用 戶能 以多 種角 度看 待同 一數 據 ;

(3)  視圖 為數 據庫 提供了一定程度的邏輯獨立性;

(4)  視圖 能夠 對機 密數 據提 供 安全保護。

47、 NULL 是什麼意思

NULL 這個值表示UNKNOWN(未知 ):它不 表示  “” (空字 符串 )。對 NULL 這 個值 的任何比較都會生産一個NULL 值。 您不能把任何值與一個 NULL 值進行比 較, 并在邏輯上希望獲得一個答案。

使用IS NULL 來進行NULL 判斷

48、主鍵、外鍵和索引的差別?

定義:

主鍵– 唯一 辨別 一條 記錄 , 不能有重複的, 不允許為空

外鍵– 表的外鍵是另一表的主鍵,  外鍵 可以 有重 複的 ,  可以 是空 值

索引– 該字 段沒 有重 複值 ,  但 可以 有一 個空 值

作用:

主鍵– 用來 保證 資料 完整性

外鍵– 用來 和其 他表 建立 聯系用的

索引– 是提 高查詢排序的速度

個數:

主鍵– 主鍵隻能有一個

外鍵– 一個 表可 以有 多個外鍵

索引– 一個表可以有多個唯一索引

49、你可以用什麼來確定表格裡的字段隻接受特定範圍裡的值?

Check 限制,  它在資料庫表格裡被定義, 用來限制輸入該列的值。

觸發器也可以被用來限制資料庫表格裡的字段能夠接受 的值, 但是這種辦法要求觸發器在表格 裡被定義, 這可能會在某些情況下影響到性能。

50、說說對 SQL 語句優化有哪些方法?

1 、  Where 子句中: where 表 之 間 的 連 接 必 須 寫 在 其 他 Where 條 件 之 前 ,  那 些 可 以過 濾掉最大數量記錄的條件必須寫在Where 子 句 的 末 尾 . HAVING 最 後 。

2、 用EXISTS 替代IN、 用NOT EXISTS 替代NOT IN。

3 、     避 免 在 索 引 列 上 使 用 計 算

4、  避免在索引列上使用IS NULL 和IS NOT NULL

5、對 查 詢進行優化,應盡量避免全表掃描,首先應考慮在 where  及  order by  涉 及 的列上建立索引。