資源描述:
《sqlserver教案第09周 連接查詢和子查詢》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、數(shù)據(jù)庫(kù)原理與應(yīng)用——SQLServer2005教案鄒競(jìng)授課日期年月日第6周授課形式講課授課時(shí)數(shù)4章節(jié)名稱第08章簡(jiǎn)單查詢教學(xué)目的與要求①掌握使用Join…On…子句進(jìn)行多表自然連接查詢②掌握左外連接、右外連接和完全外連接③掌握自連接查詢④掌握子查詢的分類(單行子查詢、多行子查詢)⑤掌握在Where子句中使用子查詢作為查詢條件⑥掌握在From子句中使用子查詢作為數(shù)據(jù)源⑦掌握使用子查詢?cè)贗nsertInto語(yǔ)句中為數(shù)據(jù)表插入另一表中的已有數(shù)據(jù)。⑧掌握使用子查詢?cè)趗pdate語(yǔ)句中進(jìn)行基于外表?xiàng)l件的數(shù)據(jù)修改。⑨掌握使用子查詢?cè)赿eletefrom語(yǔ)句中進(jìn)行基于外表?xiàng)l件的數(shù)據(jù)刪除。教
2、學(xué)重點(diǎn)連接查詢、自查詢教學(xué)難點(diǎn)自連接查詢教學(xué)方法和手段講授法結(jié)合課堂實(shí)例分析討論教學(xué)過(guò)程與組織導(dǎo)入新課我們已經(jīng)學(xué)習(xí)了簡(jiǎn)單的數(shù)據(jù)查詢。前面所講的數(shù)據(jù)查詢,數(shù)據(jù)的來(lái)源都在一張表中。更多的情況下,需要查詢的數(shù)據(jù)往往分布在多張表,這就需要進(jìn)行關(guān)系代數(shù)的連接運(yùn)算,在連接的結(jié)果上進(jìn)行查詢。講授新課第09章連接查詢和子查詢第01節(jié)多表連接查詢多表查詢又稱作連接查詢,或稱作聯(lián)合查詢。連接查詢又可分成內(nèi)連接查詢、外連接查詢等等。內(nèi)連接查詢中,又可分為等值連接、非等值連接、自連接等子類。外連接中,又可分為左外連接、右外連接等。9.1.1內(nèi)連接(自然連接)兩個(gè)表的內(nèi)連接查詢是指,從兩個(gè)表中的相關(guān)字
3、段中提取信息作為查詢的條件,如果滿足查詢的條件,就從兩個(gè)表中的相關(guān)記錄中,選擇需要的信息,連接成一個(gè)元組,置于查詢結(jié)果集之中,這就是內(nèi)連接的主要作用。內(nèi)連接語(yǔ)句的格式和語(yǔ)法如下:FROM表1[INNER]JOIN表2ON連接條件表達(dá)式連接查詢的語(yǔ)句,主要是在單表查詢的語(yǔ)句中,對(duì)數(shù)據(jù)源部分進(jìn)行了語(yǔ)法成份的擴(kuò)展。用以申明是哪兩個(gè)表聯(lián)合查詢。ON之后的條件表達(dá)式,說(shuō)明了連接的條件。連接條件表達(dá)式的格式有特殊要求。其一般格式為:[表名1.]列名1比較運(yùn)算符[表名2.]列名2如果某個(gè)列所表示的數(shù)據(jù)在查詢語(yǔ)句涉及到的多張表中存在,且列名相同,使用時(shí)就應(yīng)該在其前面冠上表名,并以圓點(diǎn)(.)隔
4、開(kāi)。當(dāng)確認(rèn)某個(gè)列名只出現(xiàn)在一張表時(shí),它前面的表名才可以省略。連接查詢語(yǔ)句中,SELECT之后的列名列表也應(yīng)這樣表示:SELECT[表名.]列名1,…,[表名.]列名nFROM…連接條件中,兩個(gè)表中的比較列,必須是語(yǔ)義相同的列,才可以構(gòu)成有意義比較條件。例:查詢每個(gè)學(xué)生的情況和選課情況Select*FromStudentInnerJoinSCOnStudent.SNo=SC.SNo數(shù)據(jù)庫(kù)原理與應(yīng)用——SQLServer2005教案鄒競(jìng)例:在上例中,只選取學(xué)號(hào)、姓名、課程號(hào)和成績(jī)SelectSC.SNo,Student.SName,SC.CNo,SC.GradeFromStude
5、ntInnerJoinSCOnStudent.SNo=SC.SNo例:查詢系編號(hào)為g001和g005各學(xué)生的選課情況和每門課的成績(jī),將每個(gè)系的名單排在一起SelectStudent.SName,SC.CNo,SC.GradeFromStudentInnerJoinSCOnStudent.SNo=SC.SNoWhereStudent.Depart='g001'OrStudent.Depart='g005'OrderByStudent.Depart;例:在上例中,使用表的別名SelectS.SName,SC.CNo,SC.GradeFromStudentSInnerJoinSCO
6、nS.SNo=SC.SNoWhereS.Depart='g001'OrS.Depart='g005'OrderByS.Depart;例:查詢計(jì)算機(jī)系中選修了課程名為VB的課程的學(xué)生姓名和成績(jī)SelectS.SName,C.CName,SC.GradeFromStudentSJoinSCOnS.SNo=SC.SNoJoinCourseCOnC.CNo=SC.CNoWhereS.Depart='g001'AndC.CName='VB'例:查詢所有選修了VB課程的學(xué)生姓名和所在系編號(hào)SelectS.SName,S.DepartFromStudentSJoinSCOnS.SNo=SC
7、.SNoJoinCourseCOnC.CNo=SC.CNoWhereC.CName='VB'9.1.2自連接連接操作不僅可以在不同的表上進(jìn)行,而且在同一張表內(nèi)可以進(jìn)行自身連接,即將同一個(gè)表的不同行連接起來(lái)。自連接可以看作一張表的兩個(gè)副本之間的連接。在自連接中,必須為表指定兩個(gè)別名,使之在邏輯上成為兩張表。自連接的處理思想是,將物理上的一個(gè)表,從邏輯上視同兩個(gè)表。使用自連接必須為同一張表取兩個(gè)別名,讓一個(gè)表變成表名不同的兩個(gè)表,僅此而已。其余的工作與兩表連接查詢無(wú)任何區(qū)別。例:查詢與馮鞏在同一個(gè)系學(xué)習(xí)的學(xué)