



版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、SQL面試題目匯總1. 觸發(fā)器的作用?答:觸發(fā)器是一中 特殊的存儲過程 ,主要是通過事件來觸發(fā)而被執(zhí)行的 。它可以強化約束 ,來維護數(shù)據(jù)的 完整性和一致性 ,可以跟蹤數(shù)據(jù)庫內(nèi)的操作從而不允許未經(jīng)許可的更新和變化。 可以聯(lián)級運算 。如,某表上的觸發(fā)器上包含對另一個表的數(shù)據(jù)操作,而該操作又會導致該表觸發(fā)器被觸發(fā)。2. 什么是存儲過程?用什么來調(diào)用?答:存儲過程是一個預編譯的SQL語句,優(yōu)點是允許模塊化的設計, 就是說只需創(chuàng)建一次,以后在該程序中就可以調(diào)用多次。如果某次操作需要執(zhí)行多次 SQL,使用存儲過程比單純 SQL語句執(zhí)行要快??梢杂靡粋€命令對象來調(diào)用存儲過程。3. 索引的作用?和它的優(yōu)點缺點
2、是什么?答:索引就一種特殊的查詢表, 數(shù)據(jù)庫的搜索引擎可以利用它加速對數(shù)據(jù)的檢索。它很類似與現(xiàn)實生活中書的目錄,不需要查詢整本書內(nèi)容就可以找到想要的數(shù)據(jù)。索引可以是唯一的, 創(chuàng)建索引允許指定單個列或者是多個列。 缺點是它減慢了數(shù)據(jù)錄入的速度,同時也增加了數(shù)據(jù)庫的尺寸大小。4. 什么是內(nèi)存泄漏?答:一般我們所說的內(nèi)存泄漏指的是堆內(nèi)存的泄漏。 堆內(nèi)存是程序從堆中為其分配的,大小任意的, 使用完后要顯示釋放內(nèi)存。 當應用程序用關鍵字 new 等創(chuàng)建對象時,就從堆中為它分配一塊內(nèi)存, 使用完后程序調(diào)用 free 或者 delete 釋放該內(nèi)存,否則就說該內(nèi)存就不能被使用,我們就說該內(nèi)存被泄漏了。5.
3、維護數(shù)據(jù)庫的完整性和一致性,你喜歡用觸發(fā)器還是自寫業(yè)務邏輯?為什么?答:我是這樣做的,盡可能使用約束,如check, 主鍵,外鍵,非空字段等來約束,這樣做效率最高,也最方便。其次是使用觸發(fā)器,這種方法可以保證,無論什么業(yè)務系統(tǒng)訪問數(shù)據(jù)庫都可以保證數(shù)據(jù)的完整新和一致性。最后考慮的是自寫業(yè)務邏輯,但這樣做麻煩,編程復雜,效率低下。6. 什么是事務?什么是鎖?答:事務就是被綁定在一起作為一個邏輯工作單元的 SQL語句分組,如果任何一個語句操作失敗那么整個操作就被失敗, 以后操作就會回滾到操作前狀態(tài), 或者是上有個節(jié)點。為了確保要么執(zhí)行,要么不執(zhí)行,就可以使用事務。要將有組語句作為事務考慮,就需要通過
4、 ACID測試,即原子性,一致性,隔離性和持久性。鎖:在所以的 DBMS中,鎖是實現(xiàn)事務的關鍵,鎖可以保證事務的完整性和并發(fā)性。與現(xiàn)實生活中鎖一樣, 它可以使某些數(shù)據(jù)的擁有者, 在某段時間內(nèi)不能使用某些數(shù)據(jù)或數(shù)據(jù)結構。當然鎖還分級別的。7. 什么叫視圖?游標是什么?答:視圖是一種虛擬的表,具有和物理表相同的功能??梢詫σ晥D進行增,改,查,操作,試圖通常是有一個表或者多個表的行或列的子集。 對視圖的修改不影響基本表。它使得我們獲取數(shù)據(jù)更容易,相比多表查詢。游標:是對查詢出來的結果集作為一個單元來有效的處理。 游標可以定在該單元中的特定行,從結果集的當前行檢索一行或多行。 可以對結果集當前行做修改
5、。一般不使用游標,但是需要逐條處理數(shù)據(jù)的時候,游標顯得十分重要。8. 為管理業(yè)務培訓信息,建立 3個表:S(S#,SN,SD,SA)S#,SN,SD,SA分別代表學號,學員姓名,所屬單位,學員年齡C(C#,CN)C#,CN分別代表課程編號,課程名稱SC(S#,C#,G) S#,C#,G 分別代表學號,所選的課程編號,學習成績(1) 使用標準 SQL嵌套語句查詢選修課程名稱為稅收基礎的學員學號和姓名 ?答案: select s# ,sn from s where S# in(select S# from c,sc where c.c#=sc.c# and cn= 稅收基礎)(2) 使用標準 SQ
6、L嵌套語句查詢選修課程編號為 C2的學員姓名和所屬單位 ?答: select sn,sd froms,sc where s.s#=sc.s# and sc.c#=c2(3) 使用標準 SQL嵌套語句查詢不選修課程編號為 C5的學員姓名和所屬單位 ?答: selectsn,sd from s where s# not in(selects# from sc where c#=c5)(4) 查詢選修了課程的學員人數(shù)答: select學員人數(shù) =count(distinct s#) from sc(5) 查詢選修課程超過 5門的學員學號和所屬單位 ?答: select sn,sd from s wh
7、ere s# in(select s# from sc group by s# having count(distinct c#)>5)目前在職場中很難找到非常合格的數(shù)據(jù)庫開發(fā)人員。有人說 : “SQL開發(fā)是一門語言,它很容易學,但是很難掌握。”在面試過程中多次碰到兩道 SQL查詢的題目,一是查詢 A(ID,Name) 表中第 31至40條記錄, ID 作為主鍵可能是不是連續(xù)增長的列,完整的查詢語句如下:select top 10 * from A where ID >(select max(ID) from (select top 30 ID from A order by A
8、) T) order by A另外一道題目的要求是查詢表 A中存在 ID 重復三次以上的記錄 , 完整的查詢語句如下:select * from(select count(ID) as count from table group by ID)T where T.count>3以上兩道題目非常有代表意義,望各位把自己碰到的有代表的查詢都貼上來。create table testtable1(id int IDENTITY,department varchar(12)select * from testtable1insert into testtable1 values('設計
9、')insert into testtable1 values('市場 ')insert into testtable1 values('售后 ')/*結果iddepartment1設計2市場3 售后*/create table testtable2(id int IDENTITY,dptID int,name varchar(12)insert into testtable2 values(1,'張三 ')insert into testtable2 values(1,'李四 ')insert into testtabl
10、e2 values(2,'王五 ')insert into testtable2 values(3,'彭六 ')insert into testtable2 values(4,'陳七 ')/*用一條 SQL語句,怎么顯示如下結果id dptID department name11設計張三21設計李四32市場王五43售后彭六54黑人陳七*/答案是:SELECT testtable2.* , ISNULL(department,'黑人 ')FROMtesttable1rightjointesttable2on testtable2.d
11、ptID= testtable1.ID在面試應聘的 SQL Server 數(shù)據(jù)庫開發(fā)人員時,我運用了一套標準的基準技術問題。下面這些問題是我覺得能夠真正有助于淘汰不合格應聘者的問題。 它們按照從易到難的順序排列。 當你問到關于主鍵和外鍵的問題時, 后面的問題都十分有難度,因為答案可能會更難解釋和說明,尤其是在面試的情形下。你能向我簡要敘述一下SQL Server 2000 中使用的一些數(shù)據(jù)庫對象嗎?你希望聽到的答案包括這樣一些對象 : 表格、視圖、用戶定義的函數(shù),以及存儲過程 ; 如果他們還能夠提到像觸發(fā)器這樣的對象就更好了。如果應聘者不能回答這個基本的問題,那么這不是一個好兆頭。NULL是什
12、么意思 ?NULL( 空 ) 這個值是數(shù)據(jù)庫世界里一個非常難纏的東西, 所以有不少應聘者會在這個問題上跌跟頭您也不要覺得意外。NULL 這個值表示 UNKNOWN(未知 ): 它不表示“” ( 空字符串 ) 。假設您的 SQLServer 數(shù)據(jù)庫里有 ANSI_NULLS,當然在默認情況下會有, 對 NULL這個值的任何比較都會生產(chǎn)一個 NULL值。您不能把任何值與一個 UNKNOWN值進行比較,并在邏輯上希望獲得一個答案。您必須使用 IS NULL 操作符。什么是索引 ?SQL Server 2000 里有什么類型的索引 ?任何有經(jīng)驗的數(shù)據(jù)庫開發(fā)人員都應該能夠很輕易地回答這個問題。 一些經(jīng)驗
13、不太多的開發(fā)人員能夠回答這個問題,但是有些地方會說不清楚。簡單地說,索引是一個數(shù)據(jù)結構, 用來快速訪問數(shù)據(jù)庫表格或者視圖里的數(shù)據(jù)。在 SQLServer 里,它們有兩種形式 : 聚集索引和非聚集索引。聚集索引在索引的葉級保存數(shù)據(jù)。 這意味著不論聚集索引里有表格的哪個 ( 或哪些 ) 字段,這些字段都會按順序被保存在表格。 由于存在這種排序, 所以每個表格只會有一個聚集索引。非聚集索引在索引的葉級有一個行標識符。 這個行標識符是一個指向磁盤上數(shù)據(jù)的指針。它允許每個表格有多個非聚集索引。什么是主鍵 ?什么是外鍵 ?主鍵是表格里的 ( 一個或多個 ) 字段,只用來定義表格里的行 ; 主鍵里的值總是唯
14、一的。外鍵是一個用來建立兩個表格之間關系的約束。 這種關系一般都涉及一個表格里的主鍵字段與另外一個表格 ( 盡管可能是同一個表格 ) 里的一系列相連的字段。那么這些相連的字段就是外鍵。什么是觸發(fā)器 ?SQL Server 2000 有什么不同類型的觸發(fā)器?讓未來的數(shù)據(jù)庫開發(fā)人員知道可用的觸發(fā)器類型以及如何實現(xiàn)它們是非常有益的。觸發(fā)器是一種專用類型的存儲過程,它被捆綁到SQL Server 2000 的表格或者視圖上。在 SQL Server 2000 里,有 INSTEAD-OF和 AFTER兩種觸發(fā)器。INSTEAD-OF觸發(fā)器是替代數(shù)據(jù)操控語言 (Data Manipulation Lan
15、guage , DML)語句對表格執(zhí)行語句的存儲過程。例如,如果我有一個用于TableA 的INSTEAD-OF-UPDATE觸發(fā)器,同時對這個表格執(zhí)行一個更新語句,那么INSTEAD-OF-UPDATE觸發(fā)器里的代碼會執(zhí)行, 而不是我執(zhí)行的更新語句則不會執(zhí)行操作。AFTER 觸發(fā)器要在 DML語句在數(shù)據(jù)庫里使用之后才執(zhí)行。 這些類型的觸發(fā)器對于監(jiān)視發(fā)生在數(shù)據(jù)庫表格里的數(shù)據(jù)變化十分好用。您如何確一個帶有名為 Fld1 字段的 TableB 表格里只具有 Fld1 字段里的那些值,而這些值同時在名為 TableA 的表格的 Fld1 字段里 ?這個與關系相關的問題有兩個可能的答案。第一個答案 (
16、 而且是您希望聽到的答案 ) 是使用外鍵限制。外鍵限制用來維護引用的完整性。它被用來確保表格里的字段只保存有已經(jīng)在不同的 ( 或者相同的 ) 表格里的另一個字段里定義了的值。這個字段就是候選鍵 ( 通常是另外一個表格的主鍵 ) 。另外一種答案是觸發(fā)器。 觸發(fā)器可以被用來保證以另外一種方式實現(xiàn)與限制相同的作用,但是它非常難設置與維護, 而且性能一般都很糟糕。 由于這個原因,微軟建議開發(fā)人員使用外鍵限制而不是觸發(fā)器來維護引用的完整性。對一個投入使用的在線事務處理表格有過多索引需要有什么樣的性能考慮?你正在尋找進行與數(shù)據(jù)操控有關的應聘人員。 對一個表格的索引越多, 數(shù)據(jù)庫引擎用來更新、 插入或者刪除數(shù)據(jù)所需要的時間就越多, 因為在數(shù)據(jù)操控發(fā)生的時候索引也必須要維護。你可以用什么來確保表格里的字段只接受特定范圍里的值?這個問題可以用多種方式來回答, 但是只有一個答案是“好”答案。 您希望聽到的回答是 Check 限制,它在數(shù)據(jù)庫表格里被定義,用來限制輸入該列的值。觸發(fā)器也可以被用來限制數(shù)據(jù)庫表格里的字段能夠接受的值, 但是這種辦法要求觸發(fā)器在表格里被定義, 這可能會在某些情況下影響到性能。 因此,微軟建議使用 Check 限制而不是其他的方式來限制域的完整性。如果應聘者能夠正確地回答這個問題, 那么他的機會就非常大了, 因為這表明他們具有使用存儲過程的經(jīng)驗。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥品追蹤溯源管理制度
- 藥庫藥品發(fā)放管理制度
- 藥店器材采購管理制度
- 藥店藥品安全管理制度
- 營業(yè)現(xiàn)場安全管理制度
- 設備信息安全管理制度
- 設備安全檢查管理制度
- 設備搬運裝卸管理制度
- 設備潤滑分級管理制度
- 設備維修方案管理制度
- 人文英語4-005-國開機考復習資料
- 公司安全事故隱患內(nèi)部舉報、報告獎勵制度
- 中國玉石及玉文化鑒賞智慧樹知到期末考試答案章節(jié)答案2024年同濟大學
- 網(wǎng)絡集成實踐報告
- 小學思政課《愛國主義教育》
- 有趣的行為金融學知到章節(jié)答案智慧樹2023年上海海洋大學
- 民辦學校辦學章程(營利性)
- 機關婦委會換屆選舉工作基本程序
- 零件加工檢驗標準
- UML網(wǎng)上購物系統(tǒng)課程設計DOC
- 懷化職業(yè)技術學院就業(yè)工作管理制度匯編 (一)
評論
0/150
提交評論