乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      SQL面試題[經(jīng)典收錄]

       韻朵之家 2009-04-13

      SQL面試題(1)

      create table testtable1
      (
      id int IDENTITY,
      department varchar(12)
      )

      select * from testtable1
      insert into testtable1 values('設(shè)計')
      insert into testtable1 values('市場')
      insert into testtable1 values('售后')
      /*
      結(jié)果
      id department
      1   設(shè)計
      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 testtable2 values(2,'王五')
      insert into testtable2 values(3,'彭六')
      insert into testtable2 values(4,'陳七')
      /*
      用一條SQL語句,怎么顯示如下結(jié)果
      id dptID department name
      1   1      設(shè)計        張三
      2   1      設(shè)計        李四
      3   2      市場        王五
      4   3      售后        彭六
      5   4      黑人        陳七
      */

      答案:

      SELECT testtable2.* , ISNULL(department,'黑人')
      FROM testtable1 right join testtable2 on testtable2.dptID = testtable1.ID

      也做出來了可比這方法稍復(fù)雜。

      sql面試題(2)

      有表A,結(jié)構(gòu)如下:
      A: p_ID p_Num s_id
      1 10 01
      1 12 02
      2 8 01
      3 11 01
      3 8 03
      其中:p_ID為產(chǎn)品ID,p_Num為產(chǎn)品庫存量,s_id為倉庫ID。請用SQL語句實現(xiàn)將上表中的數(shù)據(jù)合并,合并后的數(shù)據(jù)為:
      p_ID s1_id s2_id s3_id
      1 10 12 0
      2 8 0 0
      3 11 0 8
      其中:s1_id為倉庫1的庫存量,s2_id為倉庫2的庫存量,s3_id為倉庫3的庫存量。如果該產(chǎn)品在某倉庫中無庫存量,那么就是0代替。

      結(jié)果:

      select p_id ,
      sum(case when s_id=1 then p_num else 0 end) as s1_id
      ,sum(case when s_id=2 then p_num else 0 end) as s2_id
      ,sum(case when s_id=3 then p_num else 0 end) as s3_id
      from myPro group by p_id

      SQL面試題(3)

      1.觸發(fā)器的作用?

        答:觸發(fā)器是一中特殊的存儲過程,主要是通過事件來觸發(fā)而被執(zhí)行的。它可以強化約束,來維護數(shù)據(jù)的完整性和一致性,可以跟蹤數(shù)據(jù)庫內(nèi)的操作從而不允許未經(jīng)許可的更新和變化??梢月?lián)級運算。如,某表上的觸發(fā)器上包含對另一個表的數(shù)據(jù)操作,而該操作又會導(dǎo)致該表觸發(fā)器被觸發(fā)。

      2。什么是存儲過程?用什么來調(diào)用?

      答:存儲過程是一個預(yù)編譯的SQL語句,優(yōu)點是允許模塊化的設(shè)計,就是說只需創(chuàng)建一次,以后在該程序中就可以調(diào)用多次。如果某次操作需要執(zhí)行多次SQL,使用存儲過程比單純SQL語句執(zhí)行要快??梢杂靡粋€命令對象來調(diào)用存儲過程。

      3。索引的作用?和它的優(yōu)點缺點是什么?

      答:索引就一種特殊的查詢表,數(shù)據(jù)庫的搜索引擎可以利用它加速對數(shù)據(jù)的檢索。它很類似與現(xiàn)實生活中書的目錄,不需要查詢整本書內(nèi)容就可以找到想要的數(shù)據(jù)。索引可以是唯一的,創(chuàng)建索引允許指定單個列或者是多個列。缺點是它減慢了數(shù)據(jù)錄入的速度,同時也增加了數(shù)據(jù)庫的尺寸大小。

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

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

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

      答:我是這樣做的,盡可能使用約束,如check,主鍵,外鍵,非空字段等來約束,這樣做效率最高,也最方便。其次是使用觸發(fā)器,這種方法可以保證,無論什么業(yè)務(wù)系統(tǒng)訪問數(shù)據(jù)庫都可以保證數(shù)據(jù)的完整新和一致性。最后考慮的是自寫業(yè)務(wù)邏輯,但這樣做麻煩,編程復(fù)雜,效率低下。

      5。什么是事務(wù)?什么是鎖?

      答:事務(wù)就是被綁定在一起作為一個邏輯工作單元的SQL語句分組,如果任何一個語句操作失敗那么整個操作就被失敗,以后操作就會回滾到操作前狀態(tài),或者是上有個節(jié)點。為了確保要么執(zhí)行,要么不執(zhí)行,就可以使用事務(wù)。要將有組語句作為事務(wù)考慮,就需要通過ACID測試,即原子性,一致性,隔離性和持久性。

        鎖:在所以的DBMS中,鎖是實現(xiàn)事務(wù)的關(guān)鍵,鎖可以保證事務(wù)的完整性和并發(fā)性。與現(xiàn)實生活中鎖一樣,它可以使某些數(shù)據(jù)的擁有者,在某段時間內(nèi)不能使用某些數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu)。當然鎖還分級別的。

      6。什么叫視圖?游標是什么?

      答:視圖是一種虛擬的表,具有和物理表相同的功能??梢詫σ晥D進行增,改,查,操作,試圖通常是有一個表或者多個表的行或列的子集。對視圖的修改不影響基本表。它使得我們獲取數(shù)據(jù)更容易,相比多表查詢。

        游標:是對查詢出來的結(jié)果集作為一個單元來有效的處理。游標可以定在該單元中的特定行,從結(jié)果集的當前行檢索一行或多行??梢詫Y(jié)果集當前行做修改。一般不使用游標,但是需要逐條處理數(shù)據(jù)的時候,游標顯得十分重要。

      7。為管理業(yè)務(wù)培訓信息,建立3個表:

           S(S#,SN,SD,SA)S#,SN,SD,SA分別代表學號,學員姓名,所屬單位,學員年齡

           C(C#,CN)C#,CN分別代表課程編號,課程名稱

            SC(S#,C#,G) S#,C#,G分別代表學號,所選的課程編號,學習成績

          (1)使用標準SQL嵌套語句查詢選修課程名稱為’稅收基礎(chǔ)’的學員學號和姓名?

                答案:select s# ,sn from s where S# in(select S# from c,sc where c.c#=sc.c# and cn=’稅收基礎(chǔ)’)

            (2) 使用標準SQL嵌套語句查詢選修課程編號為’C2’的學員姓名和所屬單位?

      答:select sn,sd from s,sc where s.s#=sc.s# and sc.c#=’c2’

            (3) 使用標準SQL嵌套語句查詢不選修課程編號為’C5’的學員姓名和所屬單位?

      答:select sn,sd from s where s# not in(select s# from sc where c#=’c5’)

             (4)查詢選修了課程的學員人數(shù)

      答:select 學員人數(shù)=count(distinct s#) from sc

             (5) 查詢選修課程超過5門的學員學號和所屬單位?

      答:select sn,sd from s where s# in(select s# from sc group by s# having count(distinct c#)>5)

      SQL面試題(4)

       

      1.查詢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 ) T) order by A

      2.查詢表A中存在ID重復(fù)三次以上的記錄,完整的查詢語句如下:
      select * from(select count(ID) as count from table group by ID)T where T.count>3

      SQL面試題(5)

       

      在面試應(yīng)聘的SQL Server數(shù)據(jù)庫開發(fā)人員時,我運用了一套標準的基準技術(shù)問題。下面這些問題是我覺得能夠真正有助于淘汰不合格應(yīng)聘者的問題。它們按照從易到難的順序排列。當你問到關(guān)于主鍵和外鍵的問題時,后面的問題都十分有難度,因為答案可能會更難解釋和說明,尤其是在面試的情形下。

      你能向我簡要敘述一下SQL Server 2000中使用的一些數(shù)據(jù)庫對象嗎?

      你希望聽到的答案包括這樣一些對象:表格、視圖、用戶定義的函數(shù),以及存儲過程;如果他們還能夠提到像觸發(fā)器這樣的對象就更好了。如果應(yīng)聘者不能回答這個基本的問題,那么這不是一個好兆頭。

      NULL是什么意思?

      NULL(空)這個值是數(shù)據(jù)庫世界里一個非常難纏的東西,所以有不少應(yīng)聘者會在這個問題上跌跟頭您也不要覺得意外。

      NULL這個值表示UNKNOWN(未知):它不表示“”(空字符串)。假設(shè)您的SQL Server數(shù)據(jù)庫里有ANSI_NULLS,當然在默認情況下會有,對NULL這個值的任何比較都會生產(chǎn)一個NULL值。您不能把任何值與一個 UNKNOWN值進行比較,并在邏輯上希望獲得一個答案。您必須使用IS NULL操作符。

      什么是索引?SQL Server 2000里有什么類型的索引?

      任何有經(jīng)驗的數(shù)據(jù)庫開發(fā)人員都應(yīng)該能夠很輕易地回答這個問題。一些經(jīng)驗不太多的開發(fā)人員能夠回答這個問題,但是有些地方會說不清楚。

      簡單地說,索引是一個數(shù)據(jù)結(jié)構(gòu),用來快速訪問數(shù)據(jù)庫表格或者視圖里的數(shù)據(jù)。在SQL Server里,它們有兩種形式:聚集索引和非聚集索引。聚集索引在索引的葉級保存數(shù)據(jù)。這意味著不論聚集索引里有表格的哪個(或哪些)字段,這些字段都會按順序被保存在表格。由于存在這種排序,所以每個表格只會有一個聚集索引。非聚集索引在索引的葉級有一個行標識符。這個行標識符是一個指向磁盤上數(shù)據(jù)的指針。它允許每個表格有多個非聚集索引。

      什么是主鍵?什么是外鍵?

      主鍵是表格里的(一個或多個)字段,只用來定義表格里的行;主鍵里的值總是唯一的。外鍵是一個用來建立兩個表格之間關(guān)系的約束。這種關(guān)系一般都涉及一個表格里的主鍵字段與另外一個表格(盡管可能是同一個表格)里的一系列相連的字段。那么這些相連的字段就是外鍵。

      什么是觸發(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 Language,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字段里?

      這個與關(guān)系相關(guān)的問題有兩個可能的答案。第一個答案(而且是您希望聽到的答案)是使用外鍵限制。外鍵限制用來維護引用的完整性。它被用來確保表格里的字段只保存有已經(jīng)在不同的(或者相同的)表格里的另一個字段里定義了的值。這個字段就是候選鍵(通常是另外一個表格的主鍵)。

      另外一種答案是觸發(fā)器。觸發(fā)器可以被用來保證以另外一種方式實現(xiàn)與限制相同的作用,但是它非常難設(shè)置與維護,而且性能一般都很糟糕。由于這個原因,微軟建議開發(fā)人員使用外鍵限制而不是觸發(fā)器來維護引用的完整性。

      對一個投入使用的在線事務(wù)處理表格有過多索引需要有什么樣的性能考慮?

      你正在尋找進行與數(shù)據(jù)操控有關(guān)的應(yīng)聘人員。對一個表格的索引越多,數(shù)據(jù)庫引擎用來更新、插入或者刪除數(shù)據(jù)所需要的時間就越多,因為在數(shù)據(jù)操控發(fā)生的時候索引也必須要維護。

      你可以用什么來確保表格里的字段只接受特定范圍里的值?

      這個問題可以用多種方式來回答,但是只有一個答案是“好”答案。您希望聽到的回答是Check限制,它在數(shù)據(jù)庫表格里被定義,用來限制輸入該列的值。

      觸發(fā)器也可以被用來限制數(shù)據(jù)庫表格里的字段能夠接受的值,但是這種辦法要求觸發(fā)器在表格里被定義,這可能會在某些情況下影響到性能。因此,微軟建議使用Check限制而不是其他的方式來限制域的完整性。

      如果應(yīng)聘者能夠正確地回答這個問題,那么他的機會就非常大了,因為這表明他們具有使用存儲過程的經(jīng)驗。

      返回參數(shù)總是由存儲過程返回,它用來表示存儲過程是成功還是失敗。返回參數(shù)總是INT數(shù)據(jù)類型。

      OUTPUT參數(shù)明確要求由開發(fā)人員來指定,它可以返回其他類型的數(shù)據(jù),例如字符型和數(shù)值型的值。(可以用作輸出參數(shù)的數(shù)據(jù)類型是有一些限制的。)您可以在一個存儲過程里使用多個OUTPUT參數(shù),而您只能夠使用一個返回參數(shù)。

      什么是相關(guān)子查詢?如何使用這些查詢?

      經(jīng)驗更加豐富的開發(fā)人員將能夠準確地描述這種類型的查詢。

      相關(guān)子查詢是一種包含子查詢的特殊類型的查詢。查詢里包含的子查詢會真正請求外部查詢的值,從而形成一個類似于循環(huán)的狀況。

       

      SQL面試題(6)

       

      原表:
      courseid coursename score
      -------------------------------------
      1 java 70
      2 oracle 90
      3 xml 40
      4 jsp 30
      5 servlet 80
      -------------------------------------
      為了便于閱讀,查詢此表后的結(jié)果顯式如下(及格分數(shù)為60):
      courseid coursename score mark
      ---------------------------------------------------
      1 java 70 pass
      2 oracle 90 pass
      3 xml 40 fail
      4 jsp 30 fail
      5 servlet 80 pass
      ---------------------------------------------------
      寫出此查詢語句

      ORACLE : select courseid, coursename ,score ,decode(sign(score-60),-1,'fail','pass') as mark from course

      (DECODE函數(shù)是ORACLE PL/SQL是功能強大的函數(shù)之一,目前還只有ORACLE公司的SQL提供了此函數(shù))

      (SQL: select courseid, coursename ,score ,(case when score<60 then 'fail' else 'pass' end) as mark from course )

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多