国产在线精品一级A片-国产另类欧美-国产精品va在线观看一-我要找美国一级片黄色|www.zheinei.com

sql面試題及答案

時間:2022-11-23 11:23:42 面試技巧 我要投稿
  • 相關(guān)推薦

sql面試題及答案

  數(shù)據(jù)庫面試的技術(shù)員,對常見的面試題目了解會對面試結(jié)果有所幫助。以下是陽光網(wǎng)小編為大家整理的sql面試題及答案,希望可以幫到大家。

sql面試題及答案

  sql面試題及答案一

  1. 在一個查詢中,使用哪一個關(guān)鍵字能夠除去重復(fù)列值?

  答案:使用distinct關(guān)鍵字

  2. 什么是快照?它的作用是什么?

  答案:快照Snapshot是一個文件系統(tǒng)在特定時間里的鏡像,對于在線實(shí)時數(shù)據(jù)備份非常有用。快照對于擁有不能停止的應(yīng)用或具有常打開文件的文件系統(tǒng)的備份非常重要。對于只能提供一個非常短的備份時間而言,快照能保證系統(tǒng)的完整性。

  3. 解釋存儲過程和觸發(fā)器

  答案:

  存儲過程是一組Transact-SQL語句,在一次編譯后可以執(zhí)行多次。因?yàn)椴槐刂匦戮幾gTransact-SQL語句,所以執(zhí)行存儲過程可以提高性能。

  觸發(fā)器是一種特殊類型的存儲過程,不由用戶直接調(diào)用。創(chuàng)建觸發(fā)器時會對其進(jìn)行定義,以便在對特定表或列作特定類型的數(shù)據(jù)修改時執(zhí)行。

  4. SQL Server是否支持行級鎖,有什么好處?

  答案:支持動態(tài)行級鎖定

  SQL Server 2000動態(tài)地將查詢所引用的每一個表的鎖定粒度調(diào)整到合適的級別。當(dāng)查詢所引用的少數(shù)幾行分散在一個大型表中時,優(yōu)化數(shù)據(jù)并行訪問的最佳辦法是使用粒度鎖,如行鎖。但是,如果查詢引用的是一個表中的大多數(shù)行或所有行,優(yōu)化數(shù)據(jù)并行訪問的最佳辦法可以是鎖定整個表,以盡量減少鎖定開銷并盡快完成查詢。

  SQL Serve 2000通過為每個查詢中的每個表選擇適當(dāng)?shù)逆i定級別,在總體上優(yōu)化了數(shù)據(jù)并發(fā)訪問。對于一個查詢,如果只引用一個大型表中的幾行,則數(shù)據(jù)庫引擎可以使用行級鎖定;如果引用一個大型表的幾頁中的多行,則使用頁級鎖定;如果引用一個小型表中的所有行,則使用表級鎖定。

  5. 數(shù)據(jù)庫日志干什么用,數(shù)據(jù)庫日志滿的時候再查詢數(shù)據(jù)庫時會出現(xiàn)什么情況。

  答案:每個數(shù)據(jù)庫都有事務(wù)日志,用以記錄所有事務(wù)和每個事務(wù)對數(shù)據(jù)庫所做的修改。

  6. 存儲過程和函數(shù)的區(qū)別?

  答案:存儲過程是用戶定義的一系列SQL語句的集合,涉及特定表或其它對象的任務(wù),用戶可以調(diào)用存儲過程,而函數(shù)通常是數(shù)據(jù)庫已定義的方法,它接收參數(shù)并返回某種類型的值并且不涉及特定用戶表

  7. 事務(wù)是什么?

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

  (1) 原子性

  事務(wù)必須是原子工作單元;對于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。

  (2) 一致性

  事務(wù)在完成時,必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關(guān)數(shù)據(jù)庫中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時,所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如 B 樹索引或雙向鏈表)都必須是正確的。

  (3) 隔離性

  由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)不會查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因?yàn)樗軌蛑匦卵b載起始數(shù)據(jù),并且重播一系列事務(wù),以使數(shù)據(jù)結(jié)束時的狀態(tài)與原始事務(wù)執(zhí)行的狀態(tài)相同。

  (4) 持久性

  事務(wù)完成之后,它對于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。

  8. 游標(biāo)的作用?如何知道游標(biāo)已經(jīng)到了最后?

  答案:游標(biāo)用于定位結(jié)果集的行,通過判斷全局變量@@FETCH_STATUS可以判斷是否到了最后,通常此變量不等于0表示出錯或到了最后。

  9. 觸發(fā)器分為事前觸發(fā)和事后觸發(fā),這兩種觸發(fā)有何區(qū)別?語句級觸發(fā)和行級觸發(fā)有何區(qū)別?

  答案:

  事前觸發(fā)器運(yùn)行于觸發(fā)事件發(fā)生之前,而事后觸發(fā)器運(yùn)行于觸發(fā)事件發(fā)生之后。通常事前觸發(fā)器可以獲取事件之前和新的字段值。

  語句級觸發(fā)器可以在語句執(zhí)行前或后執(zhí)行,而行級觸發(fā)在觸發(fā)器所影響的每一行觸發(fā)一次。

  10. 解決死鎖的方法有哪些?

  答案:

  解決手段一:SQL Server自動檢測和消除死鎖

  解決手段二:設(shè)置死鎖優(yōu)先級

  解決手段三:設(shè)置鎖定超時

  解決手段四:使用更新鎖避免死鎖

  sql面試題及答案二

  1. 提高數(shù)據(jù)庫運(yùn)行效率的辦法有哪些?

  答案:在給定的系統(tǒng)硬件和系統(tǒng)軟件條件下,提高數(shù)據(jù)庫系統(tǒng)的運(yùn)行效率的辦法是:

  (1) 在數(shù)據(jù)庫物理設(shè)計時,降低范式,增加冗余, 少用觸發(fā)器, 多用存儲過程。

  (2) 當(dāng)計算非常復(fù)雜、而且記錄條數(shù)非常巨大時(例如一千萬條),復(fù)雜計算要先在數(shù)據(jù)庫外面,以文件系統(tǒng)方式用C++語言計算處理完成之后,最后才入庫追加到表中去。這是電信計費(fèi)系統(tǒng)設(shè)計的經(jīng)驗(yàn)。

  (3) 發(fā)現(xiàn)某個表的記錄太多,例如超過一千萬條,則要對該表進(jìn)行水平分割。水平分割的做法是,以該表主鍵PK的某個值為界線,將該表的記錄水平分割為兩個表。若發(fā)現(xiàn)某個表的字段太多,例如超過八十個,則垂直分割該表,將原來的一個表分解為兩個表。

  (4) 對數(shù)據(jù)庫管理系統(tǒng)DBMS進(jìn)行系統(tǒng)優(yōu)化,即優(yōu)化各種系統(tǒng)參數(shù),如緩沖區(qū)個數(shù)。

  (5) 在使用面向數(shù)據(jù)的SQL語言進(jìn)行程序設(shè)計時,盡量采取優(yōu)化算法。總之,要提高數(shù)據(jù)庫的運(yùn)行效率,必須從數(shù)據(jù)庫系統(tǒng)級優(yōu)化、數(shù)據(jù)庫設(shè)計級優(yōu)化、程序?qū)崿F(xiàn)級優(yōu)化,這三個層次上同時下功夫。

  2. 通俗地理解三個范式

  答案:通俗地理解三個范式,對于數(shù)據(jù)庫設(shè)計大有好處。在數(shù)據(jù)庫設(shè)計中,為了更好地應(yīng)用三個范式,就必須通俗地理解三個范式(通俗地理解是夠用的理解,并不是最科學(xué)最準(zhǔn)確的理解):

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

  第二范式:2NF是對記錄的惟一性約束,要求記錄有惟一標(biāo)識,即實(shí)體的惟 一性;

  第三范式:3NF是對字段冗余性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗余。沒有冗余的數(shù)據(jù)庫設(shè)計可以做到。但是,沒有冗余的數(shù)據(jù)庫未必是最好的數(shù)據(jù)庫,有時為了提高運(yùn)行效率,就必須降低范式標(biāo)準(zhǔn),適當(dāng)保留冗余數(shù)據(jù)。具體做法是:在概念數(shù)據(jù)模型設(shè)計時遵守第三范式,降低范式標(biāo)準(zhǔn)的工作放到物理數(shù)據(jù)模型設(shè)計時考慮。降低范式就是增加字段,允許冗余。

  3. 簡述存儲過程的優(yōu)缺點(diǎn)

  優(yōu)點(diǎn):

  1. 更快的執(zhí)行速度:存儲過程只在創(chuàng)造時進(jìn)行編譯,以后每次執(zhí)行存儲過程都不需再重新編譯,而一般SQL語句每執(zhí)行一次就編譯一次,所以使用存儲過程可提高數(shù)據(jù)庫執(zhí)行速度;

  2. 與事務(wù)的結(jié)合,提供更好的解決方案:當(dāng)對數(shù)據(jù)庫進(jìn)行復(fù)雜操作時(如對多個表進(jìn)行Update、Insert、Query和Delete時),可將此復(fù)雜操作用存儲過程封裝起來與數(shù)據(jù)庫提供的事務(wù)處理結(jié)合一起使用;

  3. 支持代碼重用:存儲過程可以重復(fù)使用,可減少數(shù)據(jù)庫開發(fā)人員的工作量;4. 安全性高:可設(shè)定只有某此用戶才具有對指定存儲過程的使用權(quán)。

  缺點(diǎn):

  1. 如果更改范圍大到需要對輸入存儲過程的參數(shù)進(jìn)行更改,或者要更改由其返回的數(shù)據(jù),則您仍需要更新程序集中的代碼以添加參數(shù)、更新 GetValue() 調(diào)用,等等,這時候估計比較繁瑣了。

  2. 可移植性差由于存儲過程將應(yīng)用程序綁定到 SQL Server,因此使用存儲過程封裝業(yè)務(wù)邏輯將限制應(yīng)用程序的可移植性。如果應(yīng)用程序的可移植性在您的環(huán)境中非常重要,則將業(yè)務(wù)邏輯封裝在不特定于 RDBMS 的中間層中可能是一個更佳的選擇。

  4. 主鍵和唯一索引有什么區(qū)別?

  答案:

  相同點(diǎn):它們都屬于實(shí)體完整性約束。

  不同點(diǎn):

  (1) 唯一性約束所在的列允許空值,但是主鍵約束所在的列不允許空值。

  (2) 可以把唯一性約束放在一個或者多個列上,這些列或列的組合必須有唯一的。但是,唯一性約束所在的列并不是表的主鍵列。

  (3) 唯一性約束強(qiáng)制在指定的列上創(chuàng)建一個唯一性索引。在默認(rèn)情況下,創(chuàng)建唯一性的非聚簇索引,但是,也可以指定所創(chuàng)建的索引是聚簇索引。

  (4) 建立主鍵的目的是讓外鍵來引用。

  (5) 一個表最多只有一個主鍵,但可以有很多唯一鍵。

  sql面試題及答案三

  1. 簡述索引存取的方法的作用和建立索引的原則

  作用:加快查詢速度。

  原則:

  (1) 如果某屬性或?qū)傩越M經(jīng)常出現(xiàn)在查詢條件中,考慮為該屬性或?qū)傩越M建立索引;

  (2) 如果某個屬性常作為最大值和最小值等聚集函數(shù)的參數(shù),考慮為該屬性建立索引;

  (3) 如果某屬性經(jīng)常出現(xiàn)在連接操作的連接條件中,考慮為該屬性或?qū)傩越M建立索引;

  2. 簡述數(shù)據(jù)庫的設(shè)計過程

  數(shù)據(jù)庫設(shè)計分為五個階段:

  需求分析:主要是準(zhǔn)確收集用戶信息需求和處理需求,并對收集的結(jié)果進(jìn)行整理和分析,形成需求說明。

  概念結(jié)構(gòu)設(shè)計:對用戶需求進(jìn)行綜合、歸納、抽象,形成一個與與具體的DBMS無關(guān)概念模型(一般為ER模型)。

  邏輯結(jié)構(gòu)設(shè)計:將概念結(jié)構(gòu)設(shè)計的概念模型轉(zhuǎn)化為某個特定的DBMS所支持的數(shù)據(jù)模型,建立數(shù)據(jù)庫邏輯模式,并對其進(jìn)行優(yōu)化,同時為各種用戶和應(yīng)用設(shè)計外模式。

  物理結(jié)構(gòu)設(shè)計:為設(shè)計好的邏輯模型選擇物理結(jié)構(gòu),包括存儲結(jié)構(gòu)和存取方法等,建立數(shù)據(jù)庫物理模式。

  實(shí)施和維護(hù):實(shí)施就是使用DLL語言建立數(shù)據(jù)庫模式,將實(shí)際數(shù)據(jù)載入數(shù)據(jù)庫,建立真正的數(shù)據(jù)庫。維護(hù)階段是對運(yùn)行中的數(shù)據(jù)庫進(jìn)行評價、調(diào)整和修改。

  3. 什么是內(nèi)存泄漏?

  答案:一般我們所說的內(nèi)存泄漏指的是堆內(nèi)存的泄漏。堆內(nèi)存是程序從堆中為其分配的,大小任意的,使用完后要顯示釋放內(nèi)存。當(dāng)應(yīng)用程序用關(guān)鍵字new等創(chuàng)建對象時,就從堆中為它分配一塊內(nèi)存,使用完后程序調(diào)用free或者delete釋放該內(nèi)存,否則就說該內(nèi)存就不能被使用,我們就說該內(nèi)存被泄漏了。

  4. 什么是基本表?什么是視圖?

  答案:基本表是本身獨(dú)立存在的表,在 SQL 中一個關(guān)系就對應(yīng)一個表。

  視圖是從一個或幾個基本表導(dǎo)出的表。視圖本身不獨(dú)立存儲在數(shù)據(jù)庫中,是一個虛表

  5. 試述視圖的優(yōu)點(diǎn)

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

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

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

  (4) 視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)。

  6. 所有的視圖是否都可以更新?為什么?

  答案:不是。

  視圖是不實(shí)際存儲數(shù)據(jù)的虛表,因此對視圖的更新,最終要轉(zhuǎn)換為對基本表的更新。

  因?yàn)橛行┮晥D的更新不能惟一有意義地轉(zhuǎn)換成對相應(yīng)基本表的更新,所以,并不是所有的視圖都是可更新的。

  7. 哪類視圖是可以更新的?哪類視圖是不可更新的?各舉一例說明。

  答案:基本表的行列子集視圖一般是可更新的。若視圖的屬性來自集函數(shù)、表達(dá)式,則該視圖肯定是不可以更新的。

  8. 維護(hù)數(shù)據(jù)庫的完整性、一致性、你喜歡用觸發(fā)器還是自寫業(yè)務(wù)邏輯?為什么?

  答案:盡可能用約束(包括CHECK、主鍵、唯一鍵、外鍵、非空字段)實(shí)現(xiàn),這種方式的效率最好;其次用觸發(fā)器,這種方式可以保證無論何種業(yè)務(wù)系統(tǒng)訪問數(shù)據(jù)庫都能維持?jǐn)?shù)據(jù)庫的完整性、一致性;最后再考慮用自寫業(yè)務(wù)邏輯實(shí)現(xiàn),但這種方式效率最低、編程最復(fù)雜,當(dāng)為下下之策。

  9. 在為視圖創(chuàng)建索引前,視圖本身必須滿足哪些條件?

  (1) 視圖以及視圖中引用的所有表都必須在同一數(shù)據(jù)庫中,并具有同一個所有者

  (2) 索引視圖無需包含要供優(yōu)化器使用的查詢中引用的所有表。

  (3) 必須先為視圖創(chuàng)建唯一群集索引,然后才可以創(chuàng)建其它索引。

  (4) 創(chuàng)建基表、視圖和索引以及修改基表和視圖中的數(shù)據(jù)時,必須正確設(shè)置某些 SET 選項(xiàng)(在本文檔的后文中討論)。另外,如果這些 SET 選項(xiàng)正確,查詢優(yōu)化器將不考慮索引視圖。

  (5) 視圖必須使用架構(gòu)綁定創(chuàng)建,視圖中引用的任何用戶定義的函數(shù)必須使用 SCHEMABINDING 選項(xiàng)創(chuàng)建。

  (6) 另外,還要求有一定的磁盤空間來存放由索引視圖定義的數(shù)據(jù)。

  10. 什么是SQL Server的確定性函數(shù)和不確定性函數(shù)?

  答案:只要使用特定的輸入值集并且數(shù)據(jù)庫具有相同的狀態(tài),不管何時調(diào)用,始終都能范圍相同結(jié)果的函數(shù)叫確定性函數(shù)。幾十訪問的數(shù)據(jù)庫的狀態(tài)不變,每次書用特定的輸入值都可能范圍不同結(jié)果的函數(shù)叫非確定性函數(shù)。

【sql面試題及答案】相關(guān)文章:

SQL語言試題及答案04-02

經(jīng)典面試題及答案04-04

面試題及答案04-04

小升初面試題及答案12-09

經(jīng)典的面試題及答案分析12-09

php面試題及答案04-02

android面試題及答案04-04

邏輯面試題及答案12-09

護(hù)士面試題及答案11-26