版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、SQL 經(jīng)典面試題目 1. SQL 面試題(1create table testtable1(id int IDENTITY,department varchar(12insert into testtable1 values('設(shè)計(jì) 'insert into testtable1 values('市場(chǎng) 'insert into testtable1 values('售后 'select * from testtable1 create table testtable2(id int IDENTITY,dptID int,name varchar
2、(12insert into testtable2 values(1,'張三 'insert into testtable2 values(1,'李四 'insert into testtable2 values(2,'王五 'insert into testtable2 values(3,'彭六 'insert into testtable2 values(4,'陳七 'select * from testtable2 答案一:insert into testtable1 values('黑人 '
3、select A.id,A.dptID,B.department ,A.namefrom testtable2 as A,testtable1 as Bwhere A.dptID = B.id 2. SQL 面試題(2 其中,p_ID為產(chǎn)品 ID , p_Num為產(chǎn)品庫存量, s_id為倉庫 ID 。 請(qǐng)用 SQL 語句實(shí)現(xiàn)將上表中的數(shù)據(jù)合并,合并后的 量,那么就是 0代替。create table A( p_ID int,p_Num int,s_id varchar(12insert into A values(1,10,'01'insert into A values(1,
4、12,'02'insert into A values(2,8,'01'insert into A values(3,11,'01'insert into A values(3,8,'03'select p_ID,sum (CASE WHEN s_id ='01' THEN p_Num ELSE 0 END as s1_id,sum (CASE WHEN s_id ='02' THEN p_Num ELSE 0 END as s2_id,sum (CASE WHEN s_id ='03
5、9; THEN p_Num ELSE 0 END as s3_idfrom Agroup by p_IDorder by p_ID 3. SQL 面試題(31. 觸發(fā)器的作用?答:觸發(fā)器是一種特殊的存儲(chǔ)過程,主要是通過事件觸發(fā)而被執(zhí)行的。它可以強(qiáng)化約束,來維護(hù)數(shù)據(jù)的完整性 和一致性,可以跟蹤數(shù)據(jù)庫內(nèi)的操作從而不允許未經(jīng)許可的更新和變化。可以聯(lián)級(jí)運(yùn)算。如,某表上的觸發(fā)器上包 含對(duì)另一個(gè)表的數(shù)據(jù)操作,而該操作又會(huì)導(dǎo)致該表觸發(fā)器被觸發(fā)。舉個(gè)例子,如果你有 2個(gè)表 a, b其中 a 里面的 id 跟 b 里面的 id 綁定, a 是學(xué)生基本信息表, b 是學(xué)生選課信息 表,假使某個(gè)同學(xué)被開除,那么 a
6、 表里面該同學(xué)的信息就必須刪除,那么既然該同學(xué)都被開除了, b 表里面的信息 自然也都應(yīng)該一并除去,這個(gè)時(shí)候就可以建立這樣一個(gè)觸發(fā)器在 a 表上,觸發(fā)條件為 delete ,只要發(fā)現(xiàn) a 表有信息 刪除,則自動(dòng)刪除 b 表中相應(yīng) id 的信息。這樣可以保證整個(gè)系統(tǒng)的健壯性。不會(huì)出現(xiàn) bug (學(xué)生基本信息都刪除但 是選課信息還在的現(xiàn)象 。2. 什么是存儲(chǔ)過程?用什么來調(diào)用?答:存儲(chǔ)過程是一個(gè)預(yù)編譯的 SQL 語句,優(yōu)點(diǎn)是允許模塊化的設(shè)計(jì),就是說只需創(chuàng)建一次,以后在該程序中就 可以調(diào)用多次。如果某次操作需要執(zhí)行多次 SQL ,使用存儲(chǔ)過程比單純 SQL 語句執(zhí)行要快??梢杂靡粋€(gè)命令對(duì)象來 調(diào)用存
7、儲(chǔ)過程。3. 索引的作用?和它的優(yōu)點(diǎn)缺點(diǎn)是什么?答:索引就是一種特殊的查詢表,數(shù)據(jù)庫的搜索引擎可以利用它加速對(duì)數(shù)據(jù)的檢索。它很類似與現(xiàn)實(shí)生活中書 的目錄,不需要查詢整本書內(nèi)容就可以找到想要的數(shù)據(jù)。索引可以是唯一的,創(chuàng)建索引允許指定單個(gè)列或者是多個(gè) 列。缺點(diǎn)是它減慢了數(shù)據(jù)錄入的速度,同時(shí)也增加了數(shù)據(jù)庫的尺寸大小。4. 什么叫視圖?游標(biāo)是什么?答:視圖是一種虛擬的表,具有和物理表相同的功能??梢詫?duì)視圖進(jìn)行增,改,查,操作,視圖通常是一個(gè)表 或者多個(gè)表的行或列的子集。對(duì)視圖的修改不影響基本表。它使得我們獲取數(shù)據(jù)更容易,相比多表查詢。游標(biāo):是對(duì)查詢出來的結(jié)果集作為一個(gè)單元來有效的處理。游標(biāo)可以定在該單
8、元中的特定行,從結(jié)果集的當(dāng)前 行檢索一行或多行。可以對(duì)結(jié)果集當(dāng)前行做修改。一般不使用游標(biāo),但是需要逐條處理數(shù)據(jù)的時(shí)候,游標(biāo)顯得十分 重要。5. 什么是內(nèi)存泄漏?答:一般我們所說的內(nèi)存泄漏指的是堆內(nèi)存的泄漏。堆內(nèi)存是程序從堆中為其分配的,大小任意的,使用完后 要顯示釋放的內(nèi)存。當(dāng)應(yīng)用程序用關(guān)鍵字 new 等創(chuàng)建對(duì)象時(shí),就從堆中為它分配一塊內(nèi)存,使用完后程序調(diào)用 free 或者 delete 釋放該內(nèi)存,否則就說該內(nèi)存就不能被使用,我們就說該內(nèi)存被泄漏了。6. 維護(hù)數(shù)據(jù)庫的完整性和一致性,你喜歡用觸發(fā)器還是自寫業(yè)務(wù)邏輯?為什么?答:我是這樣做的,盡可能使用約束,如 check, 主鍵,外鍵,非空字
9、段等來約束,這樣做效率最高,也最方便。 其次是使用觸發(fā)器,這種方法可以保證,無論什么業(yè)務(wù)系統(tǒng)訪問數(shù)據(jù)庫都可以保證數(shù)據(jù)的完整新和一致性。最后考 慮的是自寫業(yè)務(wù)邏輯,但這樣做麻煩,編程復(fù)雜,效率低下。7. 什么是事務(wù)?什么是鎖?答:典型的 DBMS 允許用戶把一個(gè)或多個(gè)數(shù)據(jù)庫操作(查詢 /更新組成“事務(wù)”??梢哉J(rèn)為,事務(wù)是一組順序執(zhí)行的操作單位。數(shù)據(jù)庫系統(tǒng)常常允許多個(gè)事務(wù)并發(fā)地執(zhí)行,事務(wù)管理程序的任務(wù)就是保證這些事務(wù)全部都能正確 執(zhí)行。事務(wù)就是被綁定在一起作為一個(gè)邏輯工作單元的 SQL 語句分組,如果任何一個(gè)語句操作失敗那么整個(gè)操作就 失敗,以后操作就會(huì)回滾到操作前狀態(tài),或者是上個(gè)節(jié)點(diǎn)。為了確保要
10、么執(zhí)行,要么不執(zhí)行,就可以使用事務(wù)。要 將一組語句作為事務(wù)考慮,就需要通過 ACID 測(cè)試,即原子性,一致性,隔離性和持久性。鎖:在所有的 DBMS 中, 鎖是實(shí)現(xiàn)事務(wù)的關(guān)鍵,鎖可以保證事務(wù)的完整性和并發(fā)性。與現(xiàn)實(shí)生活中鎖一樣,它可以使某些數(shù)據(jù)的擁有者,在 某段時(shí)間內(nèi)不能使用某些數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu)。當(dāng)然鎖還分級(jí)別的。8. 為管理業(yè)務(wù)培訓(xùn)信息,建立 3個(gè)表:S(S#,SN,SD,SAS#,SN,SD,SA分別代表學(xué)號(hào),學(xué)員姓名,所屬單位,學(xué)員年齡C(C#,CNC#,CN分別代表課程編號(hào),課程名稱SC(S#,C#,G S#,C#,G分別代表學(xué)號(hào),所選的課程編號(hào),學(xué)習(xí)成績(jī)create table S(
11、S# int IDENTITY ,SN varchar (12,SD varchar (12,SA intinsert into S values (' 張三 ' , ' 計(jì)算機(jī) ' , 23insert into S values (' 李四 ' , ' 人文 ' , 23insert into S values (' 王五 ' , ' 網(wǎng)絡(luò) ' , 22insert into S values (' 彭六 ' , ' 土木 ' , 21insert into S
12、values (' 陳七 ' , ' 計(jì)算機(jī) ' , 20select *from Screate table C( C# varchar (24,CN varchar (24insert into C values ('C1' , ' 操作系統(tǒng) ' insert into C values ('A1' , ' 日語 ' insert into C values ('C2' , ' 計(jì)算機(jī)網(wǎng)絡(luò) ' insert into C values ('A2'
13、, ' 日語語法 ' insert into C values ('B1' , ' 通信原理 ' insert into C values ('B2' , ' 信息論 ' select *from C create table SC( S# int ,C# varchar (12,G intinsert into SC values (1, 'A1' , 87 insert into SC values (1, 'A2' , 90 insert into SC values (1,
14、'B1' , 93 insert into SC values (1, 'B2' , 80 insert into SC values (1, 'C2' , 70 insert into SC values (1, 'C1' , 82 insert into SC values (2, 'A1' , 81 insert into SC values (2, 'A2' , 92 insert into SC values (2, 'B1' , 97 insert into SC val
15、ues (2, 'B2' , 87 insert into SC values (2, 'C2' , 72 insert into SC values (2, 'C1' , 84 insert into SC values (3, 'A1' , 87 insert into SC values (4, 'A2' , 90 insert into SC values (3, 'B1' , 93 insert into SC values (4, 'B2' , 80 insert int
16、o SC values (4, 'C2' , 70 insert into SC values (5, 'C1' , 82select * fromSC(1)使用標(biāo)準(zhǔn) SQL 嵌套語句查詢選修課程名稱為信息論的學(xué)員學(xué)號(hào)和姓名? -使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程名稱為信息論的學(xué)員學(xué)號(hào)和姓名? select S#,SN from S where S# in(select S# from SC,C where C.C#=SC.C# and C.CN='信息論' (2) 使用標(biāo)準(zhǔn) SQL 嵌套語句查詢選修課程編號(hào)為C2的學(xué)員姓名和所屬單位? - 使用
17、標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程編號(hào)為C2的學(xué)員姓名和所屬單位? select SN,SD from S where S# in (select S# from SC,C where C.C#=SC.C# and C.C#='C2' 或者 - 使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程編號(hào)為C2的學(xué)員姓名和所屬單位? select SN,SD from S,SC where SC.S#=S.S# and SC.C#='C2' (3) 使用標(biāo)準(zhǔn) SQL 嵌套語句查詢不選修課程編號(hào)為C1的學(xué)員姓名和所屬單位? - 使用標(biāo)準(zhǔn)SQL嵌套語句查詢不選修課程編號(hào)為C1的學(xué)員姓名和所屬
18、單位? select SN,SD from S where S# not in (select S# from SC where C#='C1' (4)查詢選修了課程的學(xué)員人數(shù) - 查詢選修了課程的學(xué)員人數(shù) select 學(xué)員人數(shù)= count(distinct S#from SC (5) 查詢選修課程超過 5 門的學(xué)員姓名和所屬單位? - 查詢選修課程超過門的學(xué)員姓名和所屬單位? select SN,SD from S where S# in(select S# from SC group by S# having count(distinct c#>5 4. SQL
19、面試題(4) 1.查詢 A(ID,Name表中第 31 至 40 條記錄,ID 作為可能不是連續(xù)增長(zhǎng)的列,完整的查詢語句如下: select top 10 * from A where ID >(select max(ID from (select top 30 ID from A order by ID T order by ID 2.查詢表 A 中存在 ID 重復(fù)兩次以上的記錄,完整的查詢語句如下: select * from (select count(ID as count from A group by IDT where T.count>2 5. SQL 面試題(5)
20、在面試應(yīng)聘的 SQL Server 數(shù)據(jù)庫開發(fā)人員時(shí),我運(yùn)用了一套標(biāo)準(zhǔn)的基準(zhǔn)技術(shù)問題。下面這些問題是我覺得能夠 真正有助于淘汰不合格應(yīng)聘者的問題。它們按照從易到難的順序排列。當(dāng)你問到關(guān)于主鍵和外鍵的問題時(shí),后面的 問題都十分有難度,因?yàn)榇鸢缚赡軙?huì)更難解釋和說明,尤其是在面試的情形下。 你能向我簡(jiǎn)要敘述一下 SQL Server 2000 中使用的一些數(shù)據(jù)庫對(duì)象嗎? 你希望聽到的答案包括這樣一些對(duì)象:表格、視圖、用戶定義的函數(shù),以及存儲(chǔ)過程;如果他們還能夠提到像 觸發(fā)器這樣的對(duì)象就更好了。如果應(yīng)聘者不能回答這個(gè)基本的問題,那么這不是一個(gè)好兆頭。 2. NULL 是什么意思? NULL(空這個(gè)值是
21、數(shù)據(jù)庫世界里一個(gè)非常難纏的東西,所以有不少應(yīng)聘者會(huì)在這個(gè)問題上跌跟頭您也不要覺得 1. 意外。NULL 這個(gè)值表示 UNKNOWN(未知:它不表示“”(空字符串。假設(shè)您的 SQL Server 數(shù)據(jù)庫里有 ANSI_NULLS, 當(dāng)然在默認(rèn)情況下會(huì)有,對(duì) NULL 這個(gè)值的任何比較都會(huì)生產(chǎn)一個(gè) NULL 值。您不能把任何值與一個(gè) UNKNOWN 值 進(jìn)行比較,并在邏輯上希望獲得一個(gè)答案。您必須使用 IS NULL 操作符。 3. 什么是索引?SQL Server 2000 里有什么類型的索引? 任何有經(jīng)驗(yàn)的數(shù)據(jù)庫開發(fā)人員都應(yīng)該能夠很輕易地回答這個(gè)問題。一些經(jīng)驗(yàn)不太多的開發(fā)人員能夠回答這個(gè)問 題
22、,但是有些地方會(huì)說不清楚。簡(jiǎn)單地說,索引是一個(gè)數(shù)據(jù)結(jié)構(gòu),用來快速訪問數(shù)據(jù)庫表格或者視圖里的數(shù)據(jù)。在 SQL Server 里,它們有兩種形式:聚集索引和非聚集索引。聚集索引在索引的葉級(jí)保存數(shù)據(jù)。這意味著不論聚集索 引里有表格的哪個(gè)(或哪些)字段,這些字段都會(huì)按順序被保存在表格。由于存在這種排序,所以每個(gè)表格只會(huì)有 一個(gè)聚集索引。非聚集索引在索引的葉級(jí)有一個(gè)行標(biāo)識(shí)符。這個(gè)行標(biāo)識(shí)符是一個(gè)指向磁盤上數(shù)據(jù)的指針。它允許每 個(gè)表格有多個(gè)非聚集索引。 4. 什么是主鍵?什么是外鍵? 主鍵是表格里的(一個(gè)或多個(gè))字段,只用來定義表格里的行;主鍵里的值總是唯一的。外鍵是一個(gè)用來建立 兩個(gè)表格之間關(guān)系的約束。這
23、種關(guān)系一般都涉及一個(gè)表格里的主鍵字段與另外一個(gè)表格(盡管可能是同一個(gè)表格) 里的一系列相連的字段。那么這些相連的字段就是外鍵。 5. 什么是觸發(fā)器?SQL Server 2000 有什么不同類型的觸發(fā)器? 讓未來的數(shù)據(jù)庫開發(fā)人員知道可用的觸發(fā)器類型以及如何實(shí)現(xiàn)它們是非常有益的。觸發(fā)器是一種專用類型的存 儲(chǔ)過程,它被捆綁到 SQL Server 2000 的表格或者視圖上。在 SQL Server 2000 里,有 INSTEAD-OF 和 AFTER 兩種觸發(fā) 器。 INSTEAD-OF 觸發(fā)器是替代數(shù)據(jù)操控語言 (Data Manipulation Language, DML) 語句對(duì)表格執(zhí)
24、行語句的存儲(chǔ)過程。 例如,如果我有一個(gè)用于 TableA 的 INSTEAD-OF-UPDATE 觸發(fā)器,同時(shí)對(duì)這個(gè)表格執(zhí)行一個(gè)更新語句,那么 INSTEAD-OF-UPDATE 觸發(fā)器里的代碼會(huì)執(zhí)行,而不是我執(zhí)行的更新語句則不會(huì)執(zhí)行操作。AFTER 觸發(fā)器要在 DML 語 句在數(shù)據(jù)庫里使用之后才執(zhí)行。這些類型的觸發(fā)器對(duì)于監(jiān)視發(fā)生在數(shù)據(jù)庫表格里的數(shù)據(jù)變化十分好用。 6. 您如何確一個(gè)帶有名為 Fld1 字段的 TableB 表格里只具有 Fld1 字段里的那些值, 而這些值同時(shí)在名為 TableA 的 表格的 Fld1 字段里? 這個(gè)與關(guān)系相關(guān)的問題有兩個(gè)可能的答案。第一個(gè)答案(而且是您希望聽
25、到的答案)是使用外鍵限制。外鍵限 制用來維護(hù)引用的完整性。它被用來確保表格里的字段只保存有已經(jīng)在不同的(或者相同的)表格里的另一個(gè)字段 里定義了的值。這個(gè)字段就是候選鍵(通常是另外一個(gè)表格的主鍵。 另外一種答案是觸發(fā)器。觸發(fā)器可以被用來保證以另外一種方式實(shí)現(xiàn)與限制相同的作用,但是它非常難設(shè)置與 維護(hù), 而且性能一般都很糟糕。 由于這個(gè)原因, 微軟建議開發(fā)人員使用外鍵限制而不是觸發(fā)器來維護(hù)引用的完整性。 7. 對(duì)一個(gè)投入使用的在線事務(wù)處理表格有過多索引需要有什么樣的性能考慮? 你正在尋找進(jìn)行與數(shù)據(jù)操控有關(guān)的應(yīng)聘人員。對(duì)一個(gè)表格的索引越多,數(shù)據(jù)庫引擎用來更新、插入或者刪除數(shù) 據(jù)所需要的時(shí)間就越多,
26、因?yàn)樵跀?shù)據(jù)操控發(fā)生的時(shí)候索引也必須要維護(hù)。 8. 你可以用什么來確保表格里的字段只接受特定范圍里的值? 這個(gè)問題可以用多種方式來回答,但是只有一個(gè)答案是“好”答案。您希望聽到的回答是 Check 限制,它在數(shù) 據(jù)庫表格里被定義,用來限制輸入該列的值。 觸發(fā)器也可以被用來限制數(shù)據(jù)庫表格里的字段能夠接受的值,但是這種辦法要求觸發(fā)器在表格里被定義,這可 能會(huì)在某些情況下影響到性能。因此,微軟建議使用 Check 限制而不是其他的方式來限制域的完整性。 如果應(yīng)聘者能夠正確地回答這個(gè)問題,那么他的機(jī)會(huì)就非常大了,因?yàn)檫@表明他們具有使用存儲(chǔ)過程的經(jīng)驗(yàn)。 返回參數(shù)總是由存儲(chǔ)過程返回,它用來表示存儲(chǔ)過程是成功
27、還是失敗。返回參數(shù)總是 INT 數(shù)據(jù)類型。 OUTPUT 參數(shù)明確要求由開發(fā)人員來指定,它可以返回其他類型的數(shù)據(jù),例如字符型和數(shù)值型的值。(可以用作輸出 參數(shù)的數(shù)據(jù)類型是有一些限制的。 您可以在一個(gè)存儲(chǔ)過程里使用多個(gè) OUTPUT 參數(shù), 而您只能夠使用一個(gè)返回參數(shù)。 9. 什么是相關(guān)子查詢?如何使用這些查詢? 經(jīng)驗(yàn)更加豐富的開發(fā)人員將能夠準(zhǔn)確地描述這種類型的查詢。相關(guān)子查詢是一種包含子查詢的特殊類型的查詢。 查詢里包含的子查詢會(huì)真正請(qǐng)求外部查詢的值,從而形成一個(gè)類似于循環(huán)的狀況。 6. SQL 面試題(6) 原表: course_id 1 course_name java course_score 70 2 3 4 5 oracle xml jsp servlet 90 40 30 80 為了便于閱讀
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)技術(shù)智能監(jiān)控系統(tǒng)布設(shè)協(xié)議2024版B版
- 個(gè)性化2024版動(dòng)力煤托盤協(xié)議示例版
- 專業(yè)教師2024年度聘用協(xié)議范例版B版
- 閱讀理解技巧講座
- 二零二四年云服務(wù)租賃協(xié)議
- 2025年度科技園區(qū)場(chǎng)地?zé)o償使用及知識(shí)產(chǎn)權(quán)共享協(xié)議4篇
- 2025年度叉車維修及配件供應(yīng)一體化服務(wù)合同4篇
- 2025年度場(chǎng)崗位員工保密協(xié)議執(zhí)行細(xì)則4篇
- 專屬委托銷售代表協(xié)議樣式(2024)版A版
- 2025年度影視基地場(chǎng)地租賃合同24篇
- 給男友的道歉信10000字(十二篇)
- 2020年高級(jí)統(tǒng)計(jì)實(shí)務(wù)與案例分析真題及答案
- 全面質(zhì)量管理(TQM)基本知識(shí)
- 練字本方格模板
- 產(chǎn)品供貨質(zhì)量保障措施
- 電力電纜高頻局放試驗(yàn)報(bào)告
- 《老山界》第1第2課時(shí)示范公開課教學(xué)PPT課件【統(tǒng)編人教版七年級(jí)語文下冊(cè)】
- JJG 517-2016出租汽車計(jì)價(jià)器
- JJF 1914-2021金相顯微鏡校準(zhǔn)規(guī)范
- GB/T 32045-2015節(jié)能量測(cè)量和驗(yàn)證實(shí)施指南
- GB/T 10001.6-2021公共信息圖形符號(hào)第6部分:醫(yī)療保健符號(hào)
評(píng)論
0/150
提交評(píng)論