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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論