數(shù)據(jù)庫(kù)的精彩筆記_第1頁(yè)
數(shù)據(jù)庫(kù)的精彩筆記_第2頁(yè)
數(shù)據(jù)庫(kù)的精彩筆記_第3頁(yè)
數(shù)據(jù)庫(kù)的精彩筆記_第4頁(yè)
數(shù)據(jù)庫(kù)的精彩筆記_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 HYPERLINK /html/2011/11/11919.html o 查看: 數(shù)據(jù)庫(kù)筆試題 數(shù)據(jù)庫(kù)筆試題 HYPERLINK /html/category/it-interview/database o View all posts in 數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù) 1.基礎(chǔ)知識(shí)點(diǎn):1NF:第一范式。假如關(guān)系模式R的所有屬性的值域中每一個(gè)值差不多上不可再分解的值,則稱R屬于第一范式模式。第一范式的模式要求屬性值不可再分裂成更小部分,即屬性項(xiàng)不能是屬性組合或由組屬性組成。2NF:第二范式。假如關(guān)系模式R為第一范式,同時(shí)R中每一個(gè)非主屬性完全函數(shù)依靠于R的某個(gè)候選鍵,則稱R為第二范式模式。(假如A是關(guān)系

2、模式R的候選鍵的一個(gè)屬性,則稱A是R的主屬性,否則稱A是R的非主屬性。) 3NF:第三范式。假如關(guān)系模式R是第二范式,且每個(gè)非主屬性都不傳遞依靠于R的候選鍵,則稱R是第三范式的模式。 BCNF:BC模式。假如關(guān)系模式R是第一范式,且每個(gè)屬性都不傳遞依靠于R的候選鍵,那么稱R為BCNF的模式。4NF:第四范式。設(shè)R是一個(gè)關(guān)系模式,D是R上的多值依靠集合。假如 D中成立非平凡多值依靠XY時(shí),X必是R的超鍵,那么稱R是第四范式的模式。2.試題1) 設(shè)有關(guān)系R(S,D,M),其函數(shù)依靠集F=SD,DM。則關(guān)系R至多滿足2NF。 解析:屬于依靠關(guān)系,所有至多滿足第二范式。2) 找出表ppp里面num最小

3、的數(shù),不能使用min函數(shù)。 答:select * from ppp where num1)。5) 寫出復(fù)制表、拷貝表和四表聯(lián)合的SQL語(yǔ)句。 答:復(fù)制表(只復(fù)制結(jié)構(gòu),源表名:A,新表名:B): select * into B from A where 1=0 拷貝表(拷貝結(jié)構(gòu),源表名:A,新表名:B): select * into B from A 四表聯(lián)查: select * from A,B,C,D where 關(guān)聯(lián)條件6) 在SQL Server中如何用SQL語(yǔ)句建立一張臨時(shí)表? 答: create table #Temp(字段1 類型,字段2 類型) 注意,臨時(shí)表要在表名前面加 “”。

4、7) %代表任意長(zhǎng)度(長(zhǎng)度能夠?yàn)?)的字符串,_ 代表任意單個(gè)字符。假如用戶要查詢的語(yǔ)句本身就含有%或_,這時(shí)就要使用escape短語(yǔ)對(duì)通配符進(jìn)行轉(zhuǎn)義了。8) 集函數(shù)SUM,AVG中的列必須是數(shù)值型。綜合的是選擇題9) 每一個(gè)部門的每個(gè)工種的工資最大值? select dept_id,job_cat,max(salary)from employee group by dept_id,job_cat;10) 在primary 和unique兩種約束的情況下,Oracle數(shù)據(jù)庫(kù)會(huì)隱形創(chuàng)建一個(gè)唯一索引。11) 在select語(yǔ)句中包含一個(gè)where關(guān)鍵詞,group by關(guān)鍵詞一般在where關(guān)鍵詞

5、之后,order by 關(guān)鍵詞一般在select語(yǔ)句中所有關(guān)鍵詞之后。12) select last_name,salary from employees order by salary; select last_name,salary from employees order by 2 asc; 這兩個(gè)SQL語(yǔ)句是相同的結(jié)果。13) 假如你想把時(shí)刻顯示成像“2005111014:44: 17”如此的格式,SQL語(yǔ)句: select to_char(sydate,yyyymmdd hh24:mi:ss)from dual;14) select語(yǔ)句中用來(lái)連接字符串的符號(hào)是+。15) 假如要從字符

6、串“Hello world”中提取出“ello world”如此的結(jié)果,SQL語(yǔ)句: select lower(trim(Hfrom Hello world)from dual;3.存儲(chǔ)過(guò)程和函數(shù)的區(qū)不是什么?答:存儲(chǔ)過(guò)程是用戶定義的一系列SQL語(yǔ)句的集合,涉及特定表或其他對(duì)象的任務(wù),用戶能夠調(diào)用存儲(chǔ)過(guò)程。而函數(shù)通常是數(shù)據(jù)庫(kù)已定義的方法,它同意參數(shù)并返回某種類型的值,同時(shí)不涉及特定用戶表。4.事務(wù)是什么?答:事務(wù)是作為一個(gè)邏輯單元執(zhí)行的一系列操作。一個(gè)邏輯工作單元必須有4個(gè)屬性,稱為ACID(原子性、一致性、隔離性和持久性)屬性,只有如此才能稱為一個(gè)事務(wù)。5.游標(biāo)的作用是什么?如何明白游標(biāo)差不

7、多到了最后?答:游標(biāo)用于定位結(jié)果集的行。通過(guò)推斷全局變量FETCH_STATUS能夠推斷其是否到了最后。通常此變量不等于0表示出錯(cuò)或到了最后。6.觸發(fā)器分為事前觸發(fā)和事后觸發(fā),這兩種觸發(fā)有何區(qū)不?語(yǔ)句級(jí)觸發(fā)和行級(jí)觸發(fā)有何區(qū)不?答:事前觸發(fā)器運(yùn)行于觸發(fā)事件發(fā)生之前,而事后觸發(fā)器運(yùn)行于觸發(fā)事件發(fā)生之后。語(yǔ)句級(jí)觸發(fā)器能夠在語(yǔ)句執(zhí)行前或后執(zhí)行,而行級(jí)觸發(fā)在觸發(fā)器所阻礙的每一行觸發(fā)一次。7.什么叫做SQL注入式攻擊?如何防范?答:所謂SQL注入式攻擊,確實(shí)是攻擊者把SQL命令插入到Web表單的輸入域頁(yè)面請(qǐng)求的查詢字符串中,欺騙服務(wù)器執(zhí)行惡意的SQL命令。在某些表單中,用戶輸入的內(nèi)容直接用來(lái)構(gòu)造動(dòng)態(tài)SQL

8、命令,或作為存儲(chǔ)過(guò)程的輸入?yún)?shù),這類表單特不容易受到SQL注入式攻擊。防范SQL注入式攻擊闖入:只要在利用表單輸入的內(nèi)容構(gòu)造SQL命令之前,把所有輸入內(nèi)容過(guò)濾一番就能夠了。過(guò)濾輸入內(nèi)容能夠按多種方式進(jìn)行。第一,替換單引號(hào),即把所有單獨(dú)出現(xiàn)的單引號(hào)改成兩個(gè)單引號(hào),防止攻擊者修改SQL命令的含義。第二,刪除用戶輸入內(nèi)容中的所有連字符,防止攻擊者順利獲得訪問(wèn)權(quán)限。第三,關(guān)于用來(lái)執(zhí)行查詢的數(shù)據(jù)庫(kù)賬戶,限制其權(quán)限。第四,用存儲(chǔ)過(guò)程來(lái)執(zhí)行所有的查詢。第五,檢查用戶輸入的合法性,確信輸入的內(nèi)容只包含合法的數(shù)據(jù)。數(shù)據(jù)檢查應(yīng)當(dāng)在客戶端和服務(wù)器端都執(zhí)行。第六,將用戶登錄名稱、密碼等數(shù)據(jù)加密保存。第七,檢查提取數(shù)據(jù)

9、的查詢所返回的記錄數(shù)量。8.為了防止在查詢記錄的時(shí)候被其他用戶更改記錄,應(yīng)該采納什么方法?如何用查詢語(yǔ)句實(shí)現(xiàn)該方法?答: 添加一個(gè)“時(shí)刻戳”類型的字段就能夠了。timestamp這種數(shù)據(jù)類型會(huì)依照當(dāng)前時(shí)刻自動(dòng)產(chǎn)生一個(gè)時(shí)刻字符串,確保這些數(shù)在數(shù)據(jù)庫(kù)中是唯一的。timestamp一般用做給表行加版本戳的機(jī)制,存儲(chǔ)大小為8個(gè)字節(jié)。一個(gè)表只能有一個(gè)timestamp列。每次插入或更新包含timestamp列的行時(shí),timestamp列中的值均會(huì)更新。這一屬性使timestamp列不適合作為鍵使用,尤其是不能作為主鍵使用。對(duì)行的任何更新都會(huì)更改timestamp值,從而更改鍵值。9.有一個(gè)數(shù)據(jù)庫(kù),只有一

10、個(gè)表,包含著1000個(gè)記錄,你能想出一種解決方案來(lái)把第五行到第七行的記錄用出來(lái)么?不要使用航標(biāo)和索引。答:第一步建立數(shù)據(jù)庫(kù):declare i intset i=1create table #T(userid int)while (iANY(select top 4 userid from T order by userid)order by userid或者:select top 7 userid from T where userid ALL(select top 4 userid from T order by userid)order by userid10.什么是聚攏索引?什么是非聚

11、攏索引?什么是主鍵?答:表中經(jīng)常有一個(gè)列或列的組合,其值能唯一地標(biāo)識(shí)表中的每一行。如此的一列或多列稱為表的主鍵。聚攏索引確定表中數(shù)據(jù)的物理順序。一個(gè)表中只能包含一個(gè)聚攏索引。非聚攏索引與課本中的索引類似。數(shù)據(jù)存儲(chǔ)在一個(gè)地點(diǎn),索引存儲(chǔ)在另一個(gè)地點(diǎn),索引帶有指針指向數(shù)據(jù)的存儲(chǔ)位置。索引中的項(xiàng)目按索引鍵值的順序存儲(chǔ),而表中的信息按另一種順序存儲(chǔ)。11.現(xiàn)有一張表,有兩個(gè)字段:ID,NAME。ID為主鍵。假如希望查詢出所有擁有2個(gè)或更多ID 的NAME,查詢語(yǔ)句應(yīng)該如何寫?答:select Name from table group by(name) having(count(ID=2)。12.設(shè)供應(yīng)

12、商供應(yīng)零件的關(guān)系模式為SP(Sno,Pno,Qty),其中Sno表示供應(yīng)商號(hào),Pno表示零件號(hào),Qty表示零件數(shù)量。整個(gè)數(shù)據(jù)庫(kù)如下表:Sno Pno Qty168 r1 3168 r2 4168 r3 7169 r2 1169 r3 5170 r4 8171 r7 5172 r2 1172 r7 3請(qǐng)問(wèn)下面的SQL語(yǔ)句返回值是什么?Select * from SP SPY where exists (select * from SP SPZ where Sno)解析:在exists 中的子查詢?cè)谀莻€(gè)例子中只返回一個(gè)值。因?yàn)閺淖硬樵冎蟹祷氐男袛?shù)至少有一行exits返回為true,這使得表中的所有

13、記錄都被顯示了出來(lái)。請(qǐng)問(wèn)下面的SQL語(yǔ)句返回值是什么?Select * from SP SPY where exists (select * from SP SPZ where Sno=168 and SPZ.Pno=SPY.Pno);解析:返回與168號(hào)供應(yīng)商所提供零件相同編號(hào)的情況。若想得到與168號(hào)供應(yīng)上所提供零件相同的全部供應(yīng)商的全部產(chǎn)品情況?解析:Select * from SP where Sno in (select Sno from SP where Pno in (select Pno from SP from SP where Sno=168);或者:Select * fr

14、om SP SPX where exists (select * from SP SPY where SPY.Sno=168 and exists (select * from SP SPZ where SPZ.Sno=SPX.Sno and SPZ.Pno=SPY.Pno);13. 觸發(fā)器如何工作的?答:觸發(fā)器要緊是通過(guò)事件進(jìn)行觸發(fā)而被執(zhí)行的,當(dāng)對(duì)某一表進(jìn)行諸如UPDATE、 INSERT、 DELETE 這些操作時(shí),數(shù)據(jù)庫(kù)就會(huì)自動(dòng)執(zhí)行觸發(fā)器所定義的SQL 語(yǔ)句,從而確保對(duì)數(shù)據(jù)的處理必須符合由這些SQL 語(yǔ)句所定義的規(guī)則。14.在一個(gè)文件中有 10G 個(gè)整數(shù),亂序排列,要求找出中位數(shù)。內(nèi)存限

15、制為 2G。只寫出思路即可。(騰訊筆試題)答:(1)把整數(shù)分成256M段,每段能夠用64位整數(shù)保存該段數(shù)據(jù)個(gè)數(shù),256M*8 = 2G內(nèi)存,先清0。(2)讀10G整數(shù),把整數(shù)映射到256M段中,增加相應(yīng)段的記數(shù)。(3)掃描256M段的記數(shù),找到中位數(shù)的段和中位數(shù)的段前面所有段的記數(shù),能夠把其他段的內(nèi)存釋放。(4)因中位數(shù)段的可能整數(shù)取值差不多比較小(假如是32bit整數(shù),因此假如是64bit整數(shù)的話,能夠再次分段),對(duì)每個(gè)整數(shù)做一個(gè)記數(shù),再讀一次10G整數(shù),只讀取中位數(shù)段對(duì)應(yīng)的整數(shù),并設(shè)置記數(shù)。(5)對(duì)新的記數(shù)掃描一次,即可找到中位數(shù)。假如是32bit整數(shù),讀10G整數(shù)2次,掃描256M記數(shù)一

16、次,后一次記數(shù)因數(shù)量專門小,能夠忽略不記。解釋一下:假設(shè)是32bit整數(shù),按無(wú)符號(hào)整數(shù)處理整數(shù)分成256M段? 整數(shù)范圍是0 232 1 一共有4G種取值,4G/256M = 16,每16個(gè)數(shù)算一段 0-15是1段,16-31是一段,整數(shù)映射到256M段中? 假如整數(shù)是0-15,則增加第一段記數(shù),假如整數(shù)是16-31,則增加第二段記數(shù),事實(shí)上能夠不用分256M段,能夠分的段數(shù)少一些,如此在掃描記數(shù)段時(shí)會(huì)快一些,還能節(jié)約一些內(nèi)存。15.一般數(shù)據(jù)庫(kù)若出現(xiàn)日志滿了,會(huì)出現(xiàn)什么情況,是否還能使用?答:只能執(zhí)行查詢等讀操作,不能執(zhí)行更改,備份等寫操作,緣故是任何寫操作都要記錄日志。也確實(shí)是講差不多上處于

17、不能使用的狀態(tài)。16.SQL Server是否支持行級(jí)鎖,有什么好處?答:支持,設(shè)立封鎖機(jī)制要緊是為了對(duì)并發(fā)操作進(jìn)行操縱,對(duì)干擾進(jìn)行封鎖,保證數(shù)據(jù)的一致性和準(zhǔn)確性,行級(jí)封鎖確保在用戶取得被更新的行到該行進(jìn)行更新這段時(shí)刻內(nèi)不被其它用戶所修改。因而行級(jí)鎖即可保證數(shù)據(jù)的一致性又能提高數(shù)據(jù)操作的并發(fā)性。17.磁盤柜上有14塊73G的磁盤, 數(shù)據(jù)庫(kù)為200G 大小包括日志文件,如何設(shè)置磁盤(要講明這14磁盤是如何用的)?答:那個(gè)問(wèn)題應(yīng)該是考察硬件知識(shí)和數(shù)據(jù)庫(kù)物理部署。首先需要明白這些磁盤是否要用于存放數(shù)據(jù)庫(kù)備份文件和數(shù)據(jù)庫(kù)性能(讀/寫)要求。來(lái)決定raid的級(jí)不。1)、假如偏重于性能考慮,而且不用存放數(shù)

18、據(jù)庫(kù)備份文件的話,考慮使用raid0+1,如此可使用的磁盤容量為:14*73*50%=511G。2)、假如讀/寫性能要求不高,而且還比較摳門的話,能夠考慮raid5,如此可使用的磁盤容量為:13*73=949G。至于如何使用應(yīng)該是講數(shù)據(jù)庫(kù)物理文件的部署。注意講出將tempdb,data file,log file分開(kāi)存放以減少I/O競(jìng)爭(zhēng)即可。事實(shí)上現(xiàn)在的條帶化磁盤一般都會(huì)自動(dòng)將文件分存,人為的分布差不多越來(lái)越不重要了。18.有兩服務(wù)器群集,分不為node1和node2 現(xiàn)在要打win200系統(tǒng)補(bǔ)丁,打完后,要重新啟動(dòng),如何打補(bǔ)丁,不能阻礙用戶使用(要用群集的術(shù)語(yǔ)詳細(xì)講明)。答:那個(gè)具體操作有點(diǎn)

19、忘了。大致是:首先看哪個(gè)節(jié)點(diǎn)正在使用,通過(guò)節(jié)點(diǎn)IP(私有)訪問(wèn)另一個(gè)空閑節(jié)點(diǎn),為其打上補(bǔ)丁,然后在群集治理器中停止該節(jié)點(diǎn)(也能夠用命令行方式),重新啟動(dòng)。等到啟動(dòng)完畢,將切換使用節(jié)點(diǎn),為另一個(gè)節(jié)點(diǎn)打補(bǔ)丁。然后重新啟動(dòng)。19.有一個(gè)A 數(shù)據(jù)庫(kù),分不復(fù)制到B和C, B 要求 每次數(shù)據(jù)更新 也同時(shí)更新,C 每天更新一次就行,如何制定復(fù)制策略!答:那個(gè)應(yīng)該考察的是復(fù)制知識(shí)。a-b 1)、假如使用SQL Server復(fù)制功能,那么讓a-b使用事務(wù)性復(fù)制方式(同步復(fù)制)。2)、假如表不多,也能夠自己寫觸發(fā)器,利用linkserver+distribute transaction。 a-c 1)、假如使用S

20、QL Server復(fù)制功能,那么讓a-b使用快照復(fù)制方式,在某一時(shí)刻點(diǎn)進(jìn)行一次性復(fù)制。2)、也能夠自己寫bat,將a備份后,通過(guò)ftp傳輸備份介質(zhì),恢復(fù)c。(比較苦惱,不推舉)20.有一個(gè)order 表,有90個(gè)字段,20個(gè)索引,15個(gè)復(fù)合索引,其中有3個(gè)索引字段超過(guò)10個(gè),如何進(jìn)行優(yōu)化答:那個(gè)問(wèn)題問(wèn)的比較沒(méi)水平。你不詳細(xì)講明那個(gè)表的使用方式(讀寫類的,依舊幾乎是靜態(tài)表),就問(wèn)人家如何優(yōu)化?!還不如問(wèn)問(wèn)索引的分布訪問(wèn)原理更好??吹贸鏊拖胱屇阒v:那三個(gè)索引超過(guò)10個(gè),B樹(shù)遍例效率專門低,適當(dāng)減少字段數(shù)目。假如是SQL2005,能夠?qū)⑦x擇性不行的字段放在“索引附加字段”中,以保證索引覆蓋。而且S

21、QL Server由于有鎖升級(jí)的毛病,能夠考慮拆開(kāi)表。21.有一個(gè)數(shù)據(jù)庫(kù)200G大小,每天增加50M 同意用戶隨時(shí)訪問(wèn),制定備份策略(詳細(xì)講明)。答:這種情況能夠采納增量備份方式。每周日做一次全備份,周一到周六作增量備份(由于數(shù)據(jù)量較少,能夠考慮每30分鐘增量備份一次)。如此能夠盡量減少性能消耗,而且假如transaction log丟失的情況下,能夠保證最多丟失30分鐘數(shù)據(jù)。22.治理50臺(tái)數(shù)據(jù)庫(kù),日常工作是檢查數(shù)據(jù)庫(kù)作業(yè)是否完成,你該如何完成這項(xiàng)檢查工作?答:那個(gè)比較簡(jiǎn)單。在每臺(tái)機(jī)器上建立linkserver,然后在DBA治理服務(wù)器上做個(gè)分布式視圖,每次查詢?cè)撘晥D,各個(gè)機(jī)器上的作業(yè)情況一目了然。分布式視圖寫法:create view vw_jobasselect 機(jī)器一 as MName,* from linkserver1.sysjobactivityunion allselect 機(jī)器二 as MName,* from linkserver2.sysjobactivityunion allselect 機(jī)器三 as MName,* from linkserver3.sysjobactivity23.自定義函數(shù)和存儲(chǔ)過(guò)程的區(qū)不是什么,什么情況下只能用自定義函數(shù),什么情況下只能用存儲(chǔ)過(guò)程答:那個(gè)應(yīng)該是考察存儲(chǔ)過(guò)程編寫經(jīng)驗(yàn)。一般自定義函數(shù)要緊用于其他sql中的調(diào)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論