資料庫常見的基礎問題

2021-09-19 08:15:20 字數 2586 閱讀 3225

1. sql語言包括哪些型別?

資料定義:create table,alter table,drop table, craete/drop index

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

資料控制:grant,revoke

2. 內聯接,外聯接區別?

內連線是保證兩個表中所有的行都要滿足連線條件,而外連線則不然。

在外連線中,某些不滿條件的列也會顯示出來,也就是說,只限制其中乙個表的行,而不限制另乙個表的行。分左連線、右連線、全連線三種。

等連線(內連線)、非等連線、自連線、外連線(左、右、全) or hash join/merge join/nest loop(cluster join)/index join

1)內連線:只連線匹配的行 select a.c1,b.c2 from a join b on a.c3 = b.c3;

2)左外連線:包含左邊表的全部行(不管右邊的表中是否存在與它們匹配的行)以及右邊表中全部匹配的行 select a.c1,b.c2 from a left join b on a.c3 = b.c3;

3)右外連線:包含右邊表的全部行(不管左邊的表中是否存在與它們匹配的行)以及左邊表中全部匹配的行 select a.c1,b.c2 from a right join b on a.c3 = b.c3;

4)全外連線:包含左、右兩個表的全部行,不管在另一邊的表中是否存在與它們匹配的行 select a.c1,b.c2 from a full join b on a.c3 = b.c3;

5)(theta)連線:使用等值以外的條件來匹配左、右兩個表中的行 select a.c1,b.c2 from a join b on a.c3 != b.c3;

6)交叉連線:生成笛卡爾積——它不使用任何匹配或者選取條件,而是直接將乙個資料來源中的每個行與另乙個資料來源的每個行一一匹配 select a.c1,b.c2 from a,b;

3. 什麼是儲存過程?用什麼來呼叫?

儲存過程是乙個預編譯的sql語句, 簡單的說儲存過程是為了完成某個資料庫中的特定功能而編寫的語句集,該語句集包括sql語句(對資料的增刪改查)、條件語句和迴圈語句等。優點是允許模組化的設計,就是說只需建立一次,以後在該程式中就可以呼叫多次。如果某次操作需要執行多次sql,使用儲存過程比單純sql語句執行要快。可以用乙個命令物件來呼叫儲存過程(call)。

4.觸發器的作用?

觸發器是一中特殊的儲存過程,主要是通過事件來觸發而被執行的。它可以強化約束,來維護資料的完整性和一致性,可以跟蹤資料庫內的操作從而不允許未經許可的更新和變化。可以聯級運算。如,某錶上的觸發器上包含對另乙個表的資料操作,而該操作又會導致該錶觸發器被觸發。

5. 索引的作用?和它的優點缺點是什麼?

索引就一種特殊的查詢表,資料庫的搜尋引擎可以利用它加速對資料的檢索。它很類似與現實生活中書的目錄,不需要查詢整本書內容就可以找到想要的資料。索引可以是唯一的,建立索引允許指定單個列或者是多個列。缺點是它減慢了資料錄入的速度,同時也增加了資料庫的尺寸大小。

6. 什麼是記憶體洩漏?

一般我們所說的記憶體洩漏指的是堆記憶體的洩漏。堆記憶體是程式從堆中為其分配的,大小任意的,使用完後要顯示釋放記憶體。當應用程式用關鍵字new等建立物件時,就從堆中為它分配一塊記憶體,使用完後程式呼叫free或者delete釋放該記憶體,否則就說該記憶體就不能被使用,我們就說該記憶體被洩漏了。

7. 如何維護資料庫的完整性和一致性?

盡可能使用約束,如check,主鍵,外來鍵,非空字段等來約束,這樣做效率最高,也最方便。其次是使用觸發器,這種方法可以保證,無論什麼業務系統訪問資料庫都可以保證資料的完整新和一致性。最後考慮的是自寫業務邏輯,但這樣做麻煩,程式設計複雜,效率低下。

8. 什麼是事務?什麼是鎖?

事務就是被繫結在一起作為乙個邏輯工作單元的sql語句分組,如果任何乙個語句操作失敗那麼整個操作就被失敗,以後操作就會回滾到操作前狀態,或者是上有個節點。為了確保要麼執行,要麼不執行,就可以使用事務。要將一組語句作為事務考慮,就需要通過acid測試,即原子性,一致性,隔離性和永續性。

鎖:在所有的dbms中,鎖是實現事務的關鍵,鎖可以保證事務的完整性和併發性。與現實生活中鎖一樣,它可以使某些資料的擁有者,在某段時間內不能使用某些資料或資料結構。當然鎖還分級別的。共享鎖(唯讀不寫)、排他鎖(可讀可寫)

9. 事務的隔離級別有哪些?

事務隔離級別包括: 原子性,即不可分割性,事務要麼全部被執行,要麼就全部不被執行; 一致性或可串性,事務的執行使得資料庫從一種正確狀態轉換成另一種正確狀態; 隔離性,在事務正確提交之前,不允許把該事務對資料的任何改變提供給任何其他事務; 永續性,事務正確提交後,其結果將永久儲存在資料庫中,即使在事務提交後有了其他故障,事務的處理結果也會得到儲存。

10. 什麼叫檢視?游標是什麼?

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

游標:是對查詢出來的結果集作為乙個單元來有效的處理。游標可以定在該單元中的特定行,從結果集的當前行檢索一行或多行。可以對結果集當前行做修改。一般不使用游標,但是需要逐條處理資料的時候,游標顯得十分重要。游標用於定位結果集的行,通過判斷全域性變數@@fetch_status可以判斷是否到了最後,通常此變數不等於0表示出錯或到了最後。

資料庫常見的問題

資料庫常見的問題 說說資料庫的索引 單列索引 普通索引,主鍵索引,唯一索引 唯一索引可以為空 組合索引 索引的好處 提高效率,避免全表掃瞄 可以10w資料的時候可以使用 索引的壞處 維護和建立的時間比較長,會影響效率,在增刪的時候會有問題 原子性 隔離性 一致性 永續性 併發的時候出現的問題 髒讀 ...

資料庫常見問題

髒讀 事務b讀取事務a還沒有提交的資料 不可重複讀 兩次事務讀的資料不一致 幻讀 事務a修改了資料,事務b也修改了資料,這時在事務a看來,明明修改了資料,咋不一樣 會出現 不會出現 資料庫 聯機事務處理oltp on line transaction processing 儲存的資料量小,方便操作,...

PostgreSQL資料庫常見問題

insert into test values st transform st geomfromtext point 10070507.650288 4282901.6281314 900913 insert into test values st transform st geomfromtext...