版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1Visual FoxPro 程序設(shè)計(jì)結(jié)構(gòu)化查詢語言SQL2教學(xué)目標(biāo)了解SQL語言的四大功能了解SQL語言的主要特點(diǎn)掌握SQL的數(shù)據(jù)查詢實(shí)現(xiàn)方法掌握SQL的數(shù)據(jù)更新功能學(xué)會(huì)使用查詢?cè)O(shè)計(jì)器設(shè)計(jì)查詢3重點(diǎn)及難點(diǎn)SQL的數(shù)據(jù)查詢實(shí)現(xiàn)方法 (難點(diǎn))SQL的數(shù)據(jù)更新功能學(xué)會(huì)使用查詢?cè)O(shè)計(jì)器設(shè)計(jì)查詢4 SQL SQL是一種非過程化的一體化語言,包括是一種非過程化的一體化語言,包括= 數(shù)據(jù)定義數(shù)據(jù)定義創(chuàng)建、修改、刪除數(shù)據(jù)庫(kù)對(duì)象創(chuàng)建、修改、刪除數(shù)據(jù)庫(kù)對(duì)象= 數(shù)據(jù)查詢數(shù)據(jù)查詢查詢表中數(shù)據(jù)查詢表中數(shù)據(jù)= 數(shù)據(jù)操縱數(shù)據(jù)操縱向表中插入、修改、刪除數(shù)據(jù)向表中插入、修改、刪除數(shù)據(jù)= 數(shù)據(jù)控制數(shù)據(jù)控制控制用戶訪問數(shù)據(jù)庫(kù)的權(quán)限
2、控制用戶訪問數(shù)據(jù)庫(kù)的權(quán)限 四大功能,可以完成數(shù)據(jù)庫(kù)活動(dòng)中的全部工作。四大功能,可以完成數(shù)據(jù)庫(kù)活動(dòng)中的全部工作。SQLSQL語言的核心是語言的核心是數(shù)據(jù)查詢數(shù)據(jù)查詢。 要點(diǎn)要點(diǎn)1 1:數(shù)據(jù)查詢:數(shù)據(jù)查詢 要點(diǎn)要點(diǎn)2 2:查詢?cè)O(shè)計(jì)器的使用:查詢?cè)O(shè)計(jì)器的使用 要點(diǎn)要點(diǎn)3 3:SQLSQL的其它功能的其它功能概述概述5SQL語言的主要特點(diǎn):語言的主要特點(diǎn):1、SQL是非過程化語言。是非過程化語言。 只需要提出只需要提出“做什么做什么”不必考慮不必考慮“怎么做怎么做”。2、通用語言、通用語言 關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語言。關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語言。3、簡(jiǎn)潔易用、簡(jiǎn)潔易用4、操作面向集合、操作面向集合 無論查詢的對(duì)象
3、還是查詢的結(jié)果都是表(若干記錄無論查詢的對(duì)象還是查詢的結(jié)果都是表(若干記錄的集合),概念單一。的集合),概念單一。5、兩種使用方式、兩種使用方式 交互式和嵌入式。交互式和嵌入式。6查詢功能查詢功能SQL查詢又稱為查詢又稱為SELECT命令,基本形式為:命令,基本形式為: SELECT FROM WHERE 選擇選擇 自自 滿足滿足 SQL查詢按以下順序講述:查詢按以下順序講述: 1、簡(jiǎn)單查詢(單表投影)、簡(jiǎn)單查詢(單表投影) 2、簡(jiǎn)單的條件查詢、簡(jiǎn)單的條件查詢 3、計(jì)算查詢、計(jì)算查詢 4、分組查詢、分組查詢 5、連接查詢、連接查詢 6、嵌套查詢、嵌套查詢 7、查詢結(jié)果的輸出、查詢結(jié)果的輸出71
4、、簡(jiǎn)單查詢(單表投影)、簡(jiǎn)單查詢(單表投影)1)基本格式:)基本格式: SELECT FROM 選擇選擇 自自 例:查詢學(xué)生基本情況:例:查詢學(xué)生基本情況: SELE 學(xué)號(hào),姓名,入??偡郑詣e學(xué)號(hào),姓名,入??偡?,性別 FROM 學(xué)生學(xué)生特別地:特別地: SELE * FROM 教師教師 查詢教師信息,輸出所有字段,無投影。查詢教師信息,輸出所有字段,無投影。82)輸出結(jié)果的排序)輸出結(jié)果的排序ORDER BY 子句子句基本格式:基本格式:SELECTFROM ORDER BY 選擇選擇 自自 排序依據(jù)排序依據(jù) 例:查詢學(xué)生基本情況,按入??偡稚蚺帕校豪翰樵儗W(xué)生基本情況,按入校總分升序排
5、列: SELE 學(xué)號(hào),姓名,入??偡?,性別學(xué)號(hào),姓名,入??偡郑詣e ; FROM 學(xué)生學(xué)生 ORDER BY 入校總分入??偡?3)指定輸出列標(biāo)題)指定輸出列標(biāo)題AS 子句子句 SELECT AS , AS , FROM 例:例: SELE 學(xué)號(hào)學(xué)號(hào) AS 學(xué)生號(hào),姓名,入??偡謱W(xué)生號(hào),姓名,入校總分 AS 成績(jī)成績(jī)94)取消重復(fù)記錄)取消重復(fù)記錄DISTINCT 子句子句基本格式:基本格式:SELECT DISTINCT FROM 選擇選擇 唯一值唯一值 自自 例:查詢選修了課程的學(xué)生情況:例:查詢選修了課程的學(xué)生情況: SELE DISTINCT 學(xué)號(hào)學(xué)號(hào) FROM 選課選課 SELEC
6、T DISTINCT 系別系別 FROM 學(xué)生學(xué)生10小結(jié)與練習(xí)小結(jié)與練習(xí)1簡(jiǎn)單查詢簡(jiǎn)單查詢SELECT語句的使用:語句的使用:1、SELECT命令可以不打開表。命令可以不打開表。2、首先確定字段;、首先確定字段;SELE 字段表字段表 AS 標(biāo)題標(biāo)題3、確定源表;、確定源表; FROM 4、有無排序、去重復(fù)記錄要求、有無排序、去重復(fù)記錄要求 :DIST ORDER BY 練習(xí)練習(xí) 1、檢索課程情況;、檢索課程情況; 2、查詢上課的教師的教師號(hào);、查詢上課的教師的教師號(hào); 3、檢索學(xué)生的學(xué)號(hào),姓名,性別,年齡,、檢索學(xué)生的學(xué)號(hào),姓名,性別,年齡, 按年齡排序。按年齡排序。112、條件查詢(單表
7、選擇)、條件查詢(單表選擇)WHERE子句子句基本格式:基本格式:SELECT FROM WHERE 選擇選擇 自自 滿足條件的記錄滿足條件的記錄條件的構(gòu)成可以是:條件的構(gòu)成可以是: 單條件關(guān)系表達(dá)式單條件關(guān)系表達(dá)式 復(fù)合條件邏輯表達(dá)式(復(fù)合條件邏輯表達(dá)式(關(guān)系表達(dá)式關(guān)系表達(dá)式AND、OR、NOT) 范圍謂詞范圍謂詞IN、BETWEENAND 匹配謂詞匹配謂詞LIKE121)單條件)單條件 關(guān)系表達(dá)式關(guān)系表達(dá)式例:查詢女學(xué)生基本情況:例:查詢女學(xué)生基本情況: SELE 學(xué)號(hào),姓名,入??偡?,性別學(xué)號(hào),姓名,入校總分,性別 FROM 學(xué)生學(xué)生 ; WHERE 性別性別女女例:查詢?nèi)胄?偡指哂诶?/p>
8、查詢?nèi)胄?偡指哂?5分的學(xué)生情況:分的學(xué)生情況: SELE * FROM 學(xué)生學(xué)生 WHERE 入??偡秩胄?偡?852)復(fù)合條件)復(fù)合條件 邏輯表達(dá)式邏輯表達(dá)式例:查詢?nèi)胄?偡指哂诶翰樵內(nèi)胄?偡指哂?5分的女學(xué)生基本情況:分的女學(xué)生基本情況: SELE 學(xué)號(hào),姓名,入??偡郑詣e學(xué)號(hào),姓名,入??偡?,性別 FROM 學(xué)生學(xué)生 ; WHERE 性別性別女女 AND 入??偡秩胄?偡?85133)范圍謂詞)范圍謂詞 IN、BETWEENAND (1) IN 與與 NOT IN IN (值(值1,值,值2,): 落在該集合內(nèi)的記錄;落在該集合內(nèi)的記錄;NOT IN(值(值1,值,值2,): 不在
9、該集合內(nèi)的記錄;不在該集合內(nèi)的記錄;例:查詢選修了例:查詢選修了C120、C140的學(xué)生成績(jī):的學(xué)生成績(jī): SELE 學(xué)號(hào),課程號(hào),成績(jī)學(xué)號(hào),課程號(hào),成績(jī) FROM 選課選課 ; WHERE 課程號(hào)課程號(hào) IN (C120,C140)例:查詢未選修例:查詢未選修C110和和C130的學(xué)生成績(jī):的學(xué)生成績(jī): SELE 學(xué)號(hào),課程號(hào),成績(jī)學(xué)號(hào),課程號(hào),成績(jī) FROM 選課選課 ; WHERE 課程號(hào)課程號(hào) NOT IN (C110,C130)14(2) BETWEENAND 字段字段 BETWEEN 值值1 AND 值值2 值在值值在值1、值、值2之間的記錄;之間的記錄;等價(jià)于:等價(jià)于: 字段字段
10、=值值1 AND 字段字段=值值2 例:查詢?nèi)胄?偡衷诶翰樵內(nèi)胄?偡衷?50570之間的學(xué)生情況:之間的學(xué)生情況: SELE * FROM 學(xué)生學(xué)生 ; WHERE 入??偡秩胄?偡?BETWEEN 550 AND 570154)匹配謂詞)匹配謂詞 LIKE 字符字段字符字段 LIKE 字符串常量字符串常量常量中可用通配符常量中可用通配符: %: 任意長(zhǎng)度字符串,類似文件名中的任意長(zhǎng)度字符串,類似文件名中的 * _ : 任意一個(gè)字符(任意一個(gè)字符(VFP6.0中)中)例:查詢姓為例:查詢姓為張張的學(xué)生情況:的學(xué)生情況: SELE * FROM 學(xué)生學(xué)生 WHERE 姓名姓名 LIKE 張張例
11、:查詢學(xué)號(hào)前例:查詢學(xué)號(hào)前7位為位為s020110的學(xué)生情況:的學(xué)生情況: SELE * FROM 學(xué)生學(xué)生 WHERE 學(xué)號(hào)學(xué)號(hào) LIKE s020110_例:查詢姓名第三字為例:查詢姓名第三字為光光的學(xué)生情況:的學(xué)生情況: SELE * FROM 學(xué)生學(xué)生 WHERE 姓名姓名 LIKE _ _光光16小結(jié)與練習(xí)小結(jié)與練習(xí)2條件查詢條件查詢條件查詢的使用:條件查詢的使用:1、首先確定字段、源表:、首先確定字段、源表:SELE 字段表字段表 FROM 2、確定有幾個(gè)條件,條件間的邏輯關(guān)系(、確定有幾個(gè)條件,條件間的邏輯關(guān)系(AND OR !)3、每個(gè)條件應(yīng)選擇哪種方式表達(dá):、每個(gè)條件應(yīng)選擇哪
12、種方式表達(dá): 關(guān)系?(關(guān)系?(、=、=、等)、等) 范圍?(某字段范圍?(某字段 IN 、 某字段某字段 BETWEEN 值值1 AND 值值2) 匹配?(字符字段匹配?(字符字段 LIKE 某字符串常量形式)某字符串常量形式) 練習(xí)練習(xí): 1、查詢、查詢CS系的學(xué)生情況;系的學(xué)生情況; 2、檢索年齡在、檢索年齡在18至至20之間的學(xué)生情況;之間的學(xué)生情況; 3、檢索姓、檢索姓孫孫的教師情況。的教師情況。173、計(jì)算查詢(單表統(tǒng)計(jì))、計(jì)算查詢(單表統(tǒng)計(jì))統(tǒng)計(jì)函數(shù)統(tǒng)計(jì)函數(shù) 格式格式 SELECT FROM WHERE 統(tǒng)計(jì)函數(shù)有:統(tǒng)計(jì)函數(shù)有: SUM()求和求和 AVG()求平均求平均 MAX(
13、)最大值最大值 MIN()最小值最小值 COUNT()統(tǒng)計(jì)記錄條數(shù)統(tǒng)計(jì)記錄條數(shù)18例:查詢例:查詢 選修選修c110的最高、最低、平均、的最高、最低、平均、分?jǐn)?shù)差:分?jǐn)?shù)差:SELECT 課程號(hào)課程號(hào),MAX(成績(jī)成績(jī)) AS 最高分最高分,MIN(成績(jī)成績(jī)) AS 最低分最低分, ; AVG(成績(jī)成績(jī)) AS 平均平均, MAX(成績(jī)成績(jī))-MIN(成績(jī)成績(jī)) AS 分?jǐn)?shù)差分?jǐn)?shù)差 ; FROM 選課選課; WHERE 課程號(hào)課程號(hào)=c110注意注意SELECT 語句的書寫格式。語句的書寫格式。19例:統(tǒng)計(jì)選修課的門數(shù)。例:統(tǒng)計(jì)選修課的門數(shù)。 SELECT COUNT(DIST 課程號(hào)課程號(hào))
14、AS 選修課門數(shù)選修課門數(shù) ; FROM 選課選課例:統(tǒng)計(jì)教授、副教授的人數(shù)。例:統(tǒng)計(jì)教授、副教授的人數(shù)。 SELECT COUNT(*) AS 高職人數(shù)高職人數(shù) ; FROM 教師教師 WHERE 職稱職稱 IN (教授教授,副教授副教授)20小結(jié)與練習(xí)小結(jié)與練習(xí)3計(jì)算查詢計(jì)算查詢計(jì)算查詢的使用:計(jì)算查詢的使用:1、首先確定參與運(yùn)算的字段、進(jìn)行運(yùn)算的函數(shù),輸出列、首先確定參與運(yùn)算的字段、進(jìn)行運(yùn)算的函數(shù),輸出列標(biāo)題,以及源表;標(biāo)題,以及源表; SELE 函數(shù)列函數(shù)列 AS 列標(biāo)題,列標(biāo)題, FROM 2、確定條件、確定條件 WHERE 子句子句3、按標(biāo)準(zhǔn)的格式書寫、按標(biāo)準(zhǔn)的格式書寫SELECT
15、語句,除非很短。語句,除非很短。 SELECT 、 FROM 、 WHERE 各一行,用分號(hào)分隔。各一行,用分號(hào)分隔。練習(xí)練習(xí): 1、查詢男同學(xué)的入??偡值淖罡摺⒆畹?、平均;、查詢男同學(xué)的入??偡值淖罡摺⒆畹?、平均; 2、統(tǒng)計(jì)上課教師人數(shù);、統(tǒng)計(jì)上課教師人數(shù); 3、統(tǒng)計(jì)姓、統(tǒng)計(jì)姓王王的學(xué)生人數(shù)。的學(xué)生人數(shù)。214、分組查詢、分組查詢GROUP BY 與與HAVING子句子句 GROUP BY對(duì)屬性列進(jìn)行分組,相同值為一組對(duì)屬性列進(jìn)行分組,相同值為一組; HAVING對(duì)組內(nèi)記錄進(jìn)行篩選;對(duì)組內(nèi)記錄進(jìn)行篩選;例:統(tǒng)計(jì)每位教師的授課門數(shù)。例:統(tǒng)計(jì)每位教師的授課門數(shù)。 SELE 教師號(hào),教師號(hào),COU
16、NT(*) AS 任課門數(shù)任課門數(shù) ; FROM 授課授課 ; GROUP BY 教師號(hào)教師號(hào) 例:查詢選課兩門以上的學(xué)生人數(shù)及選課數(shù)。例:查詢選課兩門以上的學(xué)生人數(shù)及選課數(shù)。 SELE 學(xué)號(hào)學(xué)號(hào) AS 選兩門以上選兩門以上 ,COUNT(*) AS 門數(shù)門數(shù) ; FROM 選課選課 ; GROUP BY 學(xué)號(hào)學(xué)號(hào) ; HAVING COUNT(*) = 2 22當(dāng)既有當(dāng)既有WHERE,又有,又有GROUP BY與與HAVING 時(shí),執(zhí)時(shí),執(zhí)行順序是:行順序是:WHERE,GROUP BY,HAVING。WHERE 作用對(duì)象:對(duì)基本表或視圖中記錄進(jìn)行篩選;作用對(duì)象:對(duì)基本表或視圖中記錄進(jìn)行篩選
17、;HAVING作用對(duì)象:作用對(duì)象:GROUP BY 子句指定的分組,在子句指定的分組,在分組中篩選;分組中篩選;例:查詢例:查詢C120、C140、C150、C160中中選課成績(jī)選課成績(jī)85分以上的課程號(hào)、平均分。分以上的課程號(hào)、平均分。 SELE 課程號(hào)課程號(hào) ,AVG(成績(jī)成績(jī)) AS 平均分平均分 ; FROM 選課選課 ; WHERE 課程號(hào)課程號(hào) IN (c120,c140,c150,c160) ; GROUP BY 課程號(hào)課程號(hào) ; HAVING AVG(成績(jī)成績(jī)) = 8523單表查詢綜合例子單表查詢綜合例子例:查詢選課三門以上,各門課均及格的學(xué)號(hào)及平均例:查詢選課三門以上,各門
18、課均及格的學(xué)號(hào)及平均成績(jī),結(jié)果按學(xué)號(hào)降序排列。成績(jī),結(jié)果按學(xué)號(hào)降序排列。SELE 學(xué)號(hào)學(xué)號(hào) ,AVG(成績(jī)成績(jī)) AS 平均分平均分 ; FROM 選課選課 ; WHERE 成績(jī)成績(jī)=60 ; GROUP BY 學(xué)號(hào)學(xué)號(hào) ; HAVING COUNT(*) = 3 ; ORDER BY 學(xué)號(hào)學(xué)號(hào) DESC24小結(jié)與練習(xí)小結(jié)與練習(xí)4分組查詢分組查詢分組查詢的使用:分組查詢的使用:1、確定基表、輸出字段及標(biāo)題,是否排序;、確定基表、輸出字段及標(biāo)題,是否排序; SELE 列列 AS 列標(biāo)題,列標(biāo)題, FROM ORDER BY 2、確定對(duì)基表的篩選條件、確定對(duì)基表的篩選條件 WHERE 子句子句3、
19、是否有分組,分組是否有篩選條件、是否有分組,分組是否有篩選條件 GROUP BY與與HAVING子句子句練習(xí)練習(xí): 1、查詢學(xué)生選課數(shù),結(jié)果按學(xué)號(hào)排列;、查詢學(xué)生選課數(shù),結(jié)果按學(xué)號(hào)排列; 2、查詢上課兩門及以上的教師的教師號(hào)及上課門數(shù);、查詢上課兩門及以上的教師的教師號(hào)及上課門數(shù); 3、查詢至少有兩名學(xué)生選修的課程的課程號(hào)、選課人、查詢至少有兩名學(xué)生選修的課程的課程號(hào)、選課人數(shù)及最高分、最低分、平均成績(jī)。數(shù)及最高分、最低分、平均成績(jī)。255、連接查詢、連接查詢 如同關(guān)聯(lián)一樣,可以在如同關(guān)聯(lián)一樣,可以在SELECT查詢中通過聯(lián)接查詢中通過聯(lián)接關(guān)鍵字建立聯(lián)接條件,由此查詢多表中相關(guān)數(shù)據(jù)。關(guān)鍵字建立
20、聯(lián)接條件,由此查詢多表中相關(guān)數(shù)據(jù)。連接查詢的方法有兩種:連接查詢的方法有兩種:1、通過、通過WHERE 子句建立聯(lián)接;子句建立聯(lián)接;2、通過聯(lián)接關(guān)鍵字、通過聯(lián)接關(guān)鍵字JOIN建立聯(lián)接。建立聯(lián)接。1、通過、通過WHERE子句建立聯(lián)接子句建立聯(lián)接例:例: 查詢陳靜老師授課的課程號(hào)。查詢陳靜老師授課的課程號(hào)。 SELE 教師教師.教師號(hào)教師號(hào),姓名姓名,課程號(hào)課程號(hào) FROM 教師教師,授課授課 ; WHERE 教師教師.教師號(hào)教師號(hào)=授課授課.教師號(hào)教師號(hào) AND 教師教師.姓名姓名=陳陳 靜靜1) 按教師號(hào)相等聯(lián)接兩個(gè)表;按教師號(hào)相等聯(lián)接兩個(gè)表;2) 選擇選擇 姓名為姓名為陳靜陳靜 的行;的行;
21、3) 投影:投影: 教師號(hào)、姓名、課程號(hào);教師號(hào)、姓名、課程號(hào);261、通過、通過WHERE子句建立聯(lián)接子句建立聯(lián)接例:例: 查詢選課成績(jī)。查詢選課成績(jī)。 SELE 學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào),姓名姓名,課程名課程名,成績(jī)成績(jī) ; FROM 學(xué)生學(xué)生,選課選課,課程課程 ; WHERE 學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào)=選課選課.學(xué)號(hào)學(xué)號(hào) AND 選課選課.課程號(hào)課程號(hào)=課程課程.課程號(hào)課程號(hào) ; ORDER BY 學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào)這是三個(gè)表的聯(lián)接,在這是三個(gè)表的聯(lián)接,在WHERE子句中指定聯(lián)接條件。子句中指定聯(lián)接條件。1) 按教師號(hào)相等和課程號(hào)相等聯(lián)接三個(gè)表;按教師號(hào)相等和課程號(hào)相等聯(lián)接三個(gè)表;2) 選擇選修課
22、中有記錄的學(xué)生、選課、課程記錄行;選擇選修課中有記錄的學(xué)生、選課、課程記錄行;3) 投影:投影: 學(xué)號(hào)、姓名、課程號(hào)、成績(jī);學(xué)號(hào)、姓名、課程號(hào)、成績(jī);272、 通過聯(lián)接關(guān)鍵字通過聯(lián)接關(guān)鍵字JOIN建立聯(lián)接建立聯(lián)接問題的提出問題的提出 上例:上例: 查詢選課成績(jī)。查詢選課成績(jī)。 SELE 學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào),姓名姓名,課程名課程名,成績(jī)成績(jī) ; FROM 學(xué)生學(xué)生,選課選課,課程課程 ; WHERE 學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào)=選課選課.學(xué)號(hào)學(xué)號(hào) AND 選課選課.課程號(hào)課程號(hào)=課程課程.課程課程號(hào)號(hào) ; ORDER BY 學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào)問題問題: 沒有選課的同學(xué)沒有選課的同學(xué),將不會(huì)出現(xiàn)將不會(huì)出現(xiàn)
23、,若希望查詢所有同若希望查詢所有同學(xué)的選課情況學(xué)的選課情況,則必須使用外連接則必須使用外連接. (LEFT JOIN 、RIGHT JOIN)28聯(lián)接關(guān)鍵字有如下幾個(gè):聯(lián)接關(guān)鍵字有如下幾個(gè):INNER JOIN :等價(jià)于等價(jià)于JOIN,內(nèi)聯(lián)接,只包含兩表中,內(nèi)聯(lián)接,只包含兩表中滿足條件的記錄;滿足條件的記錄;LEFT (OUTER)JOIN :左聯(lián)接,包含左表中全部和:左聯(lián)接,包含左表中全部和右表中與之匹配的記錄;右表中與之匹配的記錄;RIGHT (OUTER) JOIN : 右聯(lián)接,包含右表中全部和右聯(lián)接,包含右表中全部和左表中與之匹配的記錄;左表中與之匹配的記錄;FULL (OUTER)
24、JOIN :全連接,包含左右兩表中所有全連接,包含左右兩表中所有記錄。記錄。29例:例: 查詢陳靜老師授課的課程號(hào)。查詢陳靜老師授課的課程號(hào)。 SELE 教師教師.教師號(hào)教師號(hào),姓名姓名,課程號(hào)課程號(hào) FROM 教師教師,授課授課 ; WHERE 教師教師.教師號(hào)教師號(hào)=授課授課.教師號(hào)教師號(hào) AND 教師教師.姓名姓名=陳陳 靜靜使用聯(lián)接關(guān)鍵字,語句如下:使用聯(lián)接關(guān)鍵字,語句如下:SELE 教師教師.教師號(hào)教師號(hào),姓名姓名,課程號(hào)課程號(hào) FROM 教師教師 JOIN 授課授課 ; ON 教師教師.教師號(hào)教師號(hào)=授課授課.教師號(hào)教師號(hào) WHERE 教師教師.姓名姓名=陳陳 靜靜或:或:SELE
25、 教師教師.教師號(hào)教師號(hào),姓名姓名,課程號(hào)課程號(hào) FROM 教師教師 JOIN 授課授課 ; ON 教師教師.教師號(hào)教師號(hào)=授課授課.教師號(hào)教師號(hào) AND 教師教師.姓名姓名=陳陳 靜靜后者的效率高于前者,連接時(shí)即篩選出了后者的效率高于前者,連接時(shí)即篩選出了“陳靜陳靜”行。行。30例:查詢選課成績(jī)。例:查詢選課成績(jī)。 SELE 學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào),姓名姓名,課程名課程名,成績(jī)成績(jī) ; FROM 學(xué)生學(xué)生,選課選課,課程課程 ; WHERE 學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào)=選課選課.學(xué)號(hào)學(xué)號(hào) AND 選課選課.課程號(hào)課程號(hào)=課程課程.課程課程號(hào)號(hào) ; ORDER BY 學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào)使用聯(lián)接關(guān)鍵字,語句
26、如下:使用聯(lián)接關(guān)鍵字,語句如下:SELE 姓名姓名,課程名課程名,成績(jī)成績(jī) ; FROM 學(xué)生學(xué)生 LEFT JOIN 選課選課 ON 學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào)=選課選課.學(xué)號(hào)學(xué)號(hào) ; LEFT JOIN 課程課程 ON 選課選課.課程號(hào)課程號(hào)=課程課程.課程號(hào)課程號(hào) ; ORDER BY 學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào)可以列出所有學(xué)生的記錄,而不管是否選課??梢粤谐鏊袑W(xué)生的記錄,而不管是否選課。31 自連接自連接 一個(gè)表自身與自身連接,此時(shí),用一個(gè)表自身與自身連接,此時(shí),用AS子句,子句,將同一個(gè)表指定為兩個(gè)不同的別名,其余與兩將同一個(gè)表指定為兩個(gè)不同的別名,其余與兩表連接無異。表連接無異。例:查詢所有比陳
27、靜工資高的教師姓名、職稱。例:查詢所有比陳靜工資高的教師姓名、職稱。工資。工資。 SELE X.姓名姓名,X.工資工資,Y.工資工資 AS 陳靜工資陳靜工資 ; FROM 教師教師 AS X , 教師教師 AS Y ; WHERE X.工資工資=Y.工資工資 AND Y.姓名姓名=陳陳 靜靜32聯(lián)接查詢的使用:聯(lián)接查詢的使用: 小結(jié)小結(jié)1、確定輸出字段及標(biāo)題,以及基表、確定輸出字段及標(biāo)題,以及基表 ; SELE 列列 AS 列標(biāo)題,列標(biāo)題, FROM 2、確定基表間的關(guān)鍵字與連接條件,或用、確定基表間的關(guān)鍵字與連接條件,或用WHERE子句,子句,或用聯(lián)接關(guān)鍵字,當(dāng)使用聯(lián)接關(guān)鍵字時(shí),要確定以哪或
28、用聯(lián)接關(guān)鍵字,當(dāng)使用聯(lián)接關(guān)鍵字時(shí),要確定以哪個(gè)表為主,從而確定連接類型。(個(gè)表為主,從而確定連接類型。(INNER、LEFT、RIGHT) SELE 列列 AS 列標(biāo)題,列標(biāo)題, FROM WHERE SELE 列列 AS 列標(biāo)題,列標(biāo)題, ; FROM JOIN ON 連連接條件接條件3、是否有分組,是否有篩選條件,是否排序、是否有分組,是否有篩選條件,是否排序 GROUP BY與與HAVING子句、子句、 ORDER BY 子句子句33小結(jié)與練習(xí)小結(jié)與練習(xí)5連接查詢連接查詢分組查詢的使用:分組查詢的使用:練習(xí)練習(xí)1、查詢、查詢“張三張三”選修的課程的課程號(hào)及成績(jī);選修的課程的課程號(hào)及成績(jī);
29、 2、確定教授、確定教授“計(jì)算機(jī)網(wǎng)絡(luò)計(jì)算機(jī)網(wǎng)絡(luò)”的教師的姓名、職稱;的教師的姓名、職稱; 3、三表聯(lián)接查詢,查詢所有學(xué)生的選課情況;、三表聯(lián)接查詢,查詢所有學(xué)生的選課情況;4、三表聯(lián)接查詢,查詢所有選課學(xué)生的情況;、三表聯(lián)接查詢,查詢所有選課學(xué)生的情況; 346、嵌套查詢、嵌套查詢 嵌套查詢就是嵌套查詢就是SQL SELECT語句中包含語句中包含SQL SELECT語句,語句,嵌套查詢時(shí),查詢結(jié)果只能來自一個(gè)表,但查詢條件嵌套查詢時(shí),查詢結(jié)果只能來自一個(gè)表,但查詢條件往往來自多個(gè)表。往往來自多個(gè)表。 此時(shí),稱外層此時(shí),稱外層SELECT 語句為父查詢,內(nèi)部嵌套語句為父查詢,內(nèi)部嵌套SELECT
30、語句為子查詢。語句為子查詢。例:查詢所有比陳靜工資高的教師姓名、職稱。工資。例:查詢所有比陳靜工資高的教師姓名、職稱。工資。 SELE 姓名姓名,職稱職稱 FROM 教師教師 ; WHERE 工資工資= ; (SELE 工資工資 FROM 教師教師 WHERE 姓名姓名=陳陳 靜靜) SELE 姓名姓名,職稱職稱 FROM 教師教師 ; WHERE 姓名姓名!=陳陳 靜靜 AND 工資工資= ; (SELE 工資工資 FROM 教師教師 WHERE 姓名姓名=陳陳 靜靜)比較它們的不同。比較它們的不同。35當(dāng)子查詢返回當(dāng)子查詢返回一個(gè)(一行一列)一個(gè)(一行一列)結(jié)果時(shí),一般用結(jié)果時(shí),一般用、=
31、、=、!=等,當(dāng)子查詢返回為等,當(dāng)子查詢返回為多個(gè)(多行一列)多個(gè)(多行一列)(集合)時(shí),可以使用(集合)時(shí),可以使用ANY、IN、ALL、EXIST等等謂詞進(jìn)行查詢。謂詞進(jìn)行查詢。例:查詢所有授課課程號(hào)為例:查詢所有授課課程號(hào)為c140的教師姓名、職稱。的教師姓名、職稱。 SELE 姓名姓名,職稱職稱 FROM 教師教師 ; WHERE 教師號(hào)教師號(hào)=ANY; (SELE 教師號(hào)教師號(hào) FROM 授課授課 ; WHERE 課程號(hào)課程號(hào)= c140) SELE 姓名姓名,職稱職稱 FROM 教師教師 ; WHERE 教師號(hào)教師號(hào) IN; (SELE 教師號(hào)教師號(hào) FROM 授課授課 ; WHE
32、RE 課程號(hào)課程號(hào)= c140)36嵌套查詢的使用:嵌套查詢的使用:以以“查詢選修了查詢選修了c140的同學(xué)學(xué)號(hào)、姓名的同學(xué)學(xué)號(hào)、姓名”為例:為例:1、確定輸出字段及其基表(父查詢只有一個(gè)基表);、確定輸出字段及其基表(父查詢只有一個(gè)基表); SELE 學(xué)號(hào),姓名學(xué)號(hào),姓名 FROM 學(xué)生學(xué)生2、確定條件來自于哪個(gè)表,與當(dāng)前表的關(guān)聯(lián)關(guān)鍵字;、確定條件來自于哪個(gè)表,與當(dāng)前表的關(guān)聯(lián)關(guān)鍵字; 課程號(hào)(課程號(hào)(c140):含有課程號(hào)的表有多個(gè),但與父表具有):含有課程號(hào)的表有多個(gè),但與父表具有共同關(guān)鍵字的只有選課表,聯(lián)系字段為共同關(guān)鍵字的只有選課表,聯(lián)系字段為“學(xué)號(hào)學(xué)號(hào)”。3、按關(guān)聯(lián)關(guān)鍵字設(shè)計(jì)子查詢;
33、、按關(guān)聯(lián)關(guān)鍵字設(shè)計(jì)子查詢; (父表中)(父表中) WHERE 學(xué)號(hào)學(xué)號(hào) (或(或 學(xué)號(hào)學(xué)號(hào) IN ) 子查詢:子查詢: 選取選修選取選修 課程號(hào)課程號(hào)c140的學(xué)生學(xué)號(hào)的學(xué)生學(xué)號(hào) SELE 學(xué)號(hào)學(xué)號(hào) FROM 選課選課 WHERE 課程號(hào)課程號(hào)c1404、將父查詢、子查詢聯(lián)接,得到嵌套查詢;、將父查詢、子查詢聯(lián)接,得到嵌套查詢; SELE 學(xué)號(hào),姓名學(xué)號(hào),姓名 FROM 學(xué)生學(xué)生 ; WHERE 學(xué)號(hào)學(xué)號(hào) IN ; ( SELE 學(xué)號(hào)學(xué)號(hào) FROM 選課選課 WHERE 課程號(hào)課程號(hào)c140 )377、查詢結(jié)果的輸出、查詢結(jié)果的輸出 在在SELECT語句中使用輸出子句,可以定向結(jié)果語句中使用輸
34、出子句,可以定向結(jié)果的輸出。的輸出。INTO TABLE 結(jié)果輸出到一個(gè)新的數(shù)據(jù)表;結(jié)果輸出到一個(gè)新的數(shù)據(jù)表;INTO CURSOR 結(jié)果輸出到臨時(shí)表,退結(jié)果輸出到臨時(shí)表,退出出VF時(shí)消失;時(shí)消失;TO FILE 結(jié)果保存為文本文件結(jié)果保存為文本文件 .TXT;TO PRINT 到打印機(jī);到打印機(jī);TO SCREEN 到屏幕。到屏幕。38查詢?cè)O(shè)計(jì)器查詢?cè)O(shè)計(jì)器 VFP提供了查詢?cè)O(shè)計(jì)器,可以方便地生成提供了查詢?cè)O(shè)計(jì)器,可以方便地生成SQL語語句,并保存為句,并保存為.QPR查詢文件,該文件中只有查詢定義,查詢文件,該文件中只有查詢定義,沒有數(shù)據(jù)。沒有數(shù)據(jù)。進(jìn)入查詢?cè)O(shè)計(jì)器進(jìn)入查詢?cè)O(shè)計(jì)器 1)”新建新
35、建”菜單或按鈕菜單或按鈕新建查詢;新建查詢; 2) CREATE QUERY命令窗口中新建查詢;命令窗口中新建查詢; 3) “打開打開”菜單或按鈕菜單或按鈕打開并修改、運(yùn)行已有查打開并修改、運(yùn)行已有查詢;詢; 4) MODIFY QUERY命令窗口中打開查詢;命令窗口中打開查詢;進(jìn)入查詢?cè)O(shè)計(jì)器后,有兩個(gè)菜單:進(jìn)入查詢?cè)O(shè)計(jì)器后,有兩個(gè)菜單: 1) 新增系統(tǒng)菜單新增系統(tǒng)菜單“查詢查詢” 2) 在查詢?cè)O(shè)計(jì)器中的右鍵菜單在查詢?cè)O(shè)計(jì)器中的右鍵菜單用得特別多的是右鍵菜單。用得特別多的是右鍵菜單。39查詢?cè)O(shè)計(jì)器的使用步驟:查詢?cè)O(shè)計(jì)器的使用步驟:1、添加表或視圖;(、添加表或視圖;(FROM 子句)子句) 2
36、、添加查詢輸出字段;(、添加查詢輸出字段;(SELE 后字段表)后字段表) 3、若是多表且無關(guān)系,則添加關(guān)系;(、若是多表且無關(guān)系,則添加關(guān)系;(JOIN 類型、類型、ON 關(guān)鍵字)關(guān)鍵字) 4、輸入篩選條件(、輸入篩選條件(WHERE 子句)子句) 5、設(shè)置排序依據(jù)(、設(shè)置排序依據(jù)(ORDER BY 子句)子句) 6、設(shè)置分組(、設(shè)置分組(GROUP BY 和和 HAVING) 7、指定查詢輸出去向、指定查詢輸出去向 (INTO 子句)子句) 8、運(yùn)行、查看、運(yùn)行、查看SQL語句語句 9、保存退出。、保存退出。例:查詢選課學(xué)生的情況。保存為學(xué)生選課查詢例:查詢選課學(xué)生的情況。保存為學(xué)生選課查詢.QPR40SQL的其它功能的其它功能1、SQL的數(shù)據(jù)定義功能:的數(shù)據(jù)定義功能: 1)創(chuàng)建表:)創(chuàng)建表: CREATE TABLE (列定義,列定義, 表約束表約束) 例:例:CREA TABL 學(xué)生學(xué)生 ; (學(xué)號(hào)(學(xué)號(hào) CHAR(8), ; 姓名姓名 CHAR(8) NOT NULL , ; 性別性別 CHAR(2) DEFAULT 男男 , ; 入??偡秩胄?偡?IN
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度白酒線上線下聯(lián)合推廣代理合同3篇
- 二零二五版物流項(xiàng)目投資合作協(xié)議-風(fēng)險(xiǎn)控制3篇
- 人才培養(yǎng)模式與核心建設(shè)方案
- 設(shè)備監(jiān)理合同-設(shè)備監(jiān)理合同管理模擬試卷3
- 乳粉行業(yè)競(jìng)爭(zhēng)對(duì)手分析考核試卷
- 體育場(chǎng)館體育設(shè)施安全疏散設(shè)計(jì)考核試卷
- 安徽省肥東縣高級(jí)中學(xué)高三上學(xué)期8月調(diào)研考試語文試卷(含答案)
- 第二十七章腹股溝斜疝的臨床表現(xiàn)61課件講解
- 2025年健身比賽裁判合同
- 2025年嬰童用品代理合作協(xié)議
- 銷售與銷售目標(biāo)管理制度
- 人教版(2025新版)七年級(jí)下冊(cè)英語:寒假課內(nèi)預(yù)習(xí)重點(diǎn)知識(shí)默寫練習(xí)
- 2024年食品行業(yè)員工勞動(dòng)合同標(biāo)準(zhǔn)文本
- 全屋整裝售后保修合同模板
- 高中生物學(xué)科學(xué)推理能力測(cè)試
- 2024年公安部直屬事業(yè)單位招聘筆試參考題庫(kù)附帶答案詳解
- 臨沂正祥建材有限公司牛心官莊鐵礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 六年級(jí)上冊(cè)數(shù)學(xué)應(yīng)用題練習(xí)100題及答案
- 死亡報(bào)告年終分析報(bào)告
- 棋牌室禁止賭博警示語
- 公轉(zhuǎn)私人轉(zhuǎn)賬協(xié)議
評(píng)論
0/150
提交評(píng)論