數據庫複習

1. 數據庫安全性與操做系統安全性的關係?
安全性問題不是數據庫系統所獨有的,全部計算機系統都有這個問題。只是在數據庫系統中大量數據集中存放,並且爲許多最終用戶直接共享,從而使安全性問題更爲突出。系統安全保護措施是否有效是數據庫系統的主要指標之一。數據庫的安全性和計算機系統的安全性,包括操做系統,網絡系統的安全性是緊密聯繫、相互支持的。mysql

2. SQL 主鍵約束和惟一約束有什麼區別呢?
主鍵不能爲空而惟一能夠爲空,相同點就是都不容許重複。sql

3. 什麼是基本表?什麼是視圖?二者的區別和聯繫是什麼?
表是實實在在得保存數據的實體,寫入的數據都保存在表中;而視圖是不保存數據的,也沒有數據。視圖就是一條語句,實際上視圖從表中去數據,只是給咱們的感受好像直接從表中取得同樣。
表能夠創建各類觸發器,能夠創建索引,能夠創建主鍵、約束等;可是視圖不能創建這些對象( 視圖能夠創建替代觸發器)。
表和視圖能夠更新,可是視圖的更新受到約束。好比,GROUP BY 和錶鏈接生成的視圖不能更新表是實實在在的保存數據的實體,寫入的數據都保存在表中;而視圖是不保存數據的,也沒有數據。
4. 數據庫索引
目的:提供多種存儲路徑,加快查找速度。數據庫

創建索引須要考慮的問題:安全

沒有查詢、統計的須要則不建;
數據增刪改頻繁,系統會花費許多時間來維護索引,從而下降了查詢效率。
5. 哪些視圖是能夠更新、哪些是不能夠更新的
(1)簡單視圖網絡

就是由一個表生成出來的視圖,這種狀況你更新它就和更新表同樣數據結構

(2)二次加工出來的簡單視圖併發

仍然是一個表出來的視圖,可是視圖中存在經過函數或計算二次加工出來的其餘字段。更新數據庫設計

的時候只要不更新這些加工出來的字段也是能夠更新的。函數

(3)組合視圖性能

經過表之間關聯聯合等出來的複雜視圖。這種視圖更新的時候要注意你所更新的列要來自同

一個表,也是能夠更新的。

(4)靜態視圖

這種視圖等同於表能夠直接更新,可是更新的數據盡在視圖中反映出來,不反映到原表

(5)其餘視圖

經過表函數等其餘生成的更爲複雜的視圖。通常不可更新

六、數據庫完整性與安全性的區別
完整性和安全性是兩個不一樣的概念。前者是爲了防止數據庫中存在不符合語義的數據,防止錯誤信息的輸入和輸出形成的無效操做和錯誤結果,然後者是防止數據庫被惡意的破壞和非法的存取。固然,完整性和安全性是密切相關的。特別是從系統實現的方法來看,某一種機制經常既能夠用於安全保護亦可用於完整性保證。

七、數據庫保護(訪問)的內容有哪些?

  • 利用權限機制和完整性約束防止非法數據進入數據庫;
  • 提供故障恢復能力;
  • 提供併發訪問控制。

八、 DBA 的職責是什麼?
DBA 負責全面管理和控制數據庫系統,其職責有:

  • 決定數據庫中的信息內容和結構:數據庫中要存放哪些信息
  • 決定數據庫的存儲結構和存取策略:得到較高的存取效率和存儲空間利用率
  • 定義數據的安全性要求和完整性約束條件:負責肯定各個用戶對數據庫的存取權限、 數據的保密級別和完整性約束條件
  • 監控數據庫的使用和運行:轉儲數據、維護日誌文件、故障恢復
  • 數據庫的改進和重組重構:對運行狀況進行記錄、統計分析,以此來不斷改進數據庫設計。

九、數據庫系統和文件系統相比有什麼優勢?

 

十、什麼是完整性約束?
完整性約束可確保數據庫中的數據正確性和相容性,主要包括:實體完整性、參照完整性、用戶自定義完整性

十一、DBMS 【數據庫管理系統】支持那幾種數據模型?
經常使用的是層次模型,網狀模型和關係模型(最重要)。新興的是面向對象數據模型和對象關係數據模型。

層次模型: 層次模型是指用樹行結構表示實體及其之間的聯繫,樹中每個節點表明一個記錄類型,樹狀結構表示實體型之間的聯繫。
在一個層次模型中的限制條件是:有且僅有一個節點,無父節點,此節點爲樹的根;其餘節點有且僅有一個父節點。
網狀模型的數據結構主要有如下兩個特徵:
(1)容許一個以上的節點無雙親。
(2)一個節點能夠有多於一個的雙親。

網狀模型:用有向圖結構表示實體類型及實體間聯繫的數據結構模型稱爲網狀模型關係實際上就是關係模式在某一時刻的狀態或內容。也就是說,關係模式是型,關係是它的值。關係模式是靜態的、穩定的,而關係是動態的、隨時間不斷變化的,由於關係操做在不斷地更新着數據庫中的數據。但在實際當中,經常把關係模式和關係統稱爲關係。
現實世界的實體以及實體間的各類聯繫均用關係來表示,從用戶角度看,關係模型中數據的邏輯結構是一張二維表。

十二、SQL(Structured Query Language)的四個組成部分?
① 數據定義語言(Data Definition Language);
② 查詢語言(Query Language);
③ 數據操縱語言(Data Manipulation Language);
④ 數據控制語言(Data Control Language)

1三、數據庫操縱語言舉例
數據操縱語言 DML(Data Manipulation Language),用戶經過它能夠實現對數據庫的基本操做。例如,對錶中數據的查詢(select)、插入(insert)、刪除(delete)和修改(update)

1四、介紹下有哪些應用數據庫?
大概知道的有:
桌面型:Access、Foxpro、DBase
企業型:SQL Server 系列、MySQL、Oracle、Sybase

非關係型數據庫:Nosql

15. 什麼是數據獨立性。
數據獨立性表示應用程序與數據庫中存儲的數據不存在依賴關係,包括邏輯數據獨立性和物理數據獨立性

邏輯數據獨立性指用戶的應用程序與數據庫的邏輯結構是相互獨立的。數據的邏輯結構改變了,應用程序不用改變。

例:增長一個字段,應用程序不用改變

是指當數據庫的模式發生改變時,只須要改變存在於外模式和概念模式之間的映射轉換,無需改變外模式或應用程序。

物理數據獨立性指用戶的應用程序與數據庫中數據的物理存儲是相互獨立的。當數據的物理存儲改變了,應用程序不用改變。

例:原本是一行行存放數據,如今是一列列存放數據,但應用程序能夠不變 或者 原本是用B樹建索引 後來使用hash建索引

是指當數據庫的內模式發生改變時,系統只要改變概念模式和內模式之間的映射轉換,而沒必要改變模式,從而不須要更改外模式。

1六、1NF 是啥,數據模式?
第一範式 是數據庫最基本的要求,即每個份量必須是不可分的數據項;
第二範式 是數據庫非主屬性對碼的部分函數依賴,即每個非主鍵徹底函數依賴於主鍵;
第三範式 是非主屬性對碼的傳遞依賴,即不包含已在其餘表中已包含的非主鍵信息,防止數據冗餘;
數據模式是基於選定的數據模型對數據進行的「型」的方面的刻畫,而相應的「實例」則是對數據「值」的方面的描述。先有數據模型,才能據其討論相應數據模式,有了數據模式,就能依據該模式獲得相應的實例。

1七、 數據庫的關係操做有哪些?各有什麼做用?
關係模型中經常使用的關係操做包括兩大部分:

選擇、投影、鏈接、除、並、交、差、笛卡爾積等查詢操做
增長、刪除、修改操做
查詢的表達能力是其中最主要的部分。

關係操做的特色是集合操做方式,即 操做的對象和結果都是集合。這種操做方式也稱爲 一次一集合(set-at-a-time) 的方式。相應地,非關係數據模型的數據操做方式則爲 一次一記錄(record-at-a-time) 的方式

1八、DB 併發操做一般帶來哪三類問題?
丟失修改(Lost Update):當一個事務修改了數據,而且這種修改尚未尚未提交到數據庫中時,另一個事務又對一樣的數據進行了修改,而且把這種修改提交到了數據庫中。這樣,數據庫中沒有出現第一個事務修改數據的結果,好像這種數據修改丟失了同樣。
髒讀(Dirty Read):當一個事務正在訪問數據,並對數據進行了修改,而這種修改尚未提交到數據庫中,這時,另外一個事務也訪問這個數據,而後使用了這個數據。由於這個數據是尚未提交的數據,那麼另外一個事務讀到的這個數據是髒數據,依據髒數據所作的操做多是不正確的。
不可重複讀(Non-Repeatable Read):在一個事務內,屢次讀同一數據。在這個事務尚未結束時,另外一個事務也訪問該同一數據,那麼,在第一個事務中的兩次讀數據之間,因爲第二個事務的修改,第一個事務兩次讀到的數據多是不同的。
1九、兩段鎖協議
所謂兩段鎖協議是指全部事務必須分兩個階段對數據項加鎖和解鎖

在對任何數據進行讀、寫操做以前,首先要申請並得到對該數據的封鎖;
並且在釋放一個封鎖以後,事務再也不申請和得到任何其餘封鎖。
加鎖階段:在該階段能夠進行加鎖操做。在對任何數據進行讀操做以前要申請並得到S鎖,在進行寫操做以前要申請並得到X鎖。加鎖不成功,則事務進入等待狀態,直到加鎖成功才繼續執行。
解鎖階段:當事務釋放了一個封鎖之後,事務進入解鎖階段,在該階段只能進行解鎖操做不能再進行加鎖操做。
所謂「兩段」鎖的含義是,事務分爲兩個階段,第一階段是得到封鎖,也稱爲擴展階段。
第一階段階段,事務能夠申請得到任何數據項上的任何類型的鎖,可是不能釋聽任何鎖。第二階段是釋放封鎖,也稱爲收縮階段。在這階段,事務能夠釋聽任何數據項上的任何類型的鎖,可是不能再申請任何鎖。
例如事務 T1 遵照兩段鎖協議,其封鎖序列是:(如右)

又如事務 T2 不遵照兩段鎖協議,其封鎖序列是:
Slock A … Unlock A … Slock B … Xlock C … Unlock C … Unlock B;

能夠證實,若併發執行的全部事務均遵照兩段鎖協議,則對這些事務的任何併發調度策略都是可串行化的。
另外要注意兩段鎖協議和防止死鎖的一次封鎖法的異同之處。一次封鎖法要求每一個事務必須一次將全部要使用的數據所有加鎖,不然就不能繼續執行,所以一次封鎖法遵照兩段鎖協議;可是兩段鎖協議並不要求事務必須一次將全部要使用的數據所有加鎖,所以遵照兩段鎖協議的事務可能發生死鎖

20、事務的四個特色?
事務的概念:用戶定義的一個數據庫操做序列,這些操做要麼全作要麼全不作,是一個不可分割的工做單位。

  • 一致性(Consistency)
  • 原子性(Atomicity)
  • 隔離性(Isolation)
  • 持續性(Durability)

2一、 數據庫恢復策略有哪幾種?

  • 事務內部的故障
  • 系統故障
  • 介質故障
  • 計算機病毒

2二、數據庫的三級模式
一、模式又稱概念模式或邏輯模式,對應於概念級,是對數據庫中所有數據的邏輯結構和特徵的整體描述,是全部用戶的公共數據視圖(全局視圖),反映了數據庫系統的總體觀。
二、外模式又稱子模式或用戶模式,對應於用戶級。它是某個或某幾個用戶所看到的數據庫的數據視圖,是與某一應用有關的數據的邏輯表示。外模式是從模式導出的一個子集,包含模式中容許特定用戶使用的那部分數據。外模式反映了數據庫的用戶觀。
三、內模式又稱存儲模式,對應於物理級,它是數據庫中全體數據的內部表示或底層描述,是數據庫最低一級的邏輯描述,它描述了數據在存儲介質上的存儲方式和物理結構,對應着實際存儲在外存儲介質上的數據庫。內模式是數據庫的存儲觀。在一個數據庫系統中,只有惟一的數據庫,於是做爲定義、描述數據庫存儲結構的內模式和定義、描述數據庫邏輯結構的模式,也是惟一的,但創建在數據庫系統之上的應用則是很是普遍、多樣的,因此對應的外模式不是惟一的,也不多是惟一的。

2三、什麼是表?什麼是視圖?二者的區別和聯繫是什麼?
表是實實在在得保存數據的實體,寫入的數據都保存在表中,而視圖是不保存數據的,也沒有數據。視圖就是一條語句,實際上視圖從表中取數據。只是給咱們的感受好像直接從表中取得同樣。表能夠創建各類觸發器,能夠創建索引,能夠創建主健,約束等。可是視圖不能創建這些對象(視圖能夠創建替代觸發器)。表和視圖能夠更新,可是視圖的更新受到約束。好比,GROUP BY 和錶鏈接生成的視圖不能更新表是實實在在的保存數據的實體,寫入的數據都保存在表中,而視圖是不保存數據的,也沒有數據。
聯繫:能夠理解爲視圖的數據都是從表中取出來,視圖就是你定下的一個框框而已,內容都是在表中。

2四、1NF 有哪些缺點?

  • 數據冗餘太大(每個系的系主任名字重複出現)
  • 更新異常(某個系更換系主任以後,必須將該系學生有關的每個元組)
  • 插入異常(若是一個系剛成立,尚無學生,就沒法將老師存入到數據庫中)
  • 刪除異常(若是學生都畢業了,在刪除學生時,把這個系的系主任的全部信息都刪除了)

2五、數據字典一般包含五個部分

  • 數據項
  • 數據結構
  • 數據流
  • 數據存儲
  • 處理過程

2六、數據庫中視圖的優勢
① 簡化用戶操做;
② 使用戶能以多種角度看待統一數據;
③ 對重構數據庫提供了必定程度的邏輯獨立性
④ 對機密數據提供安全保護
⑤ 能夠更清晰的表達查詢

26.在作數據庫開發中使用視圖的優勢有:
能夠訪問表中列的子集。在表中有些列是比較敏感的數據不想用戶看到的,如用戶密碼,員工工資等,用視圖能夠隱藏這些列。
能夠訪問表中行的子集。有時不想讓用戶看到與 TA 無關的數據時,能夠在 where 條件中過濾,如企業中子公司的員工只能看到 TA 所在子公司的同事資料,而不想其它子公司員工資料也顯示出來,用過濾後查詢出來的數據集組成視圖。
能夠重命名列名。在表中有些列名定義沒有表明意義,如列「abc」,爲了讓用戶看到列名就能夠知該列是什麼數據,能夠在組建視圖時重命名列名。
能夠快速訪問兩表或多表鏈接所組成的數據。有時要訪問表間鏈接所組成的數據集,能夠把查詢出來的數據集定義成視圖,能夠幫助快速訪問所需的數據。
能夠快速讀取用聚合函數運算所返回的數據集。有時用戶要讀取通過用聚合函數複雜運算後的結果集,每次讀取都是很耗時,這時能夠把這運算後的數據集組成視圖,就能夠避免每次讀取都要運算的消耗。總的來說,使用視圖在提升安全性的同時也加快查詢的速度。
2七、 數據庫的三要素
數據模型是一組嚴格定義的概念的集合,這些概念精確地描述了系統的靜態特徵(數據結構)、動態特徵(數據操做)和完整性約束條件,這就是數據模型的三要素。

2八、 數據庫索引
目的:提供多種存儲路徑,加快查找速度。

創建索引須要考慮的問題:

1。沒有查詢、統計的須要則不建

2。數據增刪改頻繁,系統會花費許多時間來維護索引,從而下降了查詢效率。

2九、哪些視圖是能夠更新、哪些是不能夠更新的,
行列子集視圖能夠更新;
① 由兩個以上基本表導出的視圖,不能夠更新;
② 字段來自於字段表達式或常數的視圖,不容許(Insert、Update),可是能夠 Delete;
③ 字段來自彙集函數的視圖不能夠更新;
④ 定義中含有 Group By 字句的視圖,不能夠更新;
⑤ 定義中含有 DISTINCT 字句的視圖,不能夠更新;
⑥ 定義中有嵌套查詢,而且內層查詢的 From 字句中涉及的表也是導出該視圖的基本表
的視圖,不能夠更新;
⑦ 不容許更新的視圖上定義的視圖也不容許更新。

30、日誌文件的定義與做用。
日誌文件是用來記錄事務對數據庫的更新操做的文件。
做用:在數據庫恢復中起着重要的做用,並協助後備副本進行介質故障恢復
日誌文件主要包含:事務標識、操做的類型、操做對象、更新前數據的舊值、更新後數據的新值。

3一、數據庫完整性與安全性的區別?
完整性和安全性是兩個不一樣的概念。前者是爲了防止數據庫中存在不符合語義的數據,防止錯誤信息的輸入和輸出形成的無效操做和錯誤結果, 然後者是防止數據庫被惡意的破壞和非法的存取。固然,完整性和安全性是密切相關的。特別是從系統實現的方法來看,某一種機制經常既能夠用於安全保護亦可用於完整性保證。

3二、數據庫有哪幾種備份策略,大概的操做
徹底備份、事務日誌備份、差別備份、文件備份

3三、DBMS 控制管理功能
① 數據庫定義和建立
② 數據組織、存儲和管理
③ 數據存取
④ 數據庫事務管理和運行管理
⑤ 數據庫的創建和維護

3四、數據庫採用什麼機制來保證數據庫併發操做的正確性?
併發控制:封鎖、時間戳、樂觀控制法。

3五、數據庫安全系統和計算機安全系統的人關係
安全性問題不是數據庫系統所獨有的,全部計算機系統都有這個問題。只是在數據庫系統中大量數據集中存放,並且爲許多最終用戶直接共享,從而使安全性問題更爲突出。系統安全保護措施是否有效是數據庫系統的主要指標之一。數據庫的安全性和計算機系統的安全性,包括操做系統,網絡系統的安全性是緊密聯繫,相互支持的。

3六、函數模板和類模板的區別
實例化不一樣。

3七、數據庫管理系統的完整性要完成的功能

  • 防止不合語意的數據
  • 防止無效操做和錯誤結果

38. 數據庫的兩種獨立性
物理獨立性指的是應用程序與數據存放在相互獨立的磁盤地址,內模式與模式映象保證了其物理獨立特性;
邏輯獨立性指的數據與程序邏輯結構上的獨立特性,數據或應用程序的邏輯結構發生變化性都不影響對方,外模式與模式映身保證了其邏輯獨立性。
邏輯數據獨立性指用戶的應用程序與數據庫的邏輯結構是相互獨立的。數據的邏輯結構改變了,應用程序不用改變。

例:增長一個字段,應用程序不用改變

是指當數據庫的模式發生改變時,只須要改變存在於外模式和概念模式之間的映射轉換,無需改變外模式或應用程序。

物理數據獨立性指用戶的應用程序與數據庫中數據的物理存儲是相互獨立的。當數據的物理存儲改變了,應用程序不用改變。

例:原本是一行行存放數據,如今是一列列存放數據,但應用程序能夠不變 或者 原本是用B樹建索引 後來使用hash建索引

是指當數據庫的內模式發生改變時,系統只要改變概念模式和內模式之間的映射轉換,而沒必要改變模式,從而不須要更改外模式。

3九、 DBMS 的控制操做有哪些
①數據的安全性保護;

②數據的完整性檢查;

③併發控制;

④數據庫恢復。

40、什麼是數據庫控制語言,試舉例說明
DCL 是用來設置或更改數據庫用戶角色權限的語句,主要包括 GRANT(受權)、DENY
(拒絕)、REVOKE(刪除)三類。

4一、數據庫兩級模式的做用?
三模式→①外模式/模式映像;②模式/內模式映像;
保證了數據庫系統中的數據可以具備較高的邏輯獨立性和物理獨立性。

4二、笛卡爾積
在數學中,兩個集合 X 和 Y 的笛卡兒積(Cartesian product),又稱直積,表示爲 X × Y,是其第一個對象是 X 的成員而第二個對象是 Y 的一個成員的全部可能的有序對。

4三、數據庫中 primary key 約束和 unique 約束有什麼區別?
主鍵約束:有一列或列的組合,其值能惟一的標識表中的每一行。
惟一約束:不容許數據庫表在指定列上具備相同的值,但容許有空值。
區別:一個表能夠定義多個惟一約束,但只能定義一個主鍵約束;空值的列上能夠定義惟一約束,不能定義主鍵約束。

1.數據庫索引
索引是對數據庫表中一列或多列的值進行排序的一種結構,使用索引能夠快速訪問數據庫表中的特定信息

若是想按特定職員的姓來查找他或她,則與在表中搜索全部的行相比,索引有助於更快地獲取信息。
索引的一個主要目的就是加快檢索表中數據的方法,亦能協助信息搜索者儘快的找到符合限制條件的記錄ID的輔助數據結構。
2.數據庫事務
數據庫事務(Database Transaction),是指做爲單個邏輯工做單元執行的一系列操做,要麼徹底地執行,要麼徹底地不執行。

事務處理能夠確保除非事務性單元內的全部操做都成功完成,不然不會永久更新面向數據的資源。

經過將一組相關操做組合爲一個要麼所有成功,要麼所有失敗的單元,能夠簡化錯誤恢復並是應用程序更加可靠。

一個邏輯工做單元要成爲事務,必須知足所謂的ACID(原子性、一致性、隔離性和持久性)屬性。

事務是數據庫運行中的邏輯工做單位,由DBMS中的事務管理子系統負責事務的處理。
3.數據庫事務隔離
同一時間,只容許一個事務請求同一數據,不一樣的事務之間彼此沒有任何干擾。

好比A正在從一張銀行卡取錢,在A取錢的過程結束前,B不能向這張卡轉帳。
4.等值聯接(inner join)和左聯接(left join)
左聯接返回包括左表中的全部記錄和右表中聯接字段相等的記錄
右聯接返回包括右表中的全部記錄和左表中聯結字段相等的記錄
等值聯接只返回兩個表中聯接字段相等的行
5.數據庫事務的一致性
事務是由一系列對系統中數據進行訪問與更新的操做所組成的一個程序執行邏輯單元。事務是DBMS中最基礎的單位,事務不可分割。
事務具備四個特性,分別是:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Duration),簡稱ACID。

(1)原子性
原子性是指事務所包含的全部操做要麼所有成功,要麼所有失敗的回滾,所以事務的操做若是成功就必需要徹底應用到數據庫,若是操做失敗則不能對數據庫有任何影響。
(2)一致性
一致性是指事務必須使數據庫從一個一致性狀態變換到另外一個一致性狀態,也就是說事務執行以前和執行以後都必須處於一致性狀態。
拿轉帳來講,假設用戶A和用戶B二者的錢加起來一共是5000,那麼無論A和B之間如何轉帳,轉帳幾回,事務結束後兩個用戶的錢加起來應該還得是5000,這就是事務的一致性。
(3)隔離性
隔離性是當多個用戶併發訪問數據庫時,好比操做同一張表,數據庫爲每一個用戶開啓的事務,不能被其餘事務的操做所幹擾,多個併發事務之間要相互隔離。
即要達到這麼一種效果:對於任意兩個併發的事務T1和T2,在事務T1看來,T2要麼在T1開始以前就已經結束,要麼在T1結束以後纔開始,這樣每一個事務都感受不到有其餘事務在併發地執行。
多個事務併發訪問時,事務之間是隔離的,一個事務不該該影響其它事務運行效果。這指的是在開發環境中,當不一樣事務操做相同的數據時,每一個事務都有各自的完整數據空間。由併發事務所作的修改必須與任何其餘併發事務所作的修改隔離。
不一樣的隔離級別:
Read Uncommitted(讀取未提交):最低的隔離級別,什麼都不須要作,一個事務能夠讀到另外一個事務提交的結果。全部的併發事務問題都會發生。
Read Committed(讀取提交內容):只有在事務提交後,其更新結果纔會被其餘事務看見。能夠解決髒讀問題。
Repeated Read(可重複讀):在一個事務中,對於同一份數據的讀取結果老是相同的,不管是否有其餘事務對這份數據進行操做,以及這個事務是否提交。能夠解決髒讀、不可重複讀。
Serialization(可串行化):事務串行化執行,隔離級別最高,犧牲了系統的併發性。能夠解決併發事務的全部問題。
(4)持久性
持久性是指一個事務一旦被提交了,那麼對數據庫中的數據的改變就是永久性的,即使是在數據庫系統遇到故障的狀況下也不會丟失提交事務的操做。
例如咱們在使用JDBC操做數據庫時,在提交事務方法後,提示用戶操做完成,當咱們程序執行完成直到看到提示後,就能夠認定事務已經正確提交,即便這時候數據庫出現了問題,也必需要將咱們的事務徹底執行完成,不然就會形成咱們看到提示事務處理完畢,可是數據庫由於故障而沒有執行事務的重大錯誤。
6.索引是什麼,多加索引必定會好嗎
數據庫索引是爲了增長查詢速度而對錶字段附加的一種標識,是對數據庫表中一列或多列的值進行排序的一種結構。
數據庫在執行一條sql語句的時候,默認的方式是根據搜索條件進行全表掃描,遇到匹配條件的就加入搜索結果集合。

若是咱們對某一字段增長索引,查詢時就會先去索引列表中一次定位到特定值的行數,大大減小遍歷匹配的行數,因此能明顯增長查詢的速度。
優勢:
(1)經過建立惟一性索引,能夠保證數據庫表中每一行數據的惟一性
(2)能夠大大加快數據庫的檢索速度,這也是建立索引的最主要的緣由。
(3)能夠加速表和表之間的鏈接,特別是在實現數據的參考完整性方面特別有意義。
(4)在使用分組和排序子句進行數據檢索時,一樣能夠顯著減小查詢中分組和排序的時間
(5)經過使用索引,能夠在查詢的過程當中,使用優化隱藏器,提升系統的性能
缺點:
(1)建立索引和維護索引要耗費時間,這種時間隨着數據量的增長而增長。
(2)索引須要佔物理空間,除了數據表中佔數據空間以外,每個索引還要佔必定的物理空間,若是創建聚鏃索引,那麼須要的空間就會更大。
(3)當對錶中的數據進行增長、刪除和修改的時候,索引也要動態的維護,這樣就下降了數據的維護速度
添加索引的規則:
(1)在查詢中不多使用的列或者參考的列不該該建立索引。這是由於,既然這些列不多使用到,所以有索引或者無索引,並不能提升查詢速度。

相反,因爲增長了索引,反而下降了系統的維和速度和增大了空間需求。
(2)只有不多數據值的列也不該該增長索引。因爲這些列的不多,例如人事表的性別列,在查詢的結果中,結果集的數據佔了表中數據行的很大比例,即須要在表中搜索的數據行的比例很大。增長索引,並不能明顯加快檢索速度。
(3)定義爲text、image和bit數據類型的列不該該增長索引。這是由於,這些列的數據量要麼至關大,要麼取值不多。
(4)當修改性能遠遠大於檢索性能時,不該該建立索引。這是由於,修改性能和檢索性能是互相矛盾的。當增長索引時,會提升檢索性能,可是會下降修改性能。當減小索引時,會提升修改性能,下降檢索性能。所以,當修改性能遠遠大於檢索性能時,不該該建立索引。
7.數據庫的三大範式
第一範式:當關系模式R的全部屬性都不能再分解爲更基本的數據單位時,稱R是知足第一範式,即屬性不可分
第二範式:若是關係模式R知足第一範式,而且R的全部非主鍵屬性徹底依賴於R的每個候選關鍵屬性,稱R知足第二範式。
第三範式:設R是一個知足第一範式條件的關係模式,X是R的任意屬性集,若是X非傳遞依賴於R的任意一個候選關鍵字,稱R知足第三範式,即非主屬性不傳遞依賴於鍵碼

8.mysql的MVCC機制
MVCC是一種多版本併發控制機制,是Mysql的InnoDB存儲引擎實現隔離級別的一種具體方式,用於實現提交讀和可重複讀這兩種隔離級別。MVCC是經過保存數據在某個時間點的快照來實現該機制,其在每行記錄後面保存兩個隱藏的列,分別保存這個行的建立版本號和刪除版本號,而後InnoDB的MVCC使用到的快照存儲在Undo日誌中,該日誌經過回滾指針把一個數據行全部快照鏈接起來。
9.SQL優化方法有哪些
經過創建索引對查詢進行優化;
查詢進行優化,應儘可能避免全表掃描。
10.ER圖
實體聯繫圖(Entity-Relationship,E-R),有三個組成部分:實體、屬性、聯繫。用來進行關係型數據庫系統的概念設計。
實體:用矩形表示,矩形框內寫明實體名。
屬性:用橢圓形表示,並用無向邊將其與相應的實體鏈接起來。
聯繫:用菱形表示,菱形框內寫明聯繫名。
ER模型轉換爲關係模式的原則:
一對一:遇到一對一關係的話,在兩個實體任選一個添加另外一個實體的主鍵便可。
一對多:遇到一對多關係的話,在多端添加另外一端的主鍵。
多對多:遇到多對多關係的話,咱們須要將聯繫轉換爲實體,而後在該實體上加上另外兩個實體的主鍵,做爲聯繫實體的主鍵,而後再加上聯繫自身帶的屬性便可。

 

 

參考:

  • https://blog.csdn.net/kkm09/article/details/105136235
  • https://blog.csdn.net/weixin_40605573/article/details/105460410
相關文章
相關標籤/搜索