結(jié)構(gòu)化查詢語(yǔ)言SQL_第1頁(yè)
結(jié)構(gòu)化查詢語(yǔ)言SQL_第2頁(yè)
結(jié)構(gòu)化查詢語(yǔ)言SQL_第3頁(yè)
結(jié)構(gòu)化查詢語(yǔ)言SQL_第4頁(yè)
結(jié)構(gòu)化查詢語(yǔ)言SQL_第5頁(yè)
已閱讀5頁(yè),還剩51頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、結(jié)構(gòu)化查詢語(yǔ)言SQL結(jié)構(gòu)化查詢語(yǔ)言 結(jié)構(gòu)化查詢語(yǔ)言SQL(StruCtured Query Language)是關(guān)系型數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,包括數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)查詢和數(shù)據(jù)控制四個(gè)部分。SQL的功能命令數(shù)據(jù)定義CREATE、ALTER、DROP數(shù)據(jù)操縱INSERT、UPDATE、DELETE數(shù)據(jù)查詢SELECT數(shù)據(jù)控制(VFP不支持)GRANT、REVOKE1 數(shù)據(jù)定義一、創(chuàng)建數(shù)據(jù)表命令CREATE TABLE ( (,),)功能創(chuàng)建數(shù)據(jù)表。CREATE TABLE 學(xué)生表(學(xué)號(hào) C(12), 姓名 C(8), 性別 L, 出生年月 D, 評(píng)分 N(3, 0)e.g. 4-1 創(chuàng)建新表學(xué)生表

2、.dbf,表中有學(xué)號(hào) C(12)、姓名 C(8)、性別 L、出生年月 D、評(píng)分 N(3, 0)五個(gè)字段。二、修改數(shù)據(jù)表1. 添加字段命令A(yù)LTER TABLE ADD (,)功能在表中添加新字段。e.g. 4-2 在學(xué)生表.dbf中,添加新字段備注 M。ALTER TABLE 學(xué)生表 ADD 備注 MALTER TABLE 學(xué)生表 ADD 家庭地址 C ALTER TABLE 學(xué)生表 ADD 數(shù)學(xué)成績(jī) N(5,1)2. 修改字段命令A(yù)LTER TABLE ALTER (,)功能修改字段類型、寬度和小數(shù)位數(shù)。e.g. 4-3 在學(xué)生表.dbf中,把字段性別 L更改為性別 C(2)。ALTER T

3、ABLE 學(xué)生表 ALTER 性別 C(2)3. 字段重命名命令A(yù)LTER TABLE RENAME TO 功能修改字段名稱。e.g. 4-4 在學(xué)生表.dbf中,把字段出生年月重命名為出生日期。ALTER TABLE 學(xué)生表 RENAME 出生年月 TO 出生日期3. 刪除字段命令A(yù)LTER TABLE DROP 功能刪除字段。e.g. 4-5 在學(xué)生表.dbf中,刪除字段備注。ALTER TABLE 學(xué)生表 DROP 備注四、刪除數(shù)據(jù)表命令DROP TABLE 功能刪除數(shù)據(jù)表。e.g. 4-8 刪除表學(xué)生表.dbf。DROP TABLE 學(xué)生表2 數(shù)據(jù)操縱一、插入記錄命令I(lǐng)NSERT IN

4、TO (, )VALUES(, )功能將新記錄插入到指定的表中。e.g. 4-28在學(xué)生表.dbf中插入一條新記錄。INSERT INTO 學(xué)生表(學(xué)號(hào), 姓名, 性別, 出生日期, 評(píng)分)VALUES(S0201111, 徐暢, 女, 1998/06/25, 88)INSERT INTO 學(xué)生表VALUES(S0201111, 徐暢, 女, 1998/06/25, 88)學(xué)號(hào)姓名性別出生日期評(píng)分S0201111徐暢女06/25/9888二、修改記錄命令UPDATE SET =, WHERE 功能對(duì)表中的一行或多行記錄的列值進(jìn)行修改,省略WHERE則修改表的所有記錄。e.g. 4-29在學(xué)生表

5、.dbf中把“張放”的評(píng)分增加3。UPDATE 學(xué)生表SET 評(píng)分=評(píng)分+3WHERE 姓名=張放三、刪除記錄命令DELETE FROM WHERE 功能刪除表中的一行或多行記錄,省略WHERE則刪除表的所有記錄。e.g. 4-30在學(xué)生表.dbf中刪除學(xué)生表“徐暢”的記錄。DELETE FROM 學(xué)生表WHERE 姓名=徐暢3 數(shù)據(jù)查詢命令SELECT ALL|DISTINCTTOP PERCENT.AS ,.AS FROM !AS INNER|LEFT|RIGHT|FULL JOIN !AS ON INTO TABLE |TO FILE |TO SCREENWHERE AND AND|OR

6、AND|ORGROUP BY ,HAVING ORDER BY ASC|DESC,ASC|DESC功能查詢數(shù)據(jù)表。一、投影查詢命令SELECT ALL|DISTINCTTOP .AS , FROM 功能選擇字段查詢。查詢選項(xiàng)說(shuō)明ALL查詢結(jié)果允許重復(fù)記錄。(默認(rèn)值)DISTINCT查詢結(jié)果不包含重復(fù)記錄。TOP 查詢結(jié)果為滿足查詢條件的前n條記錄,必須與ORDER BY一起使用。*查詢結(jié)果包含表的所有字段。e.g. 4-9 在學(xué)生表.dbf中查詢所有記錄。SELECT 學(xué)號(hào), 姓名, 性別, 出生日期, 評(píng)分 FROM 學(xué)生表SELECT * FROM 學(xué)生表e.g. 4-10 在學(xué)生表.db

7、f中查詢所有不重復(fù)的記錄,輸出學(xué)號(hào)、姓名和評(píng)分,并將 “學(xué)號(hào)”指定為“學(xué)生表編號(hào)” 。SELECT DISTINCT 學(xué)號(hào) AS 學(xué)生表編號(hào), 姓名, 評(píng)分 FROM 學(xué)生表二、條件查詢 SQL使用WHERE子句指定查詢條件。運(yùn)算符說(shuō)明舉例=、=、=80 and 評(píng)分=801.簡(jiǎn)單條件查詢e.g. 4-11 在學(xué)生表.dbf中查詢?cè)u(píng)分大于等于80的學(xué)生表記錄。e.g. 4-12 在選課表.dbf中查詢選修課程 “C120”或“C140”,并且成績(jī)大于等于80的學(xué)生表記錄。2.多重條件查詢 在WHERE子句中指定多個(gè)查詢條件時(shí),必須用邏輯運(yùn)算符AND、OR或NOT將其連接成復(fù)合的邏輯表達(dá)式。SE

8、LECT * FROM 選課表WHERE (課程號(hào)=C120 OR 課程號(hào)=C140) AND 成績(jī)=803.確定范圍 使用“BETWEEN AND”進(jìn)行范圍查詢。SELECT * FROM 學(xué)生表WHERE 評(píng)分 BETWEEN 80 AND 90e.g. 4-13 在學(xué)生表.dbf中查詢?cè)u(píng)分在80至90之間的學(xué)生表記錄。SELECT * FROM 學(xué)生表WHERE 評(píng)分=80 AND 評(píng)分=90e.g. 4-14 在選課表.dbf中查詢選修課程“C120”或“C140”的學(xué)生表記錄。4.確定集合 使用“IN”進(jìn)行集合查詢。SELECT * FROM 選課表WHERE 課程號(hào)=C120 OR

9、 課程號(hào)=C140SELECT * FROM 選課表WHERE 課程號(hào) IN (C120, C140)e.g. 4-15 在選課表.dbf中查詢所有姓“陳”的學(xué)生表記錄。5.部分匹配查詢 使用“LIKE”和通配符進(jìn)行部分匹配查詢(模糊查詢)。SELECT * FROM 學(xué)生表WHERE 姓名 LIKE 陳%通配符說(shuō)明 %表示任意多個(gè)字符 _表示任意一個(gè)字符三、統(tǒng)計(jì)查詢 SQL使用集合函數(shù)對(duì)一組值進(jìn)行計(jì)算,返回單個(gè)值。集合函數(shù)功能COUNT(*)求記錄的個(gè)數(shù)COUNT()按列求值的個(gè)數(shù)SUM ()按列求和(用于數(shù)值列)AVG ()按列求平均值(用于數(shù)值列)MAX ()求一列中的最大值MIN ()

10、求一列中的最小值e.g. 4-16在選課表.dbf中查詢課程號(hào)為“C120”的記錄,輸出課程號(hào)和選修該課程的人數(shù)。SELECT 課程號(hào), COUNT(*) AS 選修人數(shù)FROM 選課表WHERE 課程號(hào)=C120e.g. 4-17在選課表.dbf中查詢課程號(hào)為“C120”的記錄,輸出課程號(hào)、成績(jī)的最高分和最低分、以及它們之間相差的分?jǐn)?shù)。SELECT 課程號(hào),MAX(成績(jī)) AS 最高分,MIN(成績(jī)) AS 最低分,MAX(成績(jī))-MIN(成績(jī)) AS 相差分?jǐn)?shù)FROM 選課表WHERE 課程號(hào)=C120四、分組查詢 SQL使用GROUP BY子句對(duì)查詢結(jié)果進(jìn)行分組,使用HAVING子句在每

11、個(gè)分組上選擇記錄。WHERE與HAVING:WHERE作用于基本表或視圖,HAVING作用于分組且必須與GROUP BY一起使用。查詢的執(zhí)行順序:WHEREGROUP BYHAVING。e.g. 4-18在選課表.dbf中查詢每門課程的選修人數(shù),輸出課程號(hào)和選修人數(shù)。SELECT 課程號(hào), COUNT(*) AS 選修人數(shù)FROM 選課表GROUP BY 課程號(hào)e.g. 4-19在選課表.dbf中查詢選修兩門或者兩門以上課程的學(xué)生表記錄,輸出學(xué)號(hào)和選課表門數(shù)。SELECT 學(xué)號(hào), COUNT(*) AS 選課表門數(shù)FROM 選課表GROUP BY 學(xué)號(hào) HAVING COUNT(*)=2五、查

12、詢排序 SQL使用ORDER BY子句對(duì)查詢結(jié)果進(jìn)行排序。排序選項(xiàng)功能ASC升序排列(默認(rèn)值)DESC降序排列e.g. 4-20在選課表.dbf中查詢選修了課程“C130” 并且成績(jī)最高的3名學(xué)生表的記錄,輸出學(xué)號(hào)和成績(jī)。SELECT TOP 3 學(xué)號(hào), 成績(jī) FROM 選課表WHERE 課程號(hào)=C130ORDER BY 成績(jī) DESCTOP必須與ORDER BY一起使用。六、連接查詢 連接查詢用于對(duì)兩個(gè)或者兩個(gè)以上的表進(jìn)行查詢,包括內(nèi)連接(INNER JOIN) 、外連接(OUTER JOIN) 等。1.內(nèi)連接命令SELECT FROM , WHERE AND 功能連接查詢。SELECT 學(xué)

13、生表.學(xué)號(hào), 姓名, 課程號(hào)FROM 學(xué)生表, 選課表WHERE 學(xué)生表.學(xué)號(hào)=選課表.學(xué)號(hào) AND 課程號(hào)=C130e.g. 4-21在學(xué)生表.dbf和選課表.dbf中查詢選修課程“C130”的學(xué)生表記錄,輸出學(xué)號(hào)、姓名和課程號(hào)。2.外連接命令SELECT FROM INNER|LEFT|RIGHT|FULL JOIN ON WHERE 功能連接查詢。連接類型說(shuō)明INNER JOIN內(nèi)連接,輸出兩個(gè)表匹配的數(shù)據(jù)行。(默認(rèn)值)LEFT JOIN左連接,輸出兩個(gè)表匹配的數(shù)據(jù)行和左表剩余的數(shù)據(jù)行。RIGHT JOIN右連接,輸出兩個(gè)表匹配的數(shù)據(jù)行和右表剩余的數(shù)據(jù)行。FULL JOIN完全連接,輸出

14、兩個(gè)表匹配的數(shù)據(jù)行、左表剩余的數(shù)據(jù)行和右表剩余的數(shù)據(jù)行。SELECT 學(xué)生表.學(xué)號(hào),姓名, 課程號(hào);FROM 學(xué)生表;INNER JOIN 選課表 ON 學(xué)生表.學(xué)號(hào)=選課表.學(xué)號(hào) WHERE 課程號(hào)=c130七、嵌套查詢 在一個(gè)查詢的WHERE子句中包含另一個(gè)SELECT-FROM-WHERE查詢塊,此查詢塊稱為子查詢,包含子查詢的語(yǔ)句稱為父查詢。格式WHERE NOT IN (子查詢)WHERE ANY|SOME|ALL (子查詢)WHERE NOT EXISTS (子查詢)運(yùn)算符ANYALL大于子查詢結(jié)果的某個(gè)值大于子查詢結(jié)果的所有值=大于等于子查詢結(jié)果的某個(gè)值大于等于子查詢結(jié)果的所有值

15、=小于等于子查詢結(jié)果的某個(gè)值小于等于子查詢結(jié)果的所有值=等于子查詢結(jié)果的某個(gè)值無(wú)實(shí)際意義!=或無(wú)實(shí)際意義不等于子查詢結(jié)果的任何值SELECT 學(xué)號(hào), 課程號(hào) FROM 選課表WHERE 學(xué)號(hào)=(SELECT 學(xué)號(hào) FROM 學(xué)生表 WHERE 姓名=“劉曉蕓)1.返回一個(gè)值的子查詢e.g. 4-24在學(xué)生表.dbf和選課表.dbf中查詢“劉小蕓”選修的課程,輸出學(xué)號(hào)、課程號(hào)。SELECT 學(xué)號(hào), 姓名 FROM 學(xué)生表WHERE 學(xué)號(hào) =ANY(SELECT 學(xué)號(hào) FROM 選課表 WHERE 課程號(hào)=C130)2.返回一組值的子查詢e.g. 4-25在學(xué)生表.dbf和選課表.dbf中查詢選修

16、“C130”的學(xué)生表記錄,輸出學(xué)號(hào)、姓名。SELECT 學(xué)號(hào), 姓名 FROM 學(xué)生表WHERE 學(xué)號(hào) IN(SELECT 學(xué)號(hào) FROM 選課表 WHERE 課程號(hào)=C130)SELECT 學(xué)號(hào), 姓名 FROM 學(xué)生表WHERE NOT EXISTS(SELECT * FROM 選課表 WHERE 選課表.學(xué)號(hào)=學(xué)生表.學(xué)號(hào))e.g. 4-26在學(xué)生表.dbf和選課表.dbf中查詢沒(méi)有選課表的學(xué)生表記錄,輸出學(xué)號(hào)、姓名。八、查詢結(jié)果的輸出 在查詢中使用INTO或TO子句指定如何保存查詢結(jié)果。查詢?nèi)ハ蛘f(shuō)明INTO TABLE 輸出查詢到數(shù)據(jù)表INTO CURSOR 輸出查詢到臨時(shí)表INTO ARRAY 輸出查詢到數(shù)組TO FILE 輸出查詢到文本文件TO SCREEN輸出查詢到屏幕TO PRINTER輸出查詢到打印機(jī)e.g. 4-27在學(xué)生表.dbf中按評(píng)分由高到低查詢學(xué)生表的記錄,輸出到表。SELECT * FROM 學(xué)生表ORDER BY 評(píng)分 DESCINTO TABLE xs練習(xí)1.有圖書表,其內(nèi)容如下記錄號(hào)書名出版單位單價(jià) 1VFP數(shù)據(jù)庫(kù)電子科大 2計(jì)算機(jī)基礎(chǔ)四川大學(xué) 3信號(hào)與系統(tǒng)電子科大 4計(jì)算機(jī)網(wǎng)絡(luò)電子科大 5計(jì)算機(jī)原理四川大學(xué) 6現(xiàn)代漢語(yǔ)四川師大 7操作系統(tǒng)西南交大UPDATE TS SET 單價(jià)=單價(jià)+8WHERE 出版單位=四川師

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論