VB結(jié)構(gòu)化查詢(xún)語(yǔ)言——SQL語(yǔ)句_第1頁(yè)
VB結(jié)構(gòu)化查詢(xún)語(yǔ)言——SQL語(yǔ)句_第2頁(yè)
VB結(jié)構(gòu)化查詢(xún)語(yǔ)言——SQL語(yǔ)句_第3頁(yè)
VB結(jié)構(gòu)化查詢(xún)語(yǔ)言——SQL語(yǔ)句_第4頁(yè)
VB結(jié)構(gòu)化查詢(xún)語(yǔ)言——SQL語(yǔ)句_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第四章 結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL,掌握數(shù)據(jù)模式的建立和刪除的命令格式與作用; 掌握基本表結(jié)構(gòu)的建立、修改與刪除的命令格式與作用; 掌握基本表內(nèi)容的插入、修改與刪除的命令格式與作用; 掌握視圖的建立、修改與刪除的命令格式與作用; 熟練掌握查詢(xún)語(yǔ)句的格式與各個(gè)選項(xiàng)的作用,能夠按照查詢(xún)要求寫(xiě)出相應(yīng)的查詢(xún)語(yǔ)句。,SQL語(yǔ)言的功能: SQL是結(jié)構(gòu)化查詢(xún)語(yǔ)言(Structured Query Language)的縮寫(xiě),具有數(shù)據(jù)定義(DDL)、數(shù)據(jù)操縱(DML)和數(shù)據(jù)控制(DCL)、數(shù)據(jù)查詢(xún)四個(gè)部分。,SQL數(shù)據(jù)定義功能:能夠定義數(shù)據(jù)庫(kù)的三級(jí)模式結(jié)構(gòu),即外模式、全局模式和內(nèi)模式結(jié)構(gòu)。在SQL中,外模式有叫做視圖

2、(View),全局模式簡(jiǎn)稱(chēng)模式(Schema)或數(shù)據(jù)庫(kù)(Database),內(nèi)模式由系統(tǒng)根據(jù)數(shù)據(jù)庫(kù)模式自動(dòng)實(shí)現(xiàn),一般無(wú)需用戶(hù)過(guò)問(wèn)。,基本表(表)、屬性(字段)、元組(行)的概念,SQL數(shù)據(jù)操縱功能:包括對(duì)基本表和視圖的數(shù)據(jù)查詢(xún)、插入、刪除和修改,特別是具有很強(qiáng)的數(shù)據(jù)查詢(xún)功能。,SQL的數(shù)據(jù)控制功能:主要是對(duì)用戶(hù)的訪(fǎng)問(wèn)權(quán)限加以控制,以保證系統(tǒng)的安全性。,SQL,視圖V1,視圖V2,基本表B4,基本表B3,基本表B2,基本表B1,外模式,模式,存儲(chǔ)模式,SQL支持的數(shù)據(jù)庫(kù)的體系結(jié)構(gòu),一、數(shù)據(jù)庫(kù)模式的建立和刪除 1、建立數(shù)據(jù)庫(kù)模式 語(yǔ)句格式: CREATESCHEMA|DATABASE AUTHOR

3、IZATION 語(yǔ)句功能: 在計(jì)算機(jī)系統(tǒng)中建立一個(gè)只有名字的空數(shù)據(jù)庫(kù),并定義出它的所有者名。,語(yǔ)句舉例: (1)create schema xuesh authorization 劉勇 (2) create database 數(shù)據(jù)庫(kù),2、刪除數(shù)據(jù)庫(kù)模式 語(yǔ)句格式: DROP SCHEMA|DATABASE 數(shù)據(jù)庫(kù)名 語(yǔ)句功能: 從計(jì)算機(jī)系統(tǒng)中刪除(撤銷(xiāo))一個(gè)數(shù)據(jù)庫(kù)。當(dāng)然會(huì)同時(shí)把該庫(kù)中的所有信息一并刪除掉。 語(yǔ)句舉例: drop database xuesh,二、表結(jié)構(gòu)的建立、修改和刪除 1、建立表結(jié)構(gòu) 語(yǔ)句格式: CREATE TABLE . (,,) 語(yǔ)句功能:在當(dāng)前或給定的數(shù)據(jù)庫(kù)中定義一個(gè)

4、表的結(jié)構(gòu)(即關(guān)系模式)。,語(yǔ)句說(shuō)明: a.若省略和則在當(dāng)前數(shù)據(jù)庫(kù)中建立一個(gè)表,否則在指定數(shù)據(jù)庫(kù)中建立一個(gè)表。使用戶(hù)給所定義的表所起的名字??梢栽谝粋€(gè)表定義中出現(xiàn)一次或多次,每個(gè)包括列名 (即屬性名)、相應(yīng)數(shù)據(jù)類(lèi)型和該列的完整性約束等內(nèi)容。在所有列定義之后可以給出表級(jí)完整性約束。,b.可使用的數(shù)據(jù)類(lèi)型主要有以下四種: char(n) 定長(zhǎng)字符型 int 整型 float 浮點(diǎn)型,又稱(chēng)實(shí)數(shù)型 date 日期型,c.列級(jí)完整性約束有以下六種: 1.DEFAULT 默認(rèn)值約束。 2.NULL/NOT NULL 空值/非空值約束。注明每行上的該列值為空。 3.PRIMARY KEY 主碼約束。注明該列為

5、關(guān)系的主碼。 4.UNIQUE單值約束,又稱(chēng)唯一值約束。必須不相同,d.表級(jí)完整性約束包括以下四種: 1. PRIMARY KEY (,)主碼約束。注明一列或同時(shí)多個(gè)列為關(guān)系的主碼。 2. UNIQUE單值約束。一個(gè)或同時(shí)若干個(gè)列為單值。 3.FOREIGN KEY () REFERENCES (,) 外碼約束。 4.CHECK () 檢查約束。,5.REFERENCES ()外碼約束。 6.CHECK () 檢查約束。注明該列的取值條件,或稱(chēng)取值限制。,注:若只涉及到一個(gè)列時(shí),則既可以作為列級(jí)完整性約束,又可以作為表級(jí)完整性約束,當(dāng)然只取其一。,語(yǔ)句舉例: (1) create table

6、學(xué)生 ( 學(xué)生號(hào) char(7) primary key, 姓名 char(6) not null unique, 性別 char(2) not null chech(性別=男 or 性別=女), 出生日期 datetime check(出生日期=1 and 年級(jí)=4) ),(2) Create table 課程( 課程號(hào) char(4) primary key, 課程名 char(10) not null unique, 課程學(xué)分 int check (課程學(xué)分=1 and 課程學(xué)分=6) ),Create table 選課 ( 學(xué)生號(hào) char(7), 課程號(hào) char(4), 成績(jī) in

7、t check (成績(jī)=0 and 成績(jī)=100), primary key (學(xué)生號(hào),課程號(hào)), foreign key (學(xué)生號(hào)) references 學(xué)生 (學(xué)生號(hào)), foreign key (課程號(hào)) references 課程 (課程號(hào)) ),三、表內(nèi)容的插入、修改和刪除 1、插入記錄 向一個(gè)表中插入記錄有兩種語(yǔ)句格式,一種是單行插入,另一種是多行插入。 單行插入: 格式 :INSERT INTO . (,)VALUES 多行插入: 格式:INSERT (INTO) . (,) 語(yǔ)句功能: 向一個(gè)表中所指定的若干列插入一行或多行數(shù)據(jù)。 注意:當(dāng)列值為字符串或日期時(shí),必須用單引號(hào)括

8、起來(lái),以區(qū)別于數(shù)值數(shù)據(jù)。 語(yǔ)句舉例:p79,2、修改表結(jié)構(gòu) 語(yǔ)句格式: ALTER TABLE . ADD , |DROP COLUMN ,|DROP , 語(yǔ)句功能: 向已定義過(guò)的表中添加一些列的定義或一些表級(jí)完整性約束,或者從已定義過(guò)的表中刪除一些列或一些完整性約束。 舉例: (1)alter table 學(xué)生 add 籍貫 char(6) (2) alter table 學(xué)生 drop column 籍貫,3、刪除表結(jié)構(gòu) 語(yǔ)句格式: DROP TABLE . 語(yǔ)句功能:從當(dāng)前或給定的數(shù)據(jù)庫(kù)中刪除一個(gè)表。 舉例:drop table 學(xué)生1,2、修改記錄 語(yǔ)句格式: UPDATE . SET

9、 =, FROM,WHERE 語(yǔ)句功能: 按條件修改一個(gè)表中一些列的值、 語(yǔ)句舉例: (1) update 職工 set 年齡=年齡+1 (2) Update 職工 set 基本工資=職工1.基本工資+職工1.職務(wù)津貼 from 職工1 where 職工.職工號(hào)=職工1.職工號(hào) (3) Update 職工 set 基本工資=基本工資*1.2 where 職工號(hào)=010405,3、刪除記錄 語(yǔ)句格式: DELETE FROM . FROM,WHERE ,語(yǔ)句功能:刪除一個(gè)表中滿(mǎn)足條件的所有行 語(yǔ)句舉例: (1) delete from 職工 where 年齡45 (2) Delete 職工 fr

10、om 職工1 where 職工.職工號(hào)=職工1.職工號(hào) (3) Delete 職工,四、視圖的建立、修改和刪除 視圖是在基本表之上建立的表,它的結(jié)構(gòu)(即所有列定義)和內(nèi)容(即所有數(shù)據(jù)行)都來(lái)自基本表,它依據(jù)基本表存在而存在。每個(gè)視圖的列可以來(lái)自同一個(gè)基本表,也可以來(lái)自多個(gè)不同的基本表。它是基本表的抽象和在邏輯意義上建立的新關(guān)系。對(duì)視圖只能進(jìn)行修改和查詢(xún)操作。,1、建立視圖 語(yǔ)句格式: CREATE VIEW (,) AS 功能:在當(dāng)前庫(kù)中根據(jù)SELECT子局的查詢(xún)結(jié)果建立一個(gè)視圖,包括視圖的結(jié)構(gòu)和內(nèi)容。,語(yǔ)句舉例: create view 成績(jī)視圖表(學(xué)生號(hào),姓名,課程號(hào),課程名,成績(jī)) as

11、 select 選課.學(xué)生號(hào),姓名,選課.課程號(hào),課程名,成績(jī) from 學(xué)號(hào),課程,選課 where 學(xué)生.學(xué)生號(hào)=選課.學(xué)生號(hào) and 課程.課程號(hào)=選課.課程號(hào) and 專(zhuān)業(yè)=電子,2、修改視圖內(nèi)容 語(yǔ)句格式: UPDATE . SET =, FROM,WHERE 語(yǔ)句功能: 按照一定條件對(duì)當(dāng)前或指定數(shù)據(jù)庫(kù)中的一些列值進(jìn)行修改。 語(yǔ)句舉例: update 成績(jī)視圖表 set 成績(jī)=80 where 學(xué)生號(hào)=0102005 and 課程號(hào)=E002,3、修改視圖定義: 語(yǔ)句格式: ALTER VIEW (,) AS 語(yǔ)句功能: 在當(dāng)前數(shù)據(jù)庫(kù)中修改已知視圖的列,它與SELECT子句的查詢(xún)結(jié)果

12、相對(duì)應(yīng)。 語(yǔ)句舉例: Create view 學(xué)生視圖 (學(xué)生號(hào),姓名) as select 學(xué)生號(hào),姓名 from 學(xué)生 Alter view 學(xué)生視圖 (學(xué)生號(hào),專(zhuān)業(yè)) as select 學(xué)生號(hào),專(zhuān)業(yè) from 學(xué)生,4、刪除視圖 語(yǔ)句格式: DROP VIEW 語(yǔ)句功能:刪除當(dāng)前數(shù)據(jù)庫(kù)中一個(gè)視圖。 語(yǔ)句舉例: drop view 成績(jī)視圖表,五、SQL查詢(xún) 1、SELECT語(yǔ)句 格式: SELECT ALL|DISTINCT AS , |*| .*| INTO FROM AS , AS WHERE GROUP BY , HAVING ORDER BY ASC|DESC,ASC|DESC

13、 功能: 根據(jù)一個(gè)或多個(gè)表按條件進(jìn)行查詢(xún),產(chǎn)生出一個(gè)新表(即查詢(xún)結(jié)果),該新表被顯示出來(lái)或者被命名保存起來(lái)。,語(yǔ)句說(shuō)明: a. Select選項(xiàng)給處在查詢(xún)結(jié)果中每一行(即每一條記錄)所包含的列,以及決定是否允許在查詢(xún)結(jié)果中出現(xiàn)重復(fù)行(即內(nèi)容完全相同的記錄); b. into 選項(xiàng)決定是否把查詢(xún)結(jié)果以基本表的形式保存起來(lái),若需要?jiǎng)t應(yīng)帶有該選項(xiàng); c. from選項(xiàng)提供用于查詢(xún)的基本表和視圖,它們均可以帶有表別名,稱(chēng)這些表為源表,而把查詢(xún)結(jié)果稱(chēng)為目的表; d. where 選項(xiàng)用來(lái)指定不同源表之間記錄的連接條件和每個(gè)源表中記錄的篩選(選擇)條件,只有滿(mǎn)足所給連接條件和篩選條件的記錄才能被寫(xiě)入到目的

14、表中; e. group by 選項(xiàng)用于使查詢(xún)結(jié)果只包含按指定列的值進(jìn)行分組的統(tǒng)計(jì)信息; f. having 子句通常同group by 選項(xiàng)一起使用,篩選出符合條件的分組統(tǒng)計(jì)信息; g. order by 選項(xiàng)用于將查詢(xún)結(jié)果按指定列值的升序或降序排序。 在查詢(xún)語(yǔ)句中,通過(guò)select 選項(xiàng)實(shí)現(xiàn)投影運(yùn)算,通過(guò)from選項(xiàng)和where選項(xiàng)是實(shí)現(xiàn)連接和選擇運(yùn)算(在SQL新版本中,用from 選項(xiàng)專(zhuān)門(mén)實(shí)現(xiàn)連接運(yùn)算,用where 選項(xiàng)專(zhuān)門(mén)實(shí)現(xiàn)選擇運(yùn)算),2、SELECT 選項(xiàng) 在該選項(xiàng)中,ALL/DISTING為任選項(xiàng),若選擇ALL,則允許在查詢(xún)結(jié)果中出現(xiàn)內(nèi)容重復(fù)的行(記錄),若選擇DISTINCT,

15、則在查詢(xún)結(jié)果中不允許出現(xiàn)內(nèi)容重復(fù)的行,即只有內(nèi)容互不相同的記錄才能被寫(xiě)入到查詢(xún)結(jié)果中,若省略該選項(xiàng),則隱含為ALL.,應(yīng)用舉例:P89 例4-14-10,3、FROM選項(xiàng) 例4-11,4、WHERE選項(xiàng) 例4-124-16,SPK1(商品代號(hào) C(8),分類(lèi)名 C(6),單價(jià) N(8,2),數(shù)量 N(3),一、簡(jiǎn)單查詢(xún),例1 從SPK1中查詢(xún)出每個(gè)記錄的分類(lèi)名字段的值。,SELECT ALL 分類(lèi)名 FROM SPK1,例2 從SPK1中查詢(xún)出所有商品的不同分類(lèi)名。,SELECT DISTINCT 分類(lèi)名 FROM SPK1,練習(xí):1、從SPK1中查詢(xún)出單價(jià)低于2000元的商品代號(hào)、分類(lèi)名和單

16、價(jià)。 2、從SPK1中查詢(xún)出單價(jià)在1000元至2500元之間的所有商品。,例3 從SPK1中查詢(xún)出分類(lèi)名為“電視機(jī)”的所有商品,SELECT *; FROM SPK1; WHERE 分類(lèi)名=“電視機(jī)”,用AS指出字段別名:,例4 從SPK1中查詢(xún)出每一種商品的最高價(jià)值、最低價(jià)值。,SELECT MAX(單價(jià)*數(shù)量)AS 最高價(jià)值,MIN(單價(jià)*數(shù)量)AS 最低價(jià)值; FROM SPK1,在SQL-SELECT命令中,使用的字段函數(shù)有: COUNT(字段名|*) 統(tǒng)計(jì)出對(duì)應(yīng)字段的個(gè)數(shù),它也就是相應(yīng)的記錄數(shù),通常使用*表示任一字段。 MAX(字段名) 求出最大值。 MIN(字段名) 求出最小值。

17、AVG(字段名) 求出對(duì)應(yīng)的數(shù)值字段的平均值。 SMU(字段名) 求出對(duì)應(yīng)的數(shù)值字段的總和。,SPK2(商品代號(hào)C(8),產(chǎn)地C(8),品牌C(8),練習(xí) 3、從SPK1中查詢(xún)出每一種商品的價(jià)值。 4、查詢(xún)出SPK1庫(kù)中分類(lèi)名為“電視機(jī)”的商品種數(shù)、最高價(jià)、最低價(jià)及平均價(jià)。,練習(xí)題答案: 1、SELECT 商品代號(hào),分類(lèi)名,單價(jià); FROM SPK1; WHERE 單價(jià)1000 AND 單價(jià)2500 3、SELECT 商品代號(hào),單價(jià)*數(shù)量 AS 價(jià)值; FROM SPK1 4、SELECT 分類(lèi)名,COUNT(*) AS 種數(shù); MAX(單價(jià))AS 最高價(jià),MIN(單價(jià))AS 最低價(jià); AVG

18、(單價(jià))AS 平均價(jià); FROM SPK1; WHERE 分類(lèi)名=“電視機(jī)”,SELECT 商品代號(hào),品牌; FROM SPK2; WHERE 產(chǎn)地 IN (南京,北京),例 查找SPK1中所有商品中數(shù)量大于10的分類(lèi)號(hào)及單價(jià),并把單價(jià)按降續(xù)排序。,用ORDER BY 對(duì)查詢(xún)結(jié)果排序,在WHERE中使用謂詞 IN,例 查找SPK2中產(chǎn)地是南京或北京的商品的商品代號(hào)、品牌。,SELECT 分類(lèi)號(hào),單價(jià); FROM SPK1; WHERE 數(shù)量=10; ORDER BY 單價(jià) DESC,在WHERE中BETWEENAND和NOT BETWEEND 使用,例 從SPK1中查詢(xún)出單價(jià)在1000元至25

19、00元之間的所有商品。,SELECT 商品代號(hào),分類(lèi)名,單價(jià); FROM SPK1; WHERE 單價(jià) BETWEEN 1000 2500,例4-11 從教學(xué)庫(kù)中查詢(xún)出每個(gè)學(xué)生選修每門(mén)課程的學(xué)生號(hào)、姓名、課程號(hào)、課程名、成績(jī)等數(shù)據(jù),Select x.學(xué)生號(hào),姓名,y.課程號(hào),課程名,成績(jī) From 學(xué)生 x,課程 y,選課 z Where x.學(xué)生號(hào)=z.學(xué)生號(hào) and y.課程號(hào)=z.課程號(hào),例4-12 從商品表1種查詢(xún)出單價(jià)大于1500,同時(shí)數(shù)量大于等于10的商品。,Select * From 商品表1 Where 單價(jià)=1500 and 數(shù)量=10,例13 從商品庫(kù)中查詢(xún)出產(chǎn)地為南京或無(wú)

20、錫的所有商品的商品代號(hào)、分類(lèi)名、產(chǎn)地和品牌。,Select x.商品代號(hào),分類(lèi)名,產(chǎn)地,品牌 From 商品表1 x,商品表2 y Where x.商品代號(hào)=y.商品代號(hào) and (產(chǎn)地=南京 or 產(chǎn)地=無(wú)錫),例 14 從教學(xué)庫(kù)中查詢(xún)出選修至少兩門(mén)課程的學(xué)生學(xué)號(hào)。,Select distinct x.學(xué)號(hào) From 選課 x,選課 y Where x.學(xué)生號(hào)=y.學(xué)生號(hào) and x.課程號(hào)y.課程號(hào),例 15 從教學(xué)庫(kù)中查詢(xún)出選修了課程名為“操作系統(tǒng)”課程每個(gè)學(xué)生的姓名。,Select 姓名,課程 From 學(xué)生 x,課程 y,選課 z Where x.學(xué)生號(hào)=z.學(xué)生號(hào) and y.課程

21、號(hào)=z.課程號(hào) and 課程名=操作系統(tǒng),注意:在新版的SQL中,為了使查詢(xún)語(yǔ)句更加結(jié)構(gòu)化,已經(jīng)把查詢(xún)連接條件從WHERE選項(xiàng)中轉(zhuǎn)移到FROM選項(xiàng)中,并且還豐富了連接的功能,除了上述介紹的一般連接(在新版本中稱(chēng)作中間連接)外,還增加了左連接和右連接的功能。在FROM選相中的相應(yīng)語(yǔ)法格式分別為:,中間連接 FROM INNER JOIN ON . . 左連接 FROM LEFT JOIN ON . . 右連接 FROM RIGHT JOIN ON . .,每一種連接都隱含著雙重循環(huán)的執(zhí)行過(guò)程: 對(duì)于中間連接,外循環(huán)依次掃描第一個(gè)表中的每個(gè)元組,內(nèi)循環(huán)依次掃描第二個(gè)表中的每個(gè)元組,當(dāng)滿(mǎn)足連接條件時(shí)

22、就連接起來(lái)形成中間表中的一個(gè)新元組; 對(duì)于左連接,除了按中間連接形成中間表中的新元組外,還把第一個(gè)表中的沒(méi)有形成連接的所有元組也加入到中間表中,這些元組在第二個(gè)表上所對(duì)應(yīng)的列值被自動(dòng)置為空; 對(duì)于右連接,除了按中間連接形成中間表中的新元組外,還把第二個(gè)表中的沒(méi)有形成連接的所有元組也加入到中間表中,這些元組在第一個(gè)表上所對(duì)應(yīng)的列值被自動(dòng)置為空。 完成連接后,查詢(xún)語(yǔ)句再根據(jù)WHERE選項(xiàng)中提供的篩選條件從中間表中選擇出元組,然后再根據(jù)SELECT選項(xiàng)投影出所需要的列形成結(jié)果表。,例 16.a 從教學(xué)庫(kù)中查詢(xún)出所有學(xué)生的選課情況,要求沒(méi)選修任何課程的學(xué)生信息也要反映出來(lái),Select * From

23、學(xué)生 left join 選課 on 學(xué)生.學(xué)生號(hào)=選課.學(xué)生號(hào),例 16.b 從學(xué)生庫(kù)中查詢(xún)出所有課程被學(xué)生選修的情況,Select * From 課程 left join (選課 inner join 學(xué)生 on 選修.學(xué)生號(hào)=選課.學(xué)生號(hào)) on 課程.課程號(hào)=選課.課程號(hào),例 16.c 從教學(xué)庫(kù)中查詢(xún)出所有電子專(zhuān)業(yè)的學(xué)生選課的全部情況,Select * From 學(xué)生 inner join (選課 inner join 課程 on 選課.課程號(hào)=課程.課程號(hào)) on 學(xué)生.學(xué)生號(hào)=選課.學(xué)生號(hào) Where 專(zhuān)業(yè)=電子 (與傳統(tǒng)查詢(xún)語(yǔ)句等效),用于查詢(xún)語(yǔ)句中的專(zhuān)門(mén)比較式又叫判斷式,它實(shí)現(xiàn)

24、單值與集合數(shù)據(jù)之間的比較。常用的有以下六種格式。,格式1: ALL () 功能:是一條完整的SELECT語(yǔ)句,被嵌套在該比較式中使用。當(dāng)?shù)牟樵?xún)結(jié)果中的每一個(gè)值都滿(mǎn)足所給的比較條件時(shí),此比較式的值才為真,否則為假。,例 17 從商品表1中查詢(xún)出單價(jià)比分類(lèi)名為“洗衣機(jī)”的所有商品的單價(jià)都高的商品。,Select * From 商品表1 Where 單價(jià)all (select 單價(jià) from 商品表1 where 分類(lèi)名=“洗衣機(jī)”,例 18 查詢(xún)出數(shù)量小于分類(lèi)名為“洗衣機(jī)”或“微波爐”的每一個(gè)商品數(shù)量的所有元組(包括 產(chǎn)地和品牌),Select x.*,產(chǎn)地,品牌 From 商品表1 x inne

25、r join 商品表2 y on x.商品代號(hào)=y.商品代號(hào) Where 數(shù)量all (select 數(shù)量 from 商品表1 where 分類(lèi)名=洗衣機(jī) or 分類(lèi)名=微波爐),格式2 ANY|SOME(),當(dāng)子查詢(xún)的查詢(xún)結(jié)果中的任一個(gè)值滿(mǎn)足所給的比較條件時(shí),此比較式為真,否則為假。該格式中的兩個(gè)關(guān)鍵字ANY和SOME具有同樣的作用,選用任一個(gè)即可。,例 19 從商品庫(kù)中查詢(xún)出產(chǎn)地與品牌為“春蘭”的商品的產(chǎn)地相同的所有商品的商品代號(hào)、分類(lèi)名、品牌、產(chǎn)地等屬性的值,Select x.商品代號(hào),分類(lèi)名,品牌,產(chǎn)地 From 商品表1 x inner join 商品表2 x on x.商品代號(hào)=y

26、.商品代號(hào) Where 產(chǎn)地=some (select 產(chǎn)地 from 商品表2 where 品牌=春蘭),例 20 從教學(xué)庫(kù)中查詢(xún)出選修了課程名為“C+語(yǔ)言”的所有學(xué)生的姓名和成績(jī)。,第一種方法:使用單重查詢(xún)語(yǔ)句處理 select 姓名,成績(jī) from 學(xué)生 x,課程 y,選課 z where x.學(xué)生號(hào)=z.學(xué)生號(hào) and y.課程號(hào)=z.課程號(hào),第二種方法:使用雙重查詢(xún)語(yǔ)句處理 select 姓名,成績(jī) from 學(xué)生 inner join 選課 on 學(xué)生.學(xué)生號(hào)=選課.學(xué)生號(hào) where 課程號(hào)=some(select 課程號(hào)from 課程=C+語(yǔ)言 ),例 21 從商品庫(kù)中查詢(xún)出所

27、有商品中單價(jià)最高的商品和單價(jià)最低的商品,Select * From 商品表1 Where 單價(jià)=any(select max(單價(jià)) from 商品表1) or 單價(jià)=any(select min(單價(jià)) from 商品表1),或:select * from 商品表1 where 單價(jià)=any(select max(單價(jià)) from 商品表1 union select min(單價(jià)) from 商品表1),格式3: NOT BETWEEN AND ,例 22 從商品表1中查詢(xún)出單價(jià)在1000到2000元之間的所有商品,Select * From 商品表1 Where 單價(jià) between 10

28、00 and 2000,格式4: EXISTS (),當(dāng)子查詢(xún)結(jié)果中至少存在著一個(gè)元組時(shí),表明查詢(xún)結(jié)果非空,則此判斷式為真,否則為假。但當(dāng)判斷式中帶有NOT關(guān)鍵字時(shí),情況正好相反,即當(dāng)子查詢(xún)結(jié)果為空時(shí),判斷式為真,否則為假。,例 23 從教學(xué)庫(kù)中查詢(xún)出選修至少一門(mén)課程的所有學(xué)生,Select * From 學(xué)生 Where exists (select * from 選課 where 學(xué)生.學(xué)生號(hào)=選課.學(xué)生號(hào)),例 24 從教學(xué)庫(kù)中查詢(xún)出與姓名為“王明”的學(xué)生選課至少有一門(mén)相同的所有學(xué)生,Select * From 學(xué)生 x Where x.姓名王明 and exists (select y

29、.課程號(hào) from 選課 y where y.學(xué)生號(hào)=x.學(xué)生號(hào) and y.課程號(hào)=any(select w.課程號(hào) from 學(xué)生 z,選課 w where z.學(xué)生號(hào)=w.學(xué)生號(hào) and z.姓名=王明),格式5: NOT IN () | (),使用逗號(hào)分開(kāi)的若干個(gè)常量。當(dāng)所制定列的當(dāng)前值包括在由所給定的值之內(nèi)時(shí),則此判斷式為真,否則為假。,例 26 從學(xué)生表中查詢(xún)出專(zhuān)業(yè)為計(jì)算機(jī)、電氣、通信的所有學(xué)生。,Select * From 學(xué)生 Where 專(zhuān)業(yè) in (計(jì)算機(jī),電氣,通信),例 27 從教學(xué)庫(kù)中查詢(xún)出選修了課程名為“操作系統(tǒng)”的所有學(xué)生。,Select * From 學(xué)生 Wh

30、ere 學(xué)生號(hào) in (select 學(xué)生號(hào) from 選課,課程 where 選課.課程號(hào)=課程.課程號(hào) and 課程名=操作系統(tǒng)),格式6: NOT ,當(dāng)?shù)漠?dāng)前值與的值相匹配時(shí),此判斷時(shí)為真。,例 28 從商品表1中查詢(xún)出商品代號(hào)以字符串“dsj”開(kāi)頭的所有商品,Select * From 商品表1 Where 商品代號(hào) like dsj%,5、GROUP BY選項(xiàng) 該選項(xiàng)中的,等必須是出現(xiàn)在SELECT選項(xiàng)中的被投影的表達(dá)式所指定的列名。通常在SELECT選項(xiàng)中使用列函數(shù)對(duì)列值相同的每一組進(jìn)行有關(guān)統(tǒng)計(jì),例 29 從學(xué)生表中查詢(xún)出每個(gè)專(zhuān)業(yè)的學(xué)生數(shù),Select 專(zhuān)業(yè) 專(zhuān)業(yè)名,count(專(zhuān)

31、業(yè)) 學(xué)生數(shù) From 學(xué)生 Group by 專(zhuān)業(yè),例 30 從教學(xué)庫(kù)中查詢(xún)出每個(gè)學(xué)生的學(xué)生號(hào),姓名及所選課程的門(mén)數(shù),Select x.學(xué)生號(hào),姓名,count(x.學(xué)生號(hào)) 所選門(mén)數(shù) From 選課 x ,學(xué)生 y Where x.學(xué)生號(hào)=y.學(xué)生號(hào) Group by x.學(xué)生號(hào),y.姓名,例 31 從商品表1種查詢(xún)出每一類(lèi)(即分類(lèi)名相同)商品的最高價(jià)、最低價(jià)和平均價(jià)。,Select 分類(lèi)名,max(單價(jià)) as 最高價(jià),min(單價(jià)) as 最低價(jià),avg(單價(jià)) as 平均價(jià) From 商品表1 Group by 分類(lèi)名,6、HAVING 選項(xiàng) 該選項(xiàng)的是一個(gè)篩選條件。該選項(xiàng)通常跟在G

32、ROUP BY子句后面用來(lái)從分組統(tǒng)計(jì)中篩選出部分統(tǒng)計(jì)結(jié)果,因此該選項(xiàng)中的邏輯表達(dá)式通常帶有字段函數(shù),例 32 從學(xué)生表中查詢(xún)出專(zhuān)業(yè)的學(xué)生數(shù)多于1人的專(zhuān)業(yè)名及人數(shù),Select 專(zhuān)業(yè) as 專(zhuān)業(yè)名,count(專(zhuān)業(yè)) as 學(xué)生數(shù) From 學(xué)生 Group by 專(zhuān)業(yè) Having count(專(zhuān)業(yè))1,例 33 從教學(xué)庫(kù)中查詢(xún)出選修課程超過(guò)1門(mén)的學(xué)生。,Select * From 學(xué)生 Where 學(xué)生號(hào) in (select 學(xué)生號(hào) from 選課 group by 學(xué)生號(hào) having count(學(xué)生號(hào))1 ),例 34 從教學(xué)庫(kù)中查詢(xún)出選課門(mén)數(shù)超過(guò)學(xué)生號(hào)為0101001學(xué)生的選課門(mén)數(shù)

33、的所有學(xué)生。,Select * From 學(xué)生 Where 學(xué)生號(hào) in (select 學(xué)生號(hào) from 選課 group by 學(xué)生號(hào) having count(學(xué)生號(hào)) (select count(*) from 選課 where 學(xué)生號(hào)=0101001 ) ),7、ORDER BY 選項(xiàng),此選項(xiàng)中的,等是需要是查詢(xún)結(jié)果按其進(jìn)行排序的列。他們可以是原表中的列名,也可以是SELECT選項(xiàng)中所給表達(dá)式的順序號(hào)(即對(duì)應(yīng)查詢(xún)結(jié)果中的列號(hào))或定義的列名。若其后帶有ASC關(guān)鍵字,則將按值的升序排序查詢(xún)結(jié)果,若其后帶有DESC關(guān)鍵字,則將按值的降序排序查詢(xún)結(jié)果,若不指定排序方式,則默認(rèn)按升序排序。 注

34、意:該選項(xiàng)只能用在最外層的查詢(xún)語(yǔ)句中,不能在子查詢(xún)中使用。,例 35 從商品表中按單價(jià)升序查詢(xún)出所有商品記錄。,Select * From 商品表1 Order by 單價(jià),例 36 從商品表1中查詢(xún)出單價(jià)比平均單價(jià)高的所有商品,并使結(jié)果按降序排列。,Select * From 商品表1 Where 單價(jià)all (select avg(單價(jià)) from 商品表1) Order by 單價(jià) desc,例 37 從教學(xué)庫(kù)中查詢(xún)出所有學(xué)生的學(xué)號(hào)及所選課程的門(mén)數(shù),按門(mén)數(shù)升序排列結(jié)果,Select x.學(xué)生號(hào),count(x.學(xué)生號(hào)) as 選課門(mén)數(shù) From 學(xué)生 x,選課 y Where x.學(xué)生號(hào)=y.學(xué)生號(hào) Group by x.學(xué)生號(hào) Order by 選課門(mén)數(shù),例 38 從教學(xué)庫(kù)中查詢(xún)出所有學(xué)生的信息及所選課程的門(mén)數(shù),按門(mén)數(shù)升序排列結(jié)果。,Select x.*,count(x.學(xué)生號(hào)) as 選課門(mén)數(shù) From 學(xué)生 x,選課 y Where x.學(xué)生號(hào)=選

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論