查詢數(shù)據(jù)和修改數(shù)據(jù)課件_第1頁
查詢數(shù)據(jù)和修改數(shù)據(jù)課件_第2頁
查詢數(shù)據(jù)和修改數(shù)據(jù)課件_第3頁
查詢數(shù)據(jù)和修改數(shù)據(jù)課件_第4頁
查詢數(shù)據(jù)和修改數(shù)據(jù)課件_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、查詢數(shù)據(jù)和修改數(shù)據(jù)查詢數(shù)據(jù)和修改數(shù)據(jù)學(xué)習(xí)目標(biāo) 掌握SELECT語句結(jié)構(gòu);掌握數(shù)據(jù)的基本查詢方法;掌握聚合函數(shù)、子查詢的使用方法;掌握使用Insert、Update、Delete管理數(shù)據(jù)。學(xué)習(xí)目標(biāo) 掌握SELECT語句結(jié)構(gòu);學(xué)習(xí)重點(diǎn) SELECT語句結(jié)構(gòu);聚合函數(shù)、子查詢的使用方法;使用Insert、Update、Delete處理數(shù)據(jù)。學(xué)習(xí)重點(diǎn) SELECT語句結(jié)構(gòu);4.1 SELECT語句SELECT 語句的語法格式如下:SELECT select_list INTO new_table FROM table_source WHERE search_condition GROUP BY gro

2、up_by_expression HAVING search_condition ORDER BY order_expression ASC | DESC 4.1 SELECT語句SELECT 語句的語法格式如下:4.2數(shù)據(jù)的基本查詢SELECT子句的語法格式如下:SELECT ALL | DISTINCT TOP n PERCENT *| column_name | expression AS column_alias 4.2數(shù)據(jù)的基本查詢SELECT子句的語法格式如下:4.2.1 SELECT子句例4.1 顯示stu表的所有記錄。USE studentsGOSELECT * FROM St

3、u4.2.1 SELECT子句例4.1 顯示stu表的所有記錄4.2.1 SELECT子句例4.2 查找所有學(xué)生的學(xué)號,姓名及班級。USE StudentsGOSELECT Stuid,Stuname,ClassFROM Stu 4.2.1 SELECT子句例4.2 查找所有學(xué)生的學(xué)號,姓4.2.1 SELECT子句給字段命別名的方式有兩種:1、舊名 AS 新名2、新名 = 舊名例4.3 從Stu中顯示出全部同學(xué)的電話號碼。USE StudentsGOSELECT Stuname As 姓名, phone As 電話號碼FROM Stu4.2.1 SELECT子句給字段命別名的方式有兩種:4.

4、2.1 SELECT子句DISTINCT 關(guān)鍵字可從 SELECT 語句的結(jié)果中除去重復(fù)的行。 例4.4 從Stu表中顯示系代號,并去掉重復(fù)記錄。USE StudentsGOSELECT DISTINCT Depid As 系代號FROM Stu4.2.1 SELECT子句DISTINCT 關(guān)鍵字可從 S4.2.1 SELECT子句TOP 關(guān)鍵字限制返回到結(jié)果集中的記錄的行數(shù)。 其語法格式為: TOP n PERCENT WITH TIES n 指定返回的行數(shù)。如果指定了 PERCENT,則返回的是符合查詢條件的記錄的n%。4.2.1 SELECT子句TOP 關(guān)鍵字限制返回到結(jié)果集中4.2.1

5、 SELECT子句例4.5 從Stu表中顯示前5條學(xué)生記錄。USE StudentsGOSELECT TOP 5 *FROM Stu 4.2.1 SELECT子句例4.5 從Stu表中顯示前5條4.2.1 SELECT子句例4.6 從Stu表中顯示80%的學(xué)生記錄。USE StudentsGOSELECT TOP 80 PERCENT * FROM Stu4.2.1 SELECT子句例4.6 從Stu表中顯示80%4.2.2 WHERE 子句1用關(guān)系運(yùn)算符4.2.2 WHERE 子句1用關(guān)系運(yùn)算符4.2.2 WHERE 子句例4.7 從表Stu中找出所有的男生的電話號碼。USE Student

6、sGOSELECT Stuname As 姓名,Phone As 電話號碼 FROM StuWHERE Sex=男 4.2.2 WHERE 子句例4.7 從表Stu中找出所有的4.2.2 WHERE 子句2使用邏輯運(yùn)算符可以使用AND、OR、NOT等邏輯運(yùn)算符來連接表達(dá)式,其返回值為布爾類型:TRUN或FALES。AND表示兩個(gè)條件都必須滿足,其值為TRUN;OR表示任意滿足其中的一個(gè)條件,其值為TRUN;NOT表示否定后面的表達(dá)式,其值取反。當(dāng)混合使用邏輯運(yùn)算符時(shí),NOT的優(yōu)先級大于AND和OR。4.2.2 WHERE 子句2使用邏輯運(yùn)算符4.2.2 WHERE 子句例4.8 查詢系代號為“

7、1001”的女同學(xué)的信息。USE StudentsGOSELECT StuID,StuName,Sex,PhoneFROM StuWHERE DepID=1001AND Sex=女 4.2.2 WHERE 子句例4.8 查詢系代號為“10014.2.2 WHERE 子句例4.9 查詢系代號為”1001”或”1003”的同學(xué)的信息.USE StudentsGOSELECT *FROM StuWHERE DepID=1001 OR DepID=1003 4.2.2 WHERE 子句例4.9 查詢系代號為”10014.2.2 WHERE 子句3使用IN關(guān)鍵字IN 關(guān)鍵字選擇與列表中的任意一個(gè)值匹配的

8、行。test_expression NOT IN expression ,.n 值列表中的各個(gè)值之間是“或”的關(guān)系,只需等于其中的一個(gè)值即符合條件。 4.2.2 WHERE 子句3使用IN關(guān)鍵字4.2.2 WHERE 子句例4.10 找出系代號為“1001”、“1002”、“1005”的學(xué)生的姓名、電話號碼和系代碼。USE StudentsGOSELECT Stuname As 姓名, phone As 電話號碼 ,Depid As 系代號FROM StuWHERE Depid IN(1001,1002,1005)4.2.2 WHERE 子句例4.10 找出系代號為“104.2.2 WHERE

9、 子句4使用BETWEEN關(guān)鍵字使用BETWEEN關(guān)鍵字可以對指定范圍進(jìn)行搜索,返回介于兩個(gè)指定值之間的值。test_expr NOT BETWEEN begin_expr AND end_expr其中test_expr、begin_expr 、end_expr的數(shù)據(jù)類型需相同。begin_expr 的值小于end_expr的值。 4.2.2 WHERE 子句4使用BETWEEN關(guān)鍵字4.2.2 WHERE 子句當(dāng)不使用NOT時(shí),等價(jià)于test_expr= begin_expr AND test_expr=end_expr當(dāng)使用NOT時(shí),等價(jià)于test_expr end_expr4.2.2 W

10、HERE 子句當(dāng)不使用NOT時(shí),等價(jià)于4.2.2 WHERE 子句例4.11 從成績表Score表中選擇分?jǐn)?shù)在80-90分的同學(xué)的學(xué)號,課程代碼和分?jǐn)?shù)。USE StudentsGOSELECT Stuid As 學(xué)號, Couid As 課程代碼,Score As 分?jǐn)?shù) FROM ScoreWHERE Score Between 80 And 904.2.2 WHERE 子句例4.11 從成績表Score表4.2.2 WHERE 子句5模糊匹配查詢使用LIKE 運(yùn)算符,可用通配符代替搜索字符串中的一個(gè)或多個(gè)字符。match_expression NOT LIKE pattern 4.2.2 W

11、HERE 子句5模糊匹配查詢4.2.2 WHERE 子句要搜索的字符串可包含四種通配符(如表4-2)的任意組合。4.2.2 WHERE 子句要搜索的字符串可包含四種通配符(4.2.2 WHERE 子句例4.12 查找班級名稱中包含“軟件技術(shù)”四個(gè)字的同學(xué)信息。USE StudentsGOSELECT * FROM StuWHERE Class LIKE %軟件技術(shù)%4.2.2 WHERE 子句例4.12 查找班級名稱中包含“4.2.2 WHERE 子句6查詢空值使用IS NULL可以查詢字段中為空值的記錄。expression IS NOT NULL例4.13 查詢“電話號碼”字段為空值的學(xué)生

12、的學(xué)號和姓名。USE StudentsGOSELECT StuID,StuNameFROM StuWHERE Phone IS NULL4.2.2 WHERE 子句6查詢空值4.2.3 ORDER BY子句使用ORDER BY子句可以進(jìn)行排序處理。ORDER BY order_expression ASC | DESC ORDER BY 子句對查詢結(jié)果中的一列或多列進(jìn)行排序,排序可以按照升序進(jìn)行(ASC),也可以按照降序進(jìn)行(DESC)。如果沒有指定升序還是降序,默認(rèn)為 ASC。 4.2.3 ORDER BY子句使用ORDER BY子句可4.2.3 ORDER BY子句例4.14 查詢課程代碼

13、為“A002”的所有成績,按降序排列。USE StudentsGOSELECT * FROM ScoreWHERE CouID=A002ORDER BY Score DESC4.2.3 ORDER BY子句例4.14 查詢課程代碼為4.2.3 ORDER BY子句例4.15 查詢“A002”課程分?jǐn)?shù)最高的4位同學(xué)的學(xué)號和成績,若后面行中出現(xiàn)分?jǐn)?shù)相同的情況則保留。USE StudentsGOSELECT TOP 4 WITH TIES StuID,ScoreFROM ScoreWHERE CouID=A002ORDER BY Score DESC4.2.3 ORDER BY子句例4.15 查詢“

14、A0024.2.3 ORDER BY子句為了防止后面記錄中出現(xiàn)排序字段值相等,但限于TOP語句規(guī)定顯示記錄條數(shù)無法顯示,可以在TOP n后使用WITH TIES選項(xiàng),保留后面記錄中值相等的記錄。 4.2.3 ORDER BY子句為了防止后面記錄中出現(xiàn)排序4.2.4 GROUP BY子句聚合函數(shù)是在查詢結(jié)果集中生成匯總值。4.2.4 GROUP BY子句聚合函數(shù)是在查詢結(jié)果集中生成4.2.4 GROUP BY子句例4.16 查詢成績表Scores中代碼為“A001”的課程的平均成績。USE StudentsGOSELECT AVG(Score) As 平均成績FROM ScoresWHERE C

15、ouID=A0014.2.4 GROUP BY子句例4.16 查詢成績表Sco4.2.4 GROUP BY子句GROUP BY根據(jù)指定的字段值進(jìn)行分組,如果 SELECT 子句的選擇列表中包含聚合函數(shù),則計(jì)算每組的匯總值。GROUP BY語法格式如下:GROUP BY group_by_expression ,.n 注意:text、ntext 和 image 類型的列不能用于 group_by_expression。4.2.4 GROUP BY子句GROUP BY根據(jù)指定的字4.2.4 GROUP BY子句例4.17 查詢成績表Scores中每門課程的平均成績。USE StudentsGOSE

16、LECT CouID As 課程代碼, AVG(Score) As 平均成績FROM ScoresGROUP BY CouID4.2.4 GROUP BY子句例4.17 查詢成績表Sco4.2.4 GROUP BY子句注意:指定 GROUP BY 時(shí),SELECT列表中任一非聚合表達(dá)式內(nèi)的所有列都應(yīng)包含在 GROUP BY 列表中,或者 GROUP BY 表達(dá)式必須與SELECT列表中的表達(dá)式完全匹配。4.2.4 GROUP BY子句注意:4.2.4 GROUP BY子句例4.18 查詢每門課程已經(jīng)學(xué)習(xí)的人數(shù)。USE StudentsGOSELECT CouID,COUNT(*)FROM Sc

17、oresGROUP BY CouID4.2.4 GROUP BY子句例4.18 查詢每門課程已經(jīng)4.2.5 HAVING子句在使用了GROUP BY子句之后,才可以使用HAVING子句。HAVING子句是對查詢進(jìn)行條件限制,和WHERE子句的區(qū)別在于:HAVING子句是對分組之后進(jìn)行條件限制WHERE子句主要對分組之前進(jìn)行條件限制。4.2.5 HAVING子句在使用了GROUP BY子句之后4.2.5 HAVING子句例4.19 查詢課程平均分大于80分的課程編號。USE StudentsGOSELECT CouID,AVG(Score)FROM ScoresGROUP BY CouIDHAV

18、ING AVG(Score)804.2.5 HAVING子句例4.19 查詢課程平均分大于84.2.5 HAVING子句例4.20學(xué)校要評三好學(xué)生,要求第一學(xué)期的單科成績不低于70分,平均成績不低于80分的同學(xué)方有資格參加評選,查詢有資格參加三好生評選的學(xué)生的學(xué)號,并按平均成績由高到低排序。USE StudentsGOSELECT StuID,AVG(Score)FROM ScoresWHERE Term =1GROUP BY StuIDHAVING AVG(Score)=80 and min(score)=70ORDER BY AVG(Score) DESC4.2.5 HAVING子句例4.

19、20學(xué)校要評三好學(xué)生,要求4.2.6 數(shù)據(jù)匯總在查詢中需要對某些數(shù)據(jù)進(jìn)行匯總,可以使用前面所講的GROUP BY語句和聚合函數(shù)外,還可以使用一種額外匯總數(shù)據(jù)的語句COMPUTE和COMPUTE BY子句。其語法為:COMPUTE AVG | COUNT | MAX | MIN | SUM ( expression ) ,.n BY expression ,.n 使用COMPUTE子句可以在查詢的結(jié)果集之外產(chǎn)生一個(gè)匯總,其中使用聚合函數(shù)進(jìn)行。4.2.6 數(shù)據(jù)匯總在查詢中需要對某些數(shù)據(jù)進(jìn)行匯總,可以使用4.2.6 數(shù)據(jù)匯總例4.21 查詢課程號為“A002”的成績記錄,并求該門課程的平均分。USE

20、 StudentsGOSELECT *FROM ScoresWHERE CouID=A002COMPUTE AVG(Score)4.2.6 數(shù)據(jù)匯總例4.21 查詢課程號為“A002”的成4.2.6 數(shù)據(jù)匯總例4.22 查詢每位學(xué)生的成績的詳細(xì)信息,并求其總分,平均分。USE StudentsGOSELECT *FROM ScoresORDER BY StuIDCOMPUTE SUM(Score),AVG(Score) BY StuID4.2.6 數(shù)據(jù)匯總例4.22 查詢每位學(xué)生的成績的詳細(xì)信息4.2.7 INTO子句INTO子句的作用是將查詢的結(jié)果存放到新的表中,類似于WINDOWS操作中常

21、見的“另存為”。注意:這個(gè)新的表不需要?jiǎng)?chuàng)建,直接由查詢得出的字段及數(shù)據(jù)類型,記錄所組成。例4.23 將學(xué)生的學(xué)號,姓名,所在班級放入表S1中。USE StudentsGOSELECT Stu,StuName,ClassINTO S1FROM Stu4.2.7 INTO子句INTO子句的作用是將查詢的結(jié)果存放4.3.多表聯(lián)接查詢SQL Server 中表的聯(lián)接,可以分為三種類型。內(nèi)聯(lián)接外聯(lián)接左外聯(lián)接右外聯(lián)接全外聯(lián)接交叉聯(lián)接4.3.多表聯(lián)接查詢SQL Server 中表的聯(lián)接,可以分4.3.1內(nèi)聯(lián)接內(nèi)聯(lián)接根據(jù)各個(gè)表之間的邏輯關(guān)系從兩個(gè)或多個(gè)表中檢索數(shù)據(jù)。內(nèi)聯(lián)接的語法格式如下:FROM table_

22、name INNER JOIN table_name ON join_conditions4.3.1內(nèi)聯(lián)接內(nèi)聯(lián)接根據(jù)各個(gè)表之間的邏輯關(guān)系從兩個(gè)或多個(gè)表4.3.1內(nèi)聯(lián)接例4.24 查看學(xué)習(xí)課程代碼為C001課程的學(xué)生的學(xué)號,姓名,班級及該門課程的成績。USE StudentsGO SELECT Stu.stuid,stuname,class,scoreFROM Scores INNER JOIN Stu ON Scores.StuID=Stu.StuIDWHERE CouID=C0014.3.1內(nèi)聯(lián)接例4.24 查看學(xué)習(xí)課程代碼為C001課4.3.1內(nèi)聯(lián)接在查詢所引用的兩個(gè)或多個(gè)表之間,任何重復(fù)

23、的列名都必須用表名限定。 如果某個(gè)列名在查詢用到的兩個(gè)或多個(gè)表中不重復(fù),則對這一列的引用不必用表名限定。為表設(shè)定了別名后,要使用該表限定字段時(shí),必須使用別名。 4.3.1內(nèi)聯(lián)接在查詢所引用的兩個(gè)或多個(gè)表之間,任何重復(fù)的列4.3.1內(nèi)聯(lián)接例4.25 查詢學(xué)號尾數(shù)為2,4,7的同學(xué)的學(xué)號,姓名,及各門課程的成績。UES StudentsGOSELECT S. StuID,S.StuName,C.CouName,C.ScoreFROM Stu AS S INNER JOIN Score AS O ON S.StuID=O.StuID INNER JOIN Course AS C ON O.CouID

24、=C.CouIDWHERE S.StuID LIKE %2,4,74.3.1內(nèi)聯(lián)接例4.25 查詢學(xué)號尾數(shù)為2,4,7的同學(xué)的4.3.1內(nèi)聯(lián)接內(nèi)聯(lián)接中還有一種特殊的聯(lián)接:自聯(lián)接。所謂自聯(lián)接,就是表與表本身自己進(jìn)行內(nèi)連接。例4.26 查詢姓名相同的學(xué)生的信息。USE StudentsGOSELECT A.StuID,A.StuNameFROM Stu AS A INNER JOIN Stu AS B ON A.StuName=B.StuNameWHERE A.StuIDB.StuID 4.3.1內(nèi)聯(lián)接內(nèi)聯(lián)接中還有一種特殊的聯(lián)接:自聯(lián)接。所謂自聯(lián)4.3.2外聯(lián)接外聯(lián)接分為左外聯(lián)接、右外聯(lián)接或全外聯(lián)

25、接。 1左外聯(lián)接 : FROM table_name LEFT OUTERJOIN table_name ON join_conditions。 2右外聯(lián)接 : FROM table_name RIGHT OUTER JOIN table_name ON join_conditions。 3全外聯(lián)接 : FROM table_name FULL OUTERJOIN table_name ON join_conditions。 4.3.2外聯(lián)接外聯(lián)接分為左外聯(lián)接、右外聯(lián)接或全外聯(lián)接。 4.3.2外聯(lián)接例4.27 查詢新開課程(沒有學(xué)生學(xué)過的課程)。USE StudentsGOSELECT C.C

26、ouID,C.CouNameFROM Scores AS S RIGHT JOIN Course AS C ON S.CouID=C.CouIDWHERE S.CouID IS NULL4.3.2外聯(lián)接例4.27 查詢新開課程(沒有學(xué)生學(xué)過的課程4.3.2外聯(lián)接例4.28 查詢每門課程有多少學(xué)生曾經(jīng)學(xué)習(xí)過,若有新開課程,則顯示0。USE StudentsGOSELECT C.CouID,C.CouName,COUNT(S.StuID)FROM Course AS C LEFT JOIN Score AS S ON S.CouID=C.CouIDGROUP BY C.CouID,C.CouNam

27、e4.3.2外聯(lián)接例4.28 查詢每門課程有多少學(xué)生曾經(jīng)學(xué)習(xí)過4.3.3交叉聯(lián)接 交叉聯(lián)接將左表中的每一行與右表中的所有行聯(lián)接,無聯(lián)接條件。因此,交叉聯(lián)接在實(shí)際中很少使用。4.3.3交叉聯(lián)接 交叉聯(lián)接將左表中的每一行與右表中的所有行4.3.4 聯(lián)合UNIONUNION運(yùn)算符將兩個(gè)或多個(gè) SELECT 語句的結(jié)果組合成一個(gè)結(jié)果集。 使用 UNION組合的結(jié)果集都必須具有相同的結(jié)構(gòu)。而且它們的列數(shù)必須相同,并且相應(yīng)的結(jié)果集列的數(shù)據(jù)類型必須兼容。 UNION 的指定方式如下:Select_statement UNION ALL Select_statement4.3.4 聯(lián)合UNIONUNION運(yùn)算

28、符將兩個(gè)或多個(gè) SE4.3.4 聯(lián)合UNION注意: 在使用 UNION 運(yùn)算符組合的語句中,所有選擇列表的表達(dá)式數(shù)目必須相同(列名、算術(shù)表達(dá)式、聚合函數(shù)等)。在使用 UNION 組合的結(jié)果集中的相應(yīng)列、或個(gè)別查詢中使用的任意列的子集必須具有相同數(shù)據(jù)類型,并且兩種數(shù)據(jù)類型之間必須存在可能的隱性數(shù)據(jù)轉(zhuǎn)換,或提供了顯式轉(zhuǎn)換。 4.3.4 聯(lián)合UNION注意: 4.4子查詢子查詢是一個(gè) SELECT 查詢,且嵌套在 SELECT、INSERT、UPDATE、DELETE 語句或其它子查詢中。 任何允許使用表達(dá)式的地方都可以使用子查詢。 子查詢也稱為內(nèi)部查詢或內(nèi)部選擇,而包含子查詢的語句也稱為外部查詢

29、或外部選擇。4.4子查詢子查詢是一個(gè) SELECT 查詢,且嵌套在 SE4.4子查詢子查詢的 SELECT 查詢總是使用圓括號括起來。且不能包括 COMPUTE 或 COMPUTE BY 子句,如果同時(shí)指定 TOP 子句,則只能包括 ORDER BY 子句。子查詢可以嵌套在SELECT、INSERT、UPDATE 或 DELETE 語句內(nèi),或者其它子查詢中。最多可嵌套到 32 層。4.4子查詢子查詢的 SELECT 查詢總是使用圓括號括起來4.4.1子查詢作表達(dá)式若子查詢返回的是單個(gè)值,則在任何可以使用表達(dá)式的地方都可以使用子查詢。例4.29 查詢比A001課程最低分還低的學(xué)生的成績。USE

30、StudentsGOSELECT StuID,ScoreFROM ScoresWHERE Score(SELECT MIN(Score) FROM Scores WHERE CouID=A001)4.4.1子查詢作表達(dá)式若子查詢返回的是單個(gè)值,則在任何可以4.4.1子查詢作表達(dá)式例4.30 查詢學(xué)生20070102的基本信息及平均成績。USE StudentsGOSELECT StuID,StuName,Sex,Phone,(SELECT AVG(Score)FROM Scores WHERE StuID=20070102) AS 平均分FROM StuWHERE StuID=20070102

31、4.4.1子查詢作表達(dá)式例4.30 查詢學(xué)生200701024.4.1子查詢作表達(dá)式若返回的不是單個(gè)的標(biāo)量值,而是多個(gè)值,則可以使用IN關(guān)鍵字。通過前面的學(xué)習(xí)已經(jīng)知道可以通過 IN(或 NOT IN)與一列值或更多值進(jìn)行匹配。例4.31 查詢電子信息系同學(xué)的電話號碼。USE StudentsGOSELECT Stuname As 姓名,phone As 電話號碼FROM StuWHERE Depid IN (SELECT Depid FROM Dep WHERE Depname=電子信息系)4.4.1子查詢作表達(dá)式若返回的不是單個(gè)的標(biāo)量值,而是多個(gè)值4.4.1子查詢作表達(dá)式子查詢可由一個(gè)比較運(yùn)

32、算符(=、 =、, ! 或 =)引入。例4.32 查詢何東同學(xué)所在系的系主任和他的電話號碼。USE StudentsGOSELECT director As 系主任,phone As 電話號碼FROM DepWHERE Depid =(SELECT Depid FROM Stu WHERE Stuname=何東)4.4.1子查詢作表達(dá)式子查詢可由一個(gè)比較運(yùn)算符(=、4.4.1子查詢作表達(dá)式若子查詢返回的不是單個(gè)值,而是多個(gè)值,則可在子查詢前加關(guān)鍵字ANY或ALL。WHERE expression comparison_operator ANY | ALL (subquery)ANY表示只要其中

33、一組比較符合條件即可;ALL表示每一組比較都要符合條件。 4.4.1子查詢作表達(dá)式若子查詢返回的不是單個(gè)值,而是多個(gè)值4.4.1子查詢作表達(dá)式例4.33 查詢比A001課程的最低分高的學(xué)生的成績。分析:若比A001課程的任意一個(gè)分?jǐn)?shù)高,就比A001課程的最低分高。USE StudentsGOSELECT StuID,ScoreFROM ScoresWHERE ScoreANY(SELECT Score FROM Scores WHERE CouID=A001)4.4.1子查詢作表達(dá)式例4.33 查詢比A001課程的最低4.4.1子查詢作表達(dá)式例4.34 查詢比A001課程的最高分還高的學(xué)生的成

34、績。分析:必須比A001課程的每一個(gè)分?jǐn)?shù)都高,才能比A001課程的最高分高。USE StudentsGOSELECT StuID,ScoreFROM ScoreWHERE ScoreALL(SELECT Score FROM Score WHERE CouID=A001)4.4.1子查詢作表達(dá)式例4.34 查詢比A001課程的最高4.4.2 子查詢作派生表將子查詢的結(jié)果作為一個(gè)派生表,替代外查詢中所用的表。例4.35 查詢平均分在75分以上的學(xué)生的學(xué)號,姓名,平均分。USE StudentsGOSELECT T.Stuid,T.StuName,AVG(Score)FROM Scores AS

35、S INNER JOIN (SELECT Stuid,StuName FROM Stu) AS T ON S.StuID=T.StuIDGROUP BY S.StuIDHAVING AVG(Score)754.4.2 子查詢作派生表將子查詢的結(jié)果作為一個(gè)派生表,替代4.4.3 相關(guān)子查詢可以用關(guān)聯(lián)數(shù)據(jù),執(zhí)行一個(gè)相關(guān)子查詢。相關(guān)子查詢中子查詢需要執(zhí)行多次,它的執(zhí)行方式是:外部查詢將列值傳遞給內(nèi)部查詢;內(nèi)部查詢經(jīng)過查詢后,將值返回給外部查詢;外部查詢執(zhí)行下一行數(shù)據(jù),并重復(fù)上述過程。4.4.3 相關(guān)子查詢可以用關(guān)聯(lián)數(shù)據(jù),執(zhí)行一個(gè)相關(guān)子查詢。4.4.3 相關(guān)子查詢例4.36 查詢高于本門課程平均分的學(xué)

36、生成績。USE StudentsGOSELECT S1.StuID , S1.ScoreFROM Scores AS S1WHERE Score(SELECT AVG(Score) FROM Scores AS S2 WHERE S1.CouID=S2.CouID )4.4.3 相關(guān)子查詢例4.36 查詢高于本門課程平均分的學(xué)4.4.3 相關(guān)子查詢例4.37 查詢已經(jīng)學(xué)完2門課程以上的同學(xué)的信息。USE StudentsGOSELECT S.StuID,S.StuNameFROM Stu AS SWHERE 2(SELECT COUNT(*) FROM Scores AS C WHERE S.

37、StuID=C.StuID) 4.4.3 相關(guān)子查詢例4.37 查詢已經(jīng)學(xué)完2門課程以上的4.4.4 使用EXISTS的子查詢使用 EXISTS 關(guān)鍵字引入一個(gè)子查詢時(shí),就相當(dāng)于進(jìn)行一次存在測試。外部查詢的 WHERE 子句測試子查詢返回的行是否存在。子查詢實(shí)際上不產(chǎn)生任何數(shù)據(jù);它只返回 TRUE 或 FALSE 值。4.4.4 使用EXISTS的子查詢使用 EXISTS 關(guān)鍵4.4.4 使用EXISTS的子查詢使用 EXISTS 引入的子查詢語法如下:WHERENOTEXISTS(subquery)由 EXISTS 引入的子查詢的選擇列表通常幾乎都是由星號 (*) 組成。由于只是測試是否存在

38、符合子查詢中指定條件的行,所以不必列出列名。 4.4.4 使用EXISTS的子查詢使用 EXISTS 引入4.4.4 使用EXISTS的子查詢例4.38從Stu表中查詢電子信息系的學(xué)生的姓名和電話號碼。USE StudentsGOSELECT Stuname As 姓名,phone As 電話號碼FROM StuWHERE EXISTS (SELECT * FROM Dep WHERE Stu.Depid=Dep.Depid and Depname=電子信息系)4.4.4 使用EXISTS的子查詢例4.38從Stu表中查4.5數(shù)據(jù)的插入、修改及刪除InSert INTO 列名 Values I

39、NSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX) VALUES (張青裁,上海松江,6,ZQCS,0) 插入數(shù)據(jù)行 7-14.5數(shù)據(jù)的插入、修改及刪除InSert INTO 插入數(shù)據(jù)行 7-2注意事項(xiàng)1:每次插入一行數(shù)據(jù),不可能只插入半行或者幾列數(shù)據(jù),因此,插入的數(shù)據(jù)是否有效將按照整行的完整性的要求來檢驗(yàn);INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX) VALUES (張青裁) 代碼錯(cuò)誤插入數(shù)據(jù)行 7-2注意事項(xiàng)1:每次插入一行數(shù)據(jù),不可能只插入插入數(shù)據(jù)行 7-3注意

40、事項(xiàng)2:每個(gè)數(shù)據(jù)值的數(shù)據(jù)類型、精度和小數(shù)位數(shù)必須與相應(yīng)的列匹配;INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX) VALUES (張青裁,上海松江,ZQC,ZQCS, ZG) 代碼錯(cuò)誤插入數(shù)據(jù)行 7-3注意事項(xiàng)2:每個(gè)數(shù)據(jù)值的數(shù)據(jù)類型、精度和小插入數(shù)據(jù)行 7-4注意事項(xiàng)3:不能為標(biāo)識列指定值,因?yàn)樗臄?shù)字是自動(dòng)增長的;INSERT INTO Students (SCode,SName,SAddress,SGrade,SEmail,SSEX) VALUES (32,張青裁,上海松江,6,ZQCS,0) 代碼錯(cuò)誤插入數(shù)據(jù)行 7-4注意

41、事項(xiàng)3:不能為標(biāo)識列指定值,因?yàn)樗臄?shù)插入數(shù)據(jù)行 7-5注意事項(xiàng)4:如果在設(shè)計(jì)表的時(shí)候就指定了某列不允許為空,則必須插入數(shù)據(jù);INSERT INTO Students (SAddress,SGrade,SEmail,SSEX) VALUES (上海松江,6,ZQCS,0) 代碼錯(cuò)誤插入數(shù)據(jù)行 7-5注意事項(xiàng)4:如果在設(shè)計(jì)表的時(shí)候就指定了某列插入數(shù)據(jù)行 7-6注意事項(xiàng)5:插入的數(shù)據(jù)項(xiàng),要求符合檢查約束的要求INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX) VALUES (張青裁,上海松江,6,ZQC,0)代碼錯(cuò)誤插入數(shù)據(jù)行 7-6注

42、意事項(xiàng)5:插入的數(shù)據(jù)項(xiàng),要求符合檢查約束插入數(shù)據(jù)行 7-7注意事項(xiàng)6:具有缺省值的列,可以使用DEFAULT(缺省)關(guān)鍵字來代替插入的數(shù)值INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX) VALUES (張青裁,DEFAULT,6,ZQCS,0)插入數(shù)據(jù)行 7-7注意事項(xiàng)6:具有缺省值的列,可以使用DEF小結(jié)1編寫SQL語句,把你自己的信息插入到學(xué)員信息表中小結(jié)1編寫SQL語句,把你自己的信息插入到學(xué)員信息表中插入多行數(shù)據(jù) 4-1INSERT INTO TongXunLu (姓名,地址,電子郵件) SELECT SName,SAd

43、dress,SEmailFROM StudentsInSert Into (列名)Select From 插入多行數(shù)據(jù) 4-1INSERT INTO TongXun插入多行數(shù)據(jù) 4-2SELECT Students.SName,Students.SAddress,Students.SEmailINTO TongXunLuFROM StudentsSelect (列名)Into From 該語句可以執(zhí)行兩次嗎?插入多行數(shù)據(jù) 4-2SELECT Students.SNam插入多行數(shù)據(jù) 4-3SELECT Students.SName,Students.SAddress,Students.SEmai

44、l,IDENTITY(int,1,1) As StudentIDINTO TongXunLuEXFROM StudentsSelect Into插入多行數(shù)據(jù)的時(shí)候,如何插入新的標(biāo)識列?SELECT IDENTITY(數(shù)據(jù)類型,標(biāo)識種子,標(biāo)識增長量) AS 列名INTO 新表FROM 原始表插入多行數(shù)據(jù) 4-3SELECT Students.SNam插入多行數(shù)據(jù) 4-4INSERT STUDENTS (SName,SGrade,SSex)SELECT 張可,7,1 UNIONSELECT 李揚(yáng),4,0 UNIONSELECT 楊曉,2,0 UNIONSELECT 湯美,3,0 UNIONSELE

45、CT 蘇三東,7,1 UNIONSELECT 王立巖,3,1 UNIONSELECT 張偉,7,1 UNIONSELECT 陳剛,4,1 UNIONSELECT 王娟娟,7,0InSert Into (列名)Select UnionSelect Union插入多行數(shù)據(jù) 4-4INSERT STUDENTS (SN更新數(shù)據(jù)行2-1Update Set FROM ,.n Where UPDATE Students SET SSEX = 0UPDATE Students SET SAddress =北京女子職業(yè)技術(shù)學(xué)校家政班 WHERE SAddress = 北京女子職業(yè)技術(shù)學(xué)校刺繡班UPDATE

46、ScoresSET Scores = Scores + 5WHERE Scores = 95更新數(shù)據(jù)行2-1Update Set 列名 = 將電子信息系學(xué)生的英語成績增加5分。USE StudentsGOUPDATE ScoresSET Score=Score+5 FROM Dep AS D INNER JOIN Stu AS SON S.DepID=D.DepIDINNER JOIN Scores AS O ON S.StuID=O.StuID INNER JOIN Course AS C ON O.CouID=C.CouIDWHERE DepName=電子信息系A(chǔ)ND CouName=高等數(shù)學(xué)更新數(shù)據(jù)行2-2將電子信息系學(xué)生的英語成績增加5分。更新數(shù)據(jù)行2-2小結(jié)2編寫SQL語句,更新學(xué)員信息表中全部女同學(xué)的地址為“北京奧運(yùn)村”小結(jié)2編寫SQL語句,更新學(xué)員信息表中全部女同學(xué)的地址為“數(shù)據(jù)的刪除4-1DELETE table_or_view FROM table_sources WHER

溫馨提示

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

評論

0/150

提交評論