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

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章結(jié)構(gòu)化查詢語言SQL 主編:賴申江 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 本章學(xué)習(xí)導(dǎo)航本章學(xué)習(xí)導(dǎo)航 v 結(jié)構(gòu)化查詢語言結(jié)構(gòu)化查詢語言SQLSQL是一種功能是一種功能 齊全的數(shù)據(jù)庫語言,包含數(shù)據(jù)定義齊全的數(shù)據(jù)庫語言,包含數(shù)據(jù)定義 功能、數(shù)據(jù)查詢功能、數(shù)據(jù)操縱功功能、數(shù)據(jù)查詢功能、數(shù)據(jù)操縱功 能和數(shù)據(jù)控制功能。其中最主要的能和數(shù)據(jù)控制功能。其中最主要的 功能就是查詢。通過本章學(xué)習(xí),學(xué)功能就是查詢。通過本章學(xué)習(xí),學(xué) 生應(yīng)掌握生應(yīng)掌握SQLSQL語言的使用方法和技巧,語言的使用方法和技巧, 提高知識(shí)綜合運(yùn)用能力,寫出高質(zhì)提高知識(shí)綜合運(yùn)用能力,寫出高

2、質(zhì) 量的量的SQLSQL查詢命令。查詢命令。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 本章學(xué)習(xí)要點(diǎn)本章學(xué)習(xí)要點(diǎn) lSQL的數(shù)據(jù)定義 :熟練運(yùn)用CREATE TABLE、 ALTER TABLET和DROP TABLE語句完成表的創(chuàng)建、 修改和刪除 。 l SQL的數(shù)據(jù)操縱 :熟練運(yùn)用INSERT、DELETE 和UPDATE語句添加、刪除和更新記錄 。 l SQL的數(shù)據(jù)查詢 :熟練運(yùn)用SELECT語句完成簡 單查詢、嵌套查詢、連接查詢、分組與計(jì)算查詢 。 教學(xué)課時(shí):教學(xué)課時(shí):4課時(shí)課時(shí) 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v5.1 SQ

3、L5.1 SQL概述概述 v結(jié)構(gòu)化查詢語言(結(jié)構(gòu)化查詢語言(Structured Query LanguageStructured Query Language, 簡稱簡稱SQLSQL)是一種介于關(guān)系代數(shù)和關(guān)系演算之間的)是一種介于關(guān)系代數(shù)和關(guān)系演算之間的 語言。它于語言。它于19741974年由年由BoyceBoyce和和ChamberlinChamberlin提出,由提出,由 于具有語言簡潔、方便實(shí)用、功能齊全等優(yōu)點(diǎn),于具有語言簡潔、方便實(shí)用、功能齊全等優(yōu)點(diǎn), 很快得到推廣和應(yīng)用。隨著關(guān)系數(shù)據(jù)庫的流行,很快得到推廣和應(yīng)用。隨著關(guān)系數(shù)據(jù)庫的流行, SQLSQL語言最終發(fā)展成為關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)

4、語言和數(shù)語言最終發(fā)展成為關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言和數(shù) 據(jù)庫領(lǐng)域中一個(gè)主流語言。據(jù)庫領(lǐng)域中一個(gè)主流語言。SQLSQL已經(jīng)被已經(jīng)被ANSIANSI(美國(美國 國家標(biāo)準(zhǔn)化組織)確定為數(shù)據(jù)庫系統(tǒng)的工業(yè)標(biāo)準(zhǔn),國家標(biāo)準(zhǔn)化組織)確定為數(shù)據(jù)庫系統(tǒng)的工業(yè)標(biāo)準(zhǔn), 它是數(shù)據(jù)庫系統(tǒng)的通用語言。利用它是數(shù)據(jù)庫系統(tǒng)的通用語言。利用SQLSQL,用戶可以,用戶可以 用幾乎相同的語句在不同的數(shù)據(jù)庫系統(tǒng)上執(zhí)行同用幾乎相同的語句在不同的數(shù)據(jù)庫系統(tǒng)上執(zhí)行同 樣的操作。樣的操作。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 5.1.1 SQL5.1.1 SQL語言的特點(diǎn)語言的特點(diǎn) v SQLS

5、QL語言之所以能夠成為國際標(biāo)準(zhǔn),是因?yàn)樗且粋€(gè)綜合的、通用的、語言之所以能夠成為國際標(biāo)準(zhǔn),是因?yàn)樗且粋€(gè)綜合的、通用的、 功能極強(qiáng),同時(shí)又簡單易學(xué)的語言。功能極強(qiáng),同時(shí)又簡單易學(xué)的語言。 v (1 1)功能強(qiáng)大)功能強(qiáng)大 v SQLSQL語言集數(shù)據(jù)查詢、數(shù)據(jù)操縱、數(shù)據(jù)定義和數(shù)據(jù)控制功能于一體。語言集數(shù)據(jù)查詢、數(shù)據(jù)操縱、數(shù)據(jù)定義和數(shù)據(jù)控制功能于一體。 v (2 2)高度非過程化)高度非過程化 v 用戶只要提出用戶只要提出“做什么做什么”,而無需指明,而無需指明“怎么做怎么做”,存取路徑的選擇,存取路徑的選擇 以及以及SQLSQL語言的操作過程由系統(tǒng)自動(dòng)完成,不但大大減輕了用戶負(fù)擔(dān),語言的操作過程

6、由系統(tǒng)自動(dòng)完成,不但大大減輕了用戶負(fù)擔(dān), 而且有利于提高數(shù)據(jù)的獨(dú)立性。而且有利于提高數(shù)據(jù)的獨(dú)立性。 v (3 3)簡單易用)簡單易用 v SQLSQL語言十分簡潔,實(shí)現(xiàn)核心功能,一般只要用到下面語言十分簡潔,實(shí)現(xiàn)核心功能,一般只要用到下面9 9個(gè)命令動(dòng)詞,個(gè)命令動(dòng)詞, 如表如表5-15-1所示。因此容易學(xué)習(xí)和掌握。所示。因此容易學(xué)習(xí)和掌握。 v (4 4)有聯(lián)機(jī)交互和嵌入兩種使用方式)有聯(lián)機(jī)交互和嵌入兩種使用方式 v SQLSQL語言支持兩種不同的使用方式。一種是聯(lián)機(jī)交互使用,即用戶能在語言支持兩種不同的使用方式。一種是聯(lián)機(jī)交互使用,即用戶能在 終端直接輸入終端直接輸入SQLSQL命令對(duì)數(shù)據(jù)庫

7、進(jìn)行操作;另一種是嵌入式,即將命令對(duì)數(shù)據(jù)庫進(jìn)行操作;另一種是嵌入式,即將SQLSQL 語句嵌入到其他高級(jí)語言中,以便程序員在設(shè)計(jì)時(shí)使用。語句嵌入到其他高級(jí)語言中,以便程序員在設(shè)計(jì)時(shí)使用。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 5.1.2 SQL5.1.2 SQL數(shù)據(jù)定義功能數(shù)據(jù)定義功能 v 關(guān)系數(shù)據(jù)庫的基本對(duì)象是表、視圖和索引。因此關(guān)系數(shù)據(jù)庫的基本對(duì)象是表、視圖和索引。因此SQLSQL的數(shù)的數(shù) 據(jù)定義功能包括定義數(shù)據(jù)庫、表、視圖和索引,如表據(jù)定義功能包括定義數(shù)據(jù)庫、表、視圖和索引,如表5-25-2 所示。由于視圖是基于表的虛表,索引是依附于表的,

8、因所示。由于視圖是基于表的虛表,索引是依附于表的,因 此此SQLSQL通常不提供修改視圖和索引的操作。通常不提供修改視圖和索引的操作。 v 1 1數(shù)據(jù)庫的創(chuàng)建和刪除數(shù)據(jù)庫的創(chuàng)建和刪除 v 關(guān)系數(shù)據(jù)庫被定義為關(guān)系(表)、索引和視圖的集合。在關(guān)系數(shù)據(jù)庫被定義為關(guān)系(表)、索引和視圖的集合。在 創(chuàng)建表、視圖和索引前必須首先創(chuàng)建數(shù)據(jù)庫。創(chuàng)建表、視圖和索引前必須首先創(chuàng)建數(shù)據(jù)庫。 v 例如,創(chuàng)建學(xué)生選課數(shù)據(jù)庫例如,創(chuàng)建學(xué)生選課數(shù)據(jù)庫stscstsc,可以用,可以用CREATECREATE DATABASEDATABASEstscstsc語句來實(shí)現(xiàn)。語句來實(shí)現(xiàn)。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)

9、及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 2 2基本表的創(chuàng)建、修改和刪除基本表的創(chuàng)建、修改和刪除 v 用用CREATECREATEDATABASEDATABASE建立的數(shù)據(jù)庫是一個(gè)空的數(shù)據(jù)庫,接下來應(yīng)該在建立的數(shù)據(jù)庫是一個(gè)空的數(shù)據(jù)庫,接下來應(yīng)該在 這個(gè)數(shù)據(jù)庫中建立表。這個(gè)數(shù)據(jù)庫中建立表。 v (1 1)創(chuàng)建基本表)創(chuàng)建基本表 v 表的創(chuàng)建既可以通過表設(shè)計(jì)器或表的創(chuàng)建既可以通過表設(shè)計(jì)器或Visual FoxProVisual FoxPro的新建表命令實(shí)現(xiàn),也的新建表命令實(shí)現(xiàn),也 可以使用可以使用SQLSQL中的相應(yīng)命令創(chuàng)建。中的相應(yīng)命令創(chuàng)建。 v 命令格式:命令格式:CREATE TABLE|D

10、BF CREATE TABLE|DBF FREE FREE( (寬度寬度,),), (寬度寬度,),),) v 功能:建立一個(gè)由功能:建立一個(gè)由 指定的表結(jié)構(gòu)。指定的表結(jié)構(gòu)。 v 說明:說明: v :指定要?jiǎng)?chuàng)建的表的名稱。:指定要?jiǎng)?chuàng)建的表的名稱。 v FREEFREE:指定創(chuàng)建的表是一個(gè)自由表,不被添加到數(shù)據(jù)庫中。:指定創(chuàng)建的表是一個(gè)自由表,不被添加到數(shù)據(jù)庫中。 v (寬度寬度,):指定相應(yīng)字段的名:指定相應(yīng)字段的名 稱、類型、寬度及小數(shù)位數(shù)。稱、類型、寬度及小數(shù)位數(shù)。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v例例5-1 5-1 在學(xué)生選課數(shù)據(jù)庫在學(xué)

11、生選課數(shù)據(jù)庫stscstsc中創(chuàng)建一個(gè)學(xué)生表中創(chuàng)建一個(gè)學(xué)生表 studentstudent。 v CREATE TABLE student (CREATE TABLE student (學(xué)號(hào)學(xué)號(hào) c(8),c(8),姓名姓名 c(6),c(6), 性別性別 c(2),c(2),院系院系 c(8),c(8),出生日期出生日期 D,D,入學(xué)成績?nèi)雽W(xué)成績 N(4,1)N(4,1) v功能:用功能:用CREATE TABLECREATE TABLE語句創(chuàng)建數(shù)據(jù)庫表語句創(chuàng)建數(shù)據(jù)庫表studentstudent。 該表中包含了學(xué)號(hào)、姓名、性別、院系、出生日該表中包含了學(xué)號(hào)、姓名、性別、院系、出生日 期和入

12、學(xué)成績期和入學(xué)成績6 6個(gè)字段。個(gè)字段。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v (2 2)修改表結(jié)構(gòu))修改表結(jié)構(gòu) v 修改表結(jié)構(gòu)命令以修改表結(jié)構(gòu)命令以ALTER TABLEALTER TABLE開頭,后面根據(jù)不同的操作使用不同的開頭,后面根據(jù)不同的操作使用不同的 命令動(dòng)詞。命令動(dòng)詞。 v 增加字段增加字段 v 格式:格式:ALTER TABLE ALTER TABLE ADD ADD ) v 功能:對(duì)指定的表增加一個(gè)字段。功能:對(duì)指定的表增加一個(gè)字段。 v 例例5-5-為學(xué)生為學(xué)生studentstudent表增加一個(gè)照片字段。表增加一個(gè)照片字段

13、。 v ALTER TABLE student ADD ALTER TABLE student ADD 照片照片 G G v 刪除字段刪除字段 v 格式:格式:ALTER TABLE ALTER TABLE DROP DROP v 功能:在指定的表中刪除指定字段。功能:在指定的表中刪除指定字段。 v 例例5-5-刪除學(xué)生刪除學(xué)生studentstudent表中的照片字段。表中的照片字段。 v ALTER TABLE student DROP ALTER TABLE student DROP 照片照片 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 修改字段

14、修改字段 v 格式:格式:ALTER TABLE ALTER TABLE ALTER ALTER () v 功能:在指定的表中修改指定字段的類型和寬度,不能修功能:在指定的表中修改指定字段的類型和寬度,不能修 改字段名。改字段名。 v 例例5-5-把學(xué)生把學(xué)生studentstudent表中的姓名字段寬度由表中的姓名字段寬度由6 6改為改為1010。 v ALTER TABLE student ALTER ALTER TABLE student ALTER 姓名姓名 c(10)c(10) v 修改字段名修改字段名 v 格式:格式:ALTER TABLE ALTER TABLE RENAME R

15、ENAME TO TO v 功能:在指定表中將字段名更名為字段名。功能:在指定表中將字段名更名為字段名。 v 例例5-5-把課程表把課程表coursecourse中的課名改為課程名稱。中的課名改為課程名稱。 v ALTER TABLE course RENAME ALTER TABLE course RENAME 課名課名 TO TO 課程名稱課程名稱 v 說明:執(zhí)行一條命令只能對(duì)一個(gè)字段進(jìn)行一種操作。說明:執(zhí)行一條命令只能對(duì)一個(gè)字段進(jìn)行一種操作。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v(3 3)刪除表)刪除表 vDROP TABLEDROP TA

16、BLE語句用于刪除表的定義和表中的數(shù)據(jù)、語句用于刪除表的定義和表中的數(shù)據(jù)、 建立在表上的索引、視圖等。建立在表上的索引、視圖等。 v格式:格式: DROP TABLE DROP TABLE /?RECYCLE/?RECYCLE v功能:刪除指定的表。功能:刪除指定的表。 v說明:說明: v/?/?:將顯示:將顯示“移去移去”對(duì)話框,從中可刪除指定對(duì)話框,從中可刪除指定 的表。的表。 vRECYCLERECYCLE:將刪除的表文件放到回收站,以后可:將刪除的表文件放到回收站,以后可 以恢復(fù)。以恢復(fù)。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v3 3視圖的

17、創(chuàng)建和刪除視圖的創(chuàng)建和刪除 v視圖是一個(gè)虛表,是由一個(gè)或者幾個(gè)基本表導(dǎo)出視圖是一個(gè)虛表,是由一個(gè)或者幾個(gè)基本表導(dǎo)出 的表。它本身不獨(dú)立存儲(chǔ)在數(shù)據(jù)庫中,即數(shù)據(jù)庫的表。它本身不獨(dú)立存儲(chǔ)在數(shù)據(jù)庫中,即數(shù)據(jù)庫 中只存放視圖的定義而不存放視圖對(duì)應(yīng)的數(shù)據(jù),中只存放視圖的定義而不存放視圖對(duì)應(yīng)的數(shù)據(jù), 這些數(shù)據(jù)仍存放在對(duì)應(yīng)的表中。當(dāng)基本表中的數(shù)這些數(shù)據(jù)仍存放在對(duì)應(yīng)的表中。當(dāng)基本表中的數(shù) 據(jù)發(fā)生了變化,視圖中對(duì)應(yīng)的數(shù)據(jù)也隨之改變。據(jù)發(fā)生了變化,視圖中對(duì)應(yīng)的數(shù)據(jù)也隨之改變。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v (1 1)創(chuàng)建視圖)創(chuàng)建視圖 v 視圖一經(jīng)創(chuàng)建,就可以

18、通過它來查詢數(shù)據(jù)庫中數(shù)據(jù),又可以用來定義視圖一經(jīng)創(chuàng)建,就可以通過它來查詢數(shù)據(jù)庫中數(shù)據(jù),又可以用來定義 新的視圖。新的視圖。 v 格式:格式:CREATE VIEW CREATE VIEW ( ( , ,) AS 2) AS SELECT v 功能:創(chuàng)建一個(gè)由視圖名指定的視圖。功能:創(chuàng)建一個(gè)由視圖名指定的視圖。 v 用視圖可以簡化基本表的瀏覽。例如只想了解學(xué)生表中的學(xué)號(hào)、姓名用視圖可以簡化基本表的瀏覽。例如只想了解學(xué)生表中的學(xué)號(hào)、姓名 和院系,可以從學(xué)生表和院系,可以從學(xué)生表studentstudent創(chuàng)建一個(gè)視圖:創(chuàng)建一個(gè)視圖: v CREATE VIEW stuyx AS SELECT CR

19、EATE VIEW stuyx AS SELECT 學(xué)號(hào),姓名,院系學(xué)號(hào),姓名,院系 FROM studentFROM student v 其中,其中,stuyxstuyx是視圖名,省略了視圖的列名,隱含是是視圖名,省略了視圖的列名,隱含是SELECTSELECT查詢語句中查詢語句中 的列名。的列名。 v 例如,可以通過創(chuàng)建例如,可以通過創(chuàng)建stu_jsjstu_jsj視圖查看金融系的學(xué)生內(nèi)容,語句如下:視圖查看金融系的學(xué)生內(nèi)容,語句如下: v CREATE VIEW stu_jsj AS SELECT CREATE VIEW stu_jsj AS SELECT * * FROM studen

20、t WHERE FROM student WHERE 院院 系系“金融金融” 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v (2 2)查詢視圖)查詢視圖 v 視圖定義后,用戶就可以像基本表一樣對(duì)視圖進(jìn)行查詢。視圖定義后,用戶就可以像基本表一樣對(duì)視圖進(jìn)行查詢。 v 格式:格式:SELECT (SELECT ( , ,) FROM ) FROM v (3 3)刪除視圖)刪除視圖 v 格式:格式:DROP VIEW DROP VIEW v 視圖刪除后,其定義的以及在它基礎(chǔ)上再建立的其他視圖視圖刪除后,其定義的以及在它基礎(chǔ)上再建立的其他視圖 將自動(dòng)刪除。將自動(dòng)刪

21、除。 v 由于視圖是從基本表中衍生出來的,所以不能進(jìn)行結(jié)構(gòu)修由于視圖是從基本表中衍生出來的,所以不能進(jìn)行結(jié)構(gòu)修 改。若要改變視圖結(jié)構(gòu),則只能刪除后重新定義視圖。改。若要改變視圖結(jié)構(gòu),則只能刪除后重新定義視圖。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v5.1.3 SQL5.1.3 SQL數(shù)據(jù)查詢功能數(shù)據(jù)查詢功能 v數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作。數(shù)據(jù)查詢是指根數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作。數(shù)據(jù)查詢是指根 據(jù)用戶的需要,從數(shù)據(jù)庫中提取所需的數(shù)據(jù)。據(jù)用戶的需要,從數(shù)據(jù)庫中提取所需的數(shù)據(jù)。SQLSQL 提供了提供了SELECTSELECT語句實(shí)現(xiàn)查詢,該語句具有靈

22、活的語句實(shí)現(xiàn)查詢,該語句具有靈活的 使用方式和豐富的功能,既可以完成相對(duì)簡單的使用方式和豐富的功能,既可以完成相對(duì)簡單的 單表查詢,又可以完成復(fù)雜的多表連接查詢和嵌單表查詢,又可以完成復(fù)雜的多表連接查詢和嵌 套查詢。套查詢。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 1 1SQLSQL查詢命令查詢命令 v 一般格式:一般格式: v SELECT ALL|DISTINCTSELECT ALL|DISTINCT,; v FROM FROM ,; v WHERE WHERE ; v GROUP BY GROUP BY HAVING HAVING ; v O

23、RDER BYORDER BYASC|DESCASC|DESC v 功能:功能: v 根據(jù)根據(jù)WHEREWHERE子句的條件表達(dá)式,從子句的條件表達(dá)式,從FROMFROM子句指定的基本表或視圖中,找子句指定的基本表或視圖中,找 出滿足條件的記錄;再按出滿足條件的記錄;再按SELECTSELECT子句中的目標(biāo)表達(dá)式,選出記錄中的子句中的目標(biāo)表達(dá)式,選出記錄中的 屬性值,形成結(jié)果表。如果有屬性值,形成結(jié)果表。如果有GROUP BYGROUP BY子句,則將結(jié)果按分組列名的子句,則將結(jié)果按分組列名的 值進(jìn)行分組,該屬性列值相等的記錄為一個(gè)組。如果值進(jìn)行分組,該屬性列值相等的記錄為一個(gè)組。如果GROU

24、P BYGROUP BY子句還子句還 帶有帶有HAVINGHAVING短語,則只有滿足指定條件的組才能輸出。如果有短語,則只有滿足指定條件的組才能輸出。如果有ORDER ORDER BYBY子句,則結(jié)果還要按排序字段的值進(jìn)行升序或降序排列。子句,則結(jié)果還要按排序字段的值進(jìn)行升序或降序排列。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 說明:說明: v (1 1)在使用)在使用SQLSQL查詢語句時(shí),無論數(shù)據(jù)庫是否打開,查詢語句時(shí),無論數(shù)據(jù)庫是否打開,F(xiàn)ROMFROM 子句中指定的表所在數(shù)據(jù)庫將自動(dòng)打開。子句中指定的表所在數(shù)據(jù)庫將自動(dòng)打開。 v (2 2

25、)由于)由于FoxProFoxPro系統(tǒng)中將系統(tǒng)中將EnterEnter鍵解釋為一條語句的結(jié)束,鍵解釋為一條語句的結(jié)束, 在整個(gè)語句結(jié)束前只能連續(xù)寫,不能用在整個(gè)語句結(jié)束前只能連續(xù)寫,不能用EnterEnter鍵來換行。鍵來換行。 在在SQLSQL中,為了使查詢結(jié)構(gòu)清晰,往往把中,為了使查詢結(jié)構(gòu)清晰,往往把SELECTSELECT子句、子句、 FROMFROM子句及各層嵌套以分號(hào)作為分隔符,表示下一行為本子句及各層嵌套以分號(hào)作為分隔符,表示下一行為本 行的后續(xù)。行的后續(xù)。 v 為了便于理解,還是以學(xué)生選課數(shù)據(jù)庫為了便于理解,還是以學(xué)生選課數(shù)據(jù)庫stscstsc為例說明為例說明 SELECTSE

26、LECT語句的基本用法。學(xué)生選課數(shù)據(jù)庫語句的基本用法。學(xué)生選課數(shù)據(jù)庫stscstsc由三個(gè)基本由三個(gè)基本 表組成:表組成: v 學(xué)生表學(xué)生表studentstudent(學(xué)號(hào)學(xué)號(hào)、姓名、性別、出生日期、院系、姓名、性別、出生日期、院系、 入學(xué)成績);入學(xué)成績); v 成績表成績表scorescore(學(xué)號(hào)學(xué)號(hào)、課程編號(hào)課程編號(hào)、成績);、成績); v 課程表課程表coursecourse(課程編號(hào)課程編號(hào)、課程名稱、學(xué)分)。、課程名稱、學(xué)分)。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 2 2簡單查詢簡單查詢 v 簡單查詢是基于單表的查詢,由簡單查詢

27、是基于單表的查詢,由SELECTSELECT和和FROMFROM短語構(gòu)成無條件查詢或短語構(gòu)成無條件查詢或 者由者由SELECTSELECT、FROMFROM和和WHEREWHERE短語構(gòu)成有條件查詢。短語構(gòu)成有條件查詢。 v (1 1)選擇表中的若干列)選擇表中的若干列 v 例例5-6 5-6 查詢學(xué)生表查詢學(xué)生表studentstudent中所有院系。中所有院系。 v SELECT SELECT 院系院系 FROM studentFROM student v 該結(jié)果中有重復(fù)值,若要去掉重復(fù)值只需加上該結(jié)果中有重復(fù)值,若要去掉重復(fù)值只需加上DISTINCTDISTINCT短語:短語: v SE

28、LECT DISTINCT SELECT DISTINCT 院系院系 FROM studentFROM student v 例例5-7 5-7 查詢?nèi)w學(xué)生的詳細(xì)記錄。查詢?nèi)w學(xué)生的詳細(xì)記錄。 v SELECT SELECT * * FROM student FROM student v 其中的其中的“* *”表示要查詢所有的列。表示要查詢所有的列。 v 例例5-8 5-8 查詢?nèi)w學(xué)生情況,并將結(jié)果按入學(xué)成績升序排序。查詢?nèi)w學(xué)生情況,并將結(jié)果按入學(xué)成績升序排序。 v SELECT SELECT * * FROM student ORDER BY FROM student ORDER BY

29、入學(xué)成績?nèi)雽W(xué)成績 ASCASC v 結(jié)果表中的記錄自動(dòng)按入學(xué)成績的升序排序。結(jié)果表中的記錄自動(dòng)按入學(xué)成績的升序排序。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v(2 2)用)用WHEREWHERE子句選擇滿足條件的記錄子句選擇滿足條件的記錄 v例例5-9 5-9 查找中文系全體學(xué)生的名單。查找中文系全體學(xué)生的名單。 vSELECT SELECT 姓名姓名 FROM student WHERE FROM student WHERE 院系院系=中文中文 v例例5-10 5-10 查找缺少成績的學(xué)生學(xué)號(hào)和課程號(hào)。查找缺少成績的學(xué)生學(xué)號(hào)和課程號(hào)。 vSELEC

30、T SELECT 學(xué)號(hào)學(xué)號(hào), ,課程編號(hào)課程編號(hào) FROM score WHERE FROM score WHERE 成績成績 IS NULLIS NULL v例例5-11 5-11 查找姓查找姓“王王”的所有學(xué)生姓名和院系。的所有學(xué)生姓名和院系。 vSELECT SELECT 姓名姓名, ,院系院系 FROM student WHERE FROM student WHERE 姓名姓名 LIKE LIKE 王王% % 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 3 3連接查詢連接查詢 v 若查詢涉及到兩個(gè)或兩個(gè)以上的表,就要用到連接查詢。若查詢涉及到兩

31、個(gè)或兩個(gè)以上的表,就要用到連接查詢。 v (1 1)連接)連接 v 由于由于SQLSQL的高度非過程化,用戶只需要在的高度非過程化,用戶只需要在FROMFROM子句中指出要用到的表名,子句中指出要用到的表名, 在在WHEREWHERE中指出連接條件,連接過程將由系統(tǒng)自動(dòng)完成。中指出連接條件,連接過程將由系統(tǒng)自動(dòng)完成。 v 連接條件連接條件 v 用來連接兩個(gè)表的條件稱為連接條件,其一般格式為:用來連接兩個(gè)表的條件稱為連接條件,其一般格式為: v . .2 v 此外,連接條件還可以用下面的形式:此外,連接條件還可以用下面的形式: v . BETWEEN BETWEEN . AND AND .3 v

32、 連接條件中的列名稱為連接字段,條件中的各連接字段必須是可比的。連接條件中的列名稱為連接字段,條件中的各連接字段必須是可比的。 v 等值連接和非等值連接等值連接和非等值連接 v 當(dāng)連接運(yùn)算符為當(dāng)連接運(yùn)算符為“=”=”時(shí),稱為等值連接。使用其他運(yùn)算符稱為非等值時(shí),稱為等值連接。使用其他運(yùn)算符稱為非等值 連接。連接。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 例例5-12 5-12 查詢選修課程編號(hào)為查詢選修課程編號(hào)為“9001”9001”的學(xué)生學(xué)號(hào)和姓名。的學(xué)生學(xué)號(hào)和姓名。 v 學(xué)生的姓名在學(xué)生的姓名在studentstudent表中,學(xué)生選課信息在表

33、中,學(xué)生選課信息在scorescore成績表成績表 中,所以本查詢實(shí)際上同時(shí)中,所以本查詢實(shí)際上同時(shí)studentstudent和和scorescore兩個(gè)表中的數(shù)兩個(gè)表中的數(shù) 據(jù)。這兩個(gè)表之間的聯(lián)系是通過兩個(gè)表中都有據(jù)。這兩個(gè)表之間的聯(lián)系是通過兩個(gè)表中都有“學(xué)號(hào)學(xué)號(hào)”字字 段實(shí)現(xiàn)的。要查詢學(xué)生及其選修課程的情況,就必須將這段實(shí)現(xiàn)的。要查詢學(xué)生及其選修課程的情況,就必須將這 兩個(gè)表中學(xué)號(hào)相同的記錄連接起來。這是一個(gè)等值連接。兩個(gè)表中學(xué)號(hào)相同的記錄連接起來。這是一個(gè)等值連接。 SQLSQL語句為:語句為: v SELECT student.SELECT student.學(xué)號(hào)學(xué)號(hào), ,姓名姓名 F

34、ROM student, score ;FROM student, score ; v WHERE student.WHERE student.學(xué)號(hào)學(xué)號(hào)=score.=score.學(xué)號(hào)學(xué)號(hào) AND AND 課程編號(hào)課程編號(hào)=9001=9001 v 注意:注意:studentstudent表與表與scorescore表中均包含學(xué)號(hào)字段,訪問時(shí)要表中均包含學(xué)號(hào)字段,訪問時(shí)要 加前綴。加前綴。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 4 4嵌套查詢嵌套查詢 v 在在SQLSQL語言中,一個(gè)語言中,一個(gè)SELECTFROMWHERESELECTFROMWH

35、ERE語句稱為一個(gè)查語句稱為一個(gè)查 詢塊。將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的詢塊。將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHEREWHERE子句或子句或 HANVIGHANVIG短語中的查詢稱為嵌套查詢。嵌套查詢使用戶可以短語中的查詢稱為嵌套查詢。嵌套查詢使用戶可以 用多個(gè)簡單查詢構(gòu)造復(fù)雜的查詢,從而增強(qiáng)用多個(gè)簡單查詢構(gòu)造復(fù)雜的查詢,從而增強(qiáng)SQLSQL語言的查語言的查 詢能力。詢能力。 v 例例5-13 5-13 用嵌套查詢實(shí)現(xiàn)例用嵌套查詢實(shí)現(xiàn)例5-125-12的語句是:的語句是: v SELECT SELECT 學(xué)號(hào)學(xué)號(hào), ,姓名姓名 FROM student ;FROM student ; v

36、WHERE WHERE 學(xué)號(hào)學(xué)號(hào) IN(SELECT IN(SELECT 學(xué)號(hào)學(xué)號(hào) FROM score WHERE FROM score WHERE 課程編課程編 號(hào)號(hào)=9001)=9001) v 在本例中,下層查詢塊在本例中,下層查詢塊SELECTSELECT學(xué)號(hào)學(xué)號(hào)FROM score WHEREFROM score WHERE課程課程 編號(hào)編號(hào)“9001”9001”是嵌套在查詢塊是嵌套在查詢塊SELECTSELECT學(xué)號(hào)學(xué)號(hào), ,姓名姓名 FROM FROM student WHEREstudent WHERE學(xué)號(hào)學(xué)號(hào) ININ中的。上層查詢塊又稱為中的。上層查詢塊又稱為“外層查外層查

37、 詢詢”或或“父查詢父查詢”,下層查詢塊稱為,下層查詢塊稱為“內(nèi)層查詢內(nèi)層查詢”或或“子子 查詢查詢”。一個(gè)子查詢還可以嵌套其他子查詢。一個(gè)子查詢還可以嵌套其他子查詢。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 5 5計(jì)算查詢計(jì)算查詢 v SQLSQL提供了稱為庫函數(shù)的常用統(tǒng)計(jì)函數(shù),這些庫函數(shù)增強(qiáng)提供了稱為庫函數(shù)的常用統(tǒng)計(jì)函數(shù),這些庫函數(shù)增強(qiáng) 了查詢功能,進(jìn)一步方便了用戶。這些庫函數(shù)及其功能如了查詢功能,進(jìn)一步方便了用戶。這些庫函數(shù)及其功能如 下:下: v COUNT(COUNT():對(duì)指定字段進(jìn)行計(jì)數(shù):對(duì)指定字段進(jìn)行計(jì)數(shù) v SUM(SUM():求

38、指定字段值的總和(該字段必須為:求指定字段值的總和(該字段必須為 數(shù)值)數(shù)值) v AVG(AVG():求指定字段值的平均值(該字段必須:求指定字段值的平均值(該字段必須 為數(shù)值)為數(shù)值) v MAX(MAX():求指定字段中的最大值:求指定字段中的最大值 v MIN(MIN():求指定字段中的最小值:求指定字段中的最小值 v 以上函數(shù)不可以嵌套使用。在使用庫函數(shù)查詢時(shí),常用以上函數(shù)不可以嵌套使用。在使用庫函數(shù)查詢時(shí),常用ASAS 來指定列名。來指定列名。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 例例5-14 5-14 查詢課程總數(shù)。查詢課程總數(shù)。

39、 v SELECT COUNT(SELECT COUNT(* *)AS )AS 課程總數(shù)課程總數(shù) FROM courseFROM course v 在在coursecourse表中課程編號(hào)的值唯一,所以統(tǒng)計(jì)課程總數(shù)就是表中課程編號(hào)的值唯一,所以統(tǒng)計(jì)課程總數(shù)就是 統(tǒng)計(jì)表中的記錄數(shù)。統(tǒng)計(jì)表中的記錄數(shù)。 v 例例5-15 5-15 查詢選修了課程學(xué)生人數(shù)。查詢選修了課程學(xué)生人數(shù)。 v SELECT COUNT(DISTINCT SELECT COUNT(DISTINCT 學(xué)號(hào)學(xué)號(hào))AS )AS 選課人數(shù)選課人數(shù) FROM scoreFROM score v 由于每個(gè)學(xué)生選課不止一門課,由于每個(gè)學(xué)生選

40、課不止一門課,scorescore表中一個(gè)學(xué)生可能表中一個(gè)學(xué)生可能 有多個(gè)記錄,因此在有多個(gè)記錄,因此在COUNTCOUNT函數(shù)中用函數(shù)中用DISTINCTDISTINCT去掉重復(fù)記去掉重復(fù)記 錄。錄。 v 例例5-16 5-16 統(tǒng)計(jì)各課程選修的學(xué)生人數(shù)。統(tǒng)計(jì)各課程選修的學(xué)生人數(shù)。 v SELECT SELECT 課程編號(hào)課程編號(hào),COUNT(,COUNT(學(xué)號(hào)學(xué)號(hào))AS )AS 學(xué)生人數(shù)學(xué)生人數(shù) FROM score FROM score GROUP BY GROUP BY 課程編號(hào)課程編號(hào) v 本例對(duì)本例對(duì)scorescore按課程編號(hào)分組,對(duì)每一組用函數(shù)按課程編號(hào)分組,對(duì)每一組用函數(shù)C

41、OUNTCOUNT求出求出 學(xué)生人數(shù)。學(xué)生人數(shù)。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 6 6查詢結(jié)果輸出查詢結(jié)果輸出 v )輸出部分結(jié)果)輸出部分結(jié)果 v 在在SELECTSELECT語句中常使用語句中常使用TOP n PERCENTTOP n PERCENT短語來顯示滿足條件的前幾條短語來顯示滿足條件的前幾條 記錄。不帶記錄。不帶PERCENTPERCENT參數(shù)時(shí),參數(shù)時(shí),n n是是132767132767之間的整數(shù),說明顯示前之間的整數(shù),說明顯示前n n條條 記錄;使用記錄;使用PERCENTPERCENT參數(shù)時(shí),參數(shù)時(shí),n n是是0.01

42、99.990.0199.99之間的實(shí)數(shù),說明顯示查之間的實(shí)數(shù),說明顯示查 詢結(jié)果中前百分之多少的記錄。詢結(jié)果中前百分之多少的記錄。 v TOPTOP短語要與短語要與ORDER BYORDER BY短語同時(shí)使用才有效。短語同時(shí)使用才有效。 v 例例5-17 5-17 查詢輸出入學(xué)成績在前查詢輸出入學(xué)成績在前3 3名的學(xué)生名的學(xué)生 v SELECT SELECT * * TOP 3 FROM student ORDER BY TOP 3 FROM student ORDER BY 入學(xué)成績?nèi)雽W(xué)成績 DESCDESC v 例例5-18 5-18 查詢輸出入學(xué)成績在前查詢輸出入學(xué)成績在前3%3%的學(xué)生

43、的學(xué)生 v SELECT SELECT * * TOP 3 PERCENT FROM student ORDER BY TOP 3 PERCENT FROM student ORDER BY 入學(xué)成績?nèi)雽W(xué)成績 DESCDESC v )輸出去向)輸出去向 v 在在SELECTSELECT語句中語句中INTOINTO或或TOTO短語,可以指定查詢結(jié)果的輸出去向。短語,可以指定查詢結(jié)果的輸出去向。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v例例5-19 5-19 將所有女同學(xué)的信息保存于臨時(shí)表將所有女同學(xué)的信息保存于臨時(shí)表TEMPTEMP中。中。 vSELE

44、CT SELECT * * FROM student WHERE FROM student WHERE 性別性別=女女 INTO INTO CURSOR TEMPCURSOR TEMP v例例5-20 5-20 將入學(xué)成績大于將入學(xué)成績大于450450分的學(xué)生信息保存于分的學(xué)生信息保存于 高分高分.DBF.DBF表中。表中。 vSELECT SELECT * * FROM student WHERE FROM student WHERE 入學(xué)成績?nèi)雽W(xué)成績450 450 INTO DBF INTO DBF 高分高分 v例例5-21 5-21 將中文系的學(xué)生信息存放到文件名為將中文系的學(xué)生信息存放

45、到文件名為“中中 文文”的文本文件中。的文本文件中。 vSELECT SELECT * * FROM student WHERE FROM student WHERE 院系院系=中文中文 TO TO FILE FILE 中文中文 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v5.1.4 SQL5.1.4 SQL操縱功能操縱功能 vSQLSQL的數(shù)據(jù)操作功能是指對(duì)已經(jīng)存在的數(shù)據(jù)表進(jìn)行的數(shù)據(jù)操作功能是指對(duì)已經(jīng)存在的數(shù)據(jù)表進(jìn)行 記錄的插入、刪除和修改操作。記錄的插入、刪除和修改操作。SQLSQL的數(shù)據(jù)操作包的數(shù)據(jù)操作包 括三個(gè)語句:括三個(gè)語句:INSERT(IN

46、SERT(插入記錄插入記錄) )、DELETE(DELETE(刪除記刪除記 錄錄) )和和UPDATE(UPDATE(修改記錄修改記錄) )。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 1 1插入數(shù)據(jù)插入數(shù)據(jù) v (1 1)命令格式:)命令格式: v INSERT INTOINSERT INTO(字段名字段名 ,字段名,字段名)VALUES()VALUES(表達(dá)式表達(dá)式11,表達(dá)式,表達(dá)式 2)2) v 功能功能: :在表尾追加一條包含指定字段值的記錄。在表尾追加一條包含指定字段值的記錄。 v 例例5-22 5-22 給成績表添加一條選課記錄。給成績

47、表添加一條選課記錄。 v INSERT INTO score (INSERT INTO score (學(xué)號(hào)學(xué)號(hào), ,課程編號(hào)課程編號(hào), ,成績成績) VALUES (03036003,001,89) VALUES (03036003,001,89) v 說明:說明: v 命令中的各表達(dá)式和各字段之間相對(duì)應(yīng)的,其數(shù)據(jù)類型應(yīng)相同。命令中的各表達(dá)式和各字段之間相對(duì)應(yīng)的,其數(shù)據(jù)類型應(yīng)相同。 v 若插入命令中表的每一個(gè)字段都有具體的值,那么字段名列表可以省略。若若插入命令中表的每一個(gè)字段都有具體的值,那么字段名列表可以省略。若 只給出部分字段的值,那么必須在命令中列出對(duì)應(yīng)的字段名。只給出部分字段的值,那

48、么必須在命令中列出對(duì)應(yīng)的字段名。 v 如上列的命令可改為:如上列的命令可改為: v INSERT INTO score VALUES (“03036003”,”001”,89)INSERT INTO score VALUES (“03036003”,”001”,89) v (2 2)命令格式)命令格式2 2: v INSERT INTOINSERT INTO FROM ARRAY FROM ARRAY| v 功能:從數(shù)組或內(nèi)存變量中導(dǎo)入記錄。功能:從數(shù)組或內(nèi)存變量中導(dǎo)入記錄。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 2 2刪除數(shù)據(jù)刪除數(shù)據(jù) v 命令

49、格式:命令格式: v DELETE FROMDELETE FROMWHERE WHERE v 功能:從指定的表中對(duì)滿足條件的那些記錄作刪除標(biāo)記。功能:從指定的表中對(duì)滿足條件的那些記錄作刪除標(biāo)記。 v 說明:說明: v 該命令執(zhí)行的是邏輯刪除,若要徹底刪除記錄,還需要使該命令執(zhí)行的是邏輯刪除,若要徹底刪除記錄,還需要使 用用PACKPACK命令。命令。 v 如果省略條件子句,表示刪除表中所有記錄,但是該表的如果省略條件子句,表示刪除表中所有記錄,但是該表的 結(jié)構(gòu)仍然存在。結(jié)構(gòu)仍然存在。 v 例例5-23 5-23 從課程表中刪除課程號(hào)為從課程表中刪除課程號(hào)為”001”001”的記錄。的記錄。 v

50、 DELETE FROM course WHERE DELETE FROM course WHERE 課程編號(hào)課程編號(hào)=001=001。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 3 3修改數(shù)據(jù)修改數(shù)據(jù) v 修改數(shù)據(jù)是指修改指定表中滿足條件的記錄。修改數(shù)據(jù)是指修改指定表中滿足條件的記錄。 v 命令格式:命令格式: v UPDATE UPDATE v SET SET =,=2 v WHERE WHERE v 功能:按功能:按SETSET子句中的表達(dá)式修改記錄的相應(yīng)的字段值。如果省略條件,子句中的表達(dá)式修改記錄的相應(yīng)的字段值。如果省略條件, 表示表中所有

51、記錄都要修改,否則僅修改滿足條件的部分記錄。表示表中所有記錄都要修改,否則僅修改滿足條件的部分記錄。 v 例例5-24 5-24 將學(xué)生表中學(xué)號(hào)為將學(xué)生表中學(xué)號(hào)為”03036003”03036003”的學(xué)生姓名改為的學(xué)生姓名改為“王平王平”。 v UPDATE student SET UPDATE student SET 姓名姓名=王平王平 WHERE WHERE 學(xué)號(hào)學(xué)號(hào)=03036003=03036003 v 例例5-25 5-25 將所有學(xué)生的入學(xué)成績加上將所有學(xué)生的入學(xué)成績加上5 5分。分。 v UPDATE student SET UPDATE student SET 入學(xué)成績?nèi)雽W(xué)成

52、績= =入學(xué)成績?nèi)雽W(xué)成績+5+5 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 5.2 5.2 用用SQLSQL進(jìn)行表的基本操作案例進(jìn)行表的基本操作案例 v 案例說明案例說明 v 本案例要求運(yùn)用本案例要求運(yùn)用SQLSQL語句的定義功能,創(chuàng)建語句的定義功能,創(chuàng)建“學(xué)生學(xué)生- -成績成績- - 課程課程”數(shù)據(jù)庫數(shù)據(jù)庫StscStsc,然后在該數(shù)據(jù)庫中創(chuàng)建表,并建立表,然后在該數(shù)據(jù)庫中創(chuàng)建表,并建立表 間聯(lián)系?;疽笕缦拢洪g聯(lián)系?;疽笕缦拢?v (1 1)用)用SQLSQL語句創(chuàng)建數(shù)據(jù)庫語句創(chuàng)建數(shù)據(jù)庫stscstsc。 v (2 2)在該數(shù)據(jù)庫下創(chuàng)建)在

53、該數(shù)據(jù)庫下創(chuàng)建3 3張數(shù)據(jù)庫表,分別為:學(xué)生表張數(shù)據(jù)庫表,分別為:學(xué)生表 studentstudent、成績表、成績表scorescore、課程表、課程表coursecourse。 v (3 3)設(shè)置學(xué)生表的學(xué)號(hào)為主索引、成績表的學(xué)號(hào)和課程)設(shè)置學(xué)生表的學(xué)號(hào)為主索引、成績表的學(xué)號(hào)和課程 編號(hào)為候選索引、課程表的課程編號(hào)為主索引。編號(hào)為候選索引、課程表的課程編號(hào)為主索引。 v (4 4)建立學(xué)生表和成績表、課程表和成績表一對(duì)多關(guān)聯(lián)。)建立學(xué)生表和成績表、課程表和成績表一對(duì)多關(guān)聯(lián)。 v (5 5)設(shè)置數(shù)據(jù)庫表的完整約束性條件。)設(shè)置數(shù)據(jù)庫表的完整約束性條件。 v (6 6)向數(shù)據(jù)庫表中添加記錄。)

54、向數(shù)據(jù)庫表中添加記錄。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 5.2.1 5.2.1 操作步驟操作步驟 v (1 1)創(chuàng)建數(shù)據(jù)庫)創(chuàng)建數(shù)據(jù)庫stscstsc v (2 2)創(chuàng)建數(shù)據(jù)庫表)創(chuàng)建數(shù)據(jù)庫表 v 在命令窗口中輸入在命令窗口中輸入CREATE TABLECREATE TABLE命令,分別建立學(xué)生表命令,分別建立學(xué)生表 studentstudent、成績表、成績表scorescore、課程表、課程表cousecouse,并要求對(duì)學(xué)生表,并要求對(duì)學(xué)生表 中的中的“學(xué)號(hào)學(xué)號(hào)”和課程表中的和課程表中的“課程編號(hào)課程編號(hào)”字段建立主索引,字段建立主索

55、引, 對(duì)成績表中的對(duì)成績表中的“學(xué)號(hào)學(xué)號(hào)”和和“課程編號(hào)課程編號(hào)”字段建立候選索引。字段建立候選索引。 在新建成績表(在新建成績表(scorescore)命令中用)命令中用REFERENCESREFERENCES子句建立了子句建立了 該表與其他兩個(gè)表的關(guān)聯(lián)。該表與其他兩個(gè)表的關(guān)聯(lián)。 v (3 3)修改表結(jié)構(gòu))修改表結(jié)構(gòu) v (4 4)給成績表添加一條記錄或從數(shù)組中導(dǎo)入記錄。)給成績表添加一條記錄或從數(shù)組中導(dǎo)入記錄。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 5.2.2 5.2.2 本節(jié)知識(shí)點(diǎn)本節(jié)知識(shí)點(diǎn) v1 1完整性約束條件完整性約束條件 v在案例中

56、用到了在案例中用到了SQLSQL數(shù)據(jù)定義功能中的完整性約束數(shù)據(jù)定義功能中的完整性約束 條件的使用。條件的使用。 v2 2使用使用SQLSQL插入命令插入命令 v當(dāng)表中定義了主索引或候選索引,相應(yīng)的字段設(shè)當(dāng)表中定義了主索引或候選索引,相應(yīng)的字段設(shè) 置成不能為空時(shí),置成不能為空時(shí),Visuai FoxProVisuai FoxPro的的INSERTINSERT或者或者 APPENDAPPEND命令就無法使用了,因此這里使用命令就無法使用了,因此這里使用SQLSQL的插的插 入命令。入命令。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v 5.3 5.3 用用S

57、QLSQL查詢命令查詢數(shù)據(jù)案例查詢命令查詢數(shù)據(jù)案例 v 案例說明案例說明 v 本案例要求在本案例要求在“學(xué)生學(xué)生- -成績成績- -課程課程”數(shù)據(jù)庫基礎(chǔ)上,運(yùn)用數(shù)據(jù)庫基礎(chǔ)上,運(yùn)用 SQLSQL查詢命令,對(duì)查詢命令,對(duì)stscstsc數(shù)據(jù)庫中數(shù)據(jù)實(shí)現(xiàn)單表的簡單查詢、數(shù)據(jù)庫中數(shù)據(jù)實(shí)現(xiàn)單表的簡單查詢、 多表的連接查詢和復(fù)雜的嵌套查詢,靈活地運(yùn)用數(shù)據(jù)庫內(nèi)多表的連接查詢和復(fù)雜的嵌套查詢,靈活地運(yùn)用數(shù)據(jù)庫內(nèi) 的數(shù)據(jù)為實(shí)際應(yīng)用服務(wù)?;疽笕缦拢旱臄?shù)據(jù)為實(shí)際應(yīng)用服務(wù)?;疽笕缦拢?v (1 1)用)用SQLSQL的查詢命令有選擇地顯示表中的部分列。的查詢命令有選擇地顯示表中的部分列。 v (2 2)利用)

58、利用SQLSQL查詢功能實(shí)現(xiàn)計(jì)算查詢和分組計(jì)算查詢。查詢功能實(shí)現(xiàn)計(jì)算查詢和分組計(jì)算查詢。 v (3 3)用)用SELECTSELECT命令進(jìn)行多表的連接查詢。命令進(jìn)行多表的連接查詢。 v (4 4)用嵌套查詢構(gòu)造復(fù)雜的查詢。)用嵌套查詢構(gòu)造復(fù)雜的查詢。 2021-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v5.3.1 5.3.1 操作步驟操作步驟 v1 1用簡單查詢實(shí)現(xiàn)表中部分列和記錄的顯示。用簡單查詢實(shí)現(xiàn)表中部分列和記錄的顯示。 v(1 1)查詢?nèi)w學(xué)生的學(xué)號(hào)和姓名。)查詢?nèi)w學(xué)生的學(xué)號(hào)和姓名。 v在命令窗口中鍵入下列命令:在命令窗口中鍵入下列命令: vSELE

59、CT SELECT 學(xué)號(hào)學(xué)號(hào), ,姓名姓名 FROM studentFROM student v(2 2)查詢?nèi)w學(xué)生的姓名和年齡。)查詢?nèi)w學(xué)生的姓名和年齡。 v由于表中沒有直接的年齡字段,因此可以在由于表中沒有直接的年齡字段,因此可以在SQLSQL查查 詢命令中運(yùn)用表達(dá)式來實(shí)現(xiàn)。在命令窗口中鍵入詢命令中運(yùn)用表達(dá)式來實(shí)現(xiàn)。在命令窗口中鍵入 下列命令:下列命令: vSELECT SELECT 姓名姓名,year(2003-09-01)-year(,year(2003-09-01)-year(出生日出生日 期期) as ) as 年齡年齡 FROM studentFROM student 202

60、1-7-4 數(shù)據(jù)庫系統(tǒng)及應(yīng)用數(shù)據(jù)庫系統(tǒng)及應(yīng)用 第5章 結(jié)構(gòu)化查詢語言SQL v (3 3)查詢學(xué)校的院系名稱。)查詢學(xué)校的院系名稱。 v 由于通過學(xué)生表可以看到學(xué)校的院系名單,但是會(huì)出現(xiàn)院由于通過學(xué)生表可以看到學(xué)校的院系名單,但是會(huì)出現(xiàn)院 系名重復(fù),因此用系名重復(fù),因此用DISTINCTDISTINCT子句去掉重復(fù)。命令如下:子句去掉重復(fù)。命令如下: v SELECT SELECT 院系院系 DISTINCT FROM studentDISTINCT FROM student v (4 4)查找入學(xué)成績在)查找入學(xué)成績在460460分至分至500500分之間的學(xué)生信息,并分之間的學(xué)生信息,并

溫馨提示

  • 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)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論