SELECT查詢語(yǔ)句-內(nèi)外連接_第1頁(yè)
SELECT查詢語(yǔ)句-內(nèi)外連接_第2頁(yè)
SELECT查詢語(yǔ)句-內(nèi)外連接_第3頁(yè)
SELECT查詢語(yǔ)句-內(nèi)外連接_第4頁(yè)
SELECT查詢語(yǔ)句-內(nèi)外連接_第5頁(yè)
已閱讀5頁(yè),還剩71頁(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、-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 20051Lecture 5 基本SELECT查詢語(yǔ)句 -目標(biāo)要求:掌握使用數(shù)據(jù)定義(DDL)定義數(shù)據(jù)庫(kù)、數(shù)據(jù)表等對(duì)象。熟練掌握簡(jiǎn)單查詢、嵌套查詢、連接查詢、分組與計(jì)算查詢、集合的并運(yùn)算。-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 20052結(jié)構(gòu)化查詢語(yǔ)言結(jié)構(gòu)化查詢語(yǔ)言(SQL) 結(jié)構(gòu)化查詢語(yǔ)言結(jié)構(gòu)化查詢語(yǔ)言:一種數(shù)據(jù)庫(kù)查詢和編程語(yǔ)言,廣泛應(yīng)用于訪問(wèn)、查詢、更新和管理關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)。- SQL 全名是結(jié)構(gòu)化查

2、詢語(yǔ)言結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language),是用于數(shù)據(jù)庫(kù)中的標(biāo)準(zhǔn)數(shù)據(jù)查詢語(yǔ)言,IBM 公司最早使用在其開(kāi)發(fā)的數(shù)據(jù)庫(kù)系統(tǒng)中。1986年10月,美國(guó) ANSI 對(duì) SQL 進(jìn)行規(guī)范后,以此作為關(guān)系型數(shù)據(jù)庫(kù)管理關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言,1987年得到國(guó)際標(biāo)準(zhǔn)組織國(guó)際標(biāo)準(zhǔn)組織的支持下成為國(guó)際標(biāo)準(zhǔn)。- SQL語(yǔ)言包含3個(gè)部分: 數(shù)據(jù)定義(DDL)語(yǔ)言(如CREATE, DROP,ALTER等語(yǔ)句) 數(shù)據(jù)操縱(DML)語(yǔ)言(SELECT,INSERT, UPDATE, DELETE語(yǔ)句) 數(shù)據(jù)控制語(yǔ)言(如GRANT,REVOKE, ROLLBACK等語(yǔ)句) -江陰

3、職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 20053數(shù)據(jù)定義語(yǔ)言 數(shù)據(jù)定義語(yǔ)言數(shù)據(jù)定義語(yǔ)言 (Data Definition Language, DDL) 是SQL語(yǔ)言集中,負(fù)責(zé)數(shù)據(jù)結(jié)構(gòu)定義與數(shù)據(jù)庫(kù)對(duì)象定義的語(yǔ)言,由CREATE、ALTER與DROP三個(gè)語(yǔ)法所組成。-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 20054CREATE指令 CREATE是負(fù)責(zé)數(shù)據(jù)庫(kù)對(duì)象的建立是負(fù)責(zé)數(shù)據(jù)庫(kù)對(duì)象的建立 CREATE DATABASE CREATE TABLE CREATE

4、INDEX:創(chuàng)建數(shù)據(jù)表索引。 CREATE PROCEDURE:創(chuàng)建存儲(chǔ)過(guò)程。 CREATE FUNCTION:創(chuàng)建用戶自定義函數(shù)。 CREATE VIEW:創(chuàng)建視圖。 CREATE TRIGGER:創(chuàng)建觸發(fā)器。 -江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 20055ALTER指令 ALTER ALTER 是負(fù)責(zé)數(shù)據(jù)庫(kù)對(duì)象修改的指令,例如: ALTER TABLE Tb_Student ADD column_b VARCHAR(20) NULL ; - 在數(shù)據(jù)表 Tb_Student中加入一個(gè)新的字段,名稱為 column_b

5、,字段類型為 varchar(20),允許 NULL值。 ALTER TABLE Tb_Student DROP COLUMN column_b ; - 在數(shù)據(jù)表 Tb_Student中移除 column_b 字段。 -江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 20056DROP指令 DROP DROP 則是刪除數(shù)據(jù)庫(kù)對(duì)象的指令,并且只需要指定要?jiǎng)h除的數(shù)據(jù)庫(kù)對(duì)象名稱即可,在 DDL 語(yǔ)法中算是最簡(jiǎn)單的。 例如: DROP TABLE MyTable; - 刪除 MyTable 數(shù)據(jù)表。 DROP VIEW MyView; -

6、刪除 MyView 視圖。 -江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 20057數(shù)據(jù)操縱語(yǔ)言 數(shù)據(jù)操縱語(yǔ)言數(shù)據(jù)操縱語(yǔ)言 (Data Manipulation Language) 是SQL語(yǔ)言中,負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)對(duì)象執(zhí)行數(shù)據(jù)存取工作的指令集,以SELECT、INSERT、UPDATE、DELETE四種指令為核心。 DML的主要功能即是存取數(shù)據(jù),因此其語(yǔ)法都是以讀取與寫入數(shù)據(jù)庫(kù)為主,除了INSERT以外,其他三種指令都可能需搭配WHERE指令來(lái)過(guò)濾數(shù)據(jù)范圍,或是不加WHERE指令來(lái)存取全部的數(shù)據(jù)。-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技

7、術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 20058INSERT指令 INSERT 是將數(shù)據(jù)插入到數(shù)據(jù)庫(kù)對(duì)象中的指令,可以插入數(shù)據(jù)的數(shù)據(jù)庫(kù)對(duì)象有數(shù)據(jù)表以及可更新視圖兩種。 基本格式有: INSERT INTO 數(shù)據(jù)表或可更新視圖名稱 (字段1,字段2,字段3, .) VALUES (值1, 值2, 值3, .) - 只需要根據(jù)對(duì)應(yīng)的字段來(lái)設(shè)定插入值。 INSERT INTO 數(shù)據(jù)表或可更新視圖名稱 VALUES (值1, 值2, 值3, .) - 必須要指定所有字段的插入值。 例如: INSERT INTO MyTable (字段1,字段2,字段3,字段4,字

8、段5) VALUES (1, 2, 3, 4, 5)-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 20059UPDATE 指令 UPDATE 指令是依給定條件,將符合條件的數(shù)據(jù)表中的數(shù)據(jù)更新為新的數(shù)值,其基本格式為: UPDATE 數(shù)據(jù)表或可更新視圖名稱 SET 字段1=值1,字段2=值2,字段3=值3, . WHERE 指定條件 例如: UPDATE MyTable SET 字段1 = 3,字段2 = 5, 字段4 = 5 WHERE 字段3 = 198273 -江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-

9、16Microsoft SQL Server 200510DELETE 指令 DELETE 指令從數(shù)據(jù)庫(kù)對(duì)象中刪除數(shù)據(jù)的指令,基本語(yǔ)法為: DELETE FROM 數(shù)據(jù)表或可更新視圖名稱 WHERE 給定條件 例如: DELETE FROM MyTable WHERE 字段3 = 1918299 值為字符時(shí),加西文單引號(hào)。-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200511數(shù)據(jù)控制語(yǔ)言 數(shù)據(jù)控制語(yǔ)言數(shù)據(jù)控制語(yǔ)言 (Data Control Language) 在SQL語(yǔ)言中,是一種可對(duì)數(shù)據(jù)存取權(quán)進(jìn)行控制的指令,它可以控制特

10、定用戶對(duì)數(shù)據(jù)表、視圖、存儲(chǔ)過(guò)程、用戶自定義函數(shù)等數(shù)據(jù)庫(kù)對(duì)象的控制權(quán)。由 GRANT 和 REVOKE 兩個(gè)指令組成。 GRANT 的語(yǔ)法結(jié)構(gòu)為: GRANT 權(quán)限 ON 要授予權(quán)限的數(shù)據(jù)庫(kù)對(duì)象 TO 用戶 WITH 授權(quán)選項(xiàng) DENY 的語(yǔ)法結(jié)構(gòu)為: DENY 權(quán)限 ON 要拒絕權(quán)限的數(shù)據(jù)庫(kù)對(duì)象 TO 用戶 權(quán)限可以是INSERTUPDATE等,參見(jiàn)教材p230-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200512Select 查詢-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQ

11、L Server 200513簡(jiǎn)單Select 查詢 語(yǔ)法: SELECT 字段1,字段2, FROM 表名 SELECT * FROM 表名 SELECT 字段1,字段2, FROM 表名 WHERE 查詢條件 SELECT * FROM 表名 WHERE 查詢條件 簡(jiǎn)單的Transact-SQL查詢只包括選擇列表、FROM子句和WHERE子句。它們分別說(shuō)明所查詢列、查詢的表或視圖、以及搜索條件等。 -江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200514簡(jiǎn)單Select 查詢SELECT StuId,StuName,Dep

12、tId,Sex FROM Tb_StudentSELECT * FROM Tb_Student-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200515簡(jiǎn)單Select 查詢SELECT StuId,StuName,DeptId,Sex FROM Tb_Student WHERE Sex=FSELECT * FROM Tb_Teacher WHERE Sex=F and DeptId= 08 -江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200516WHERE子句

13、使用的運(yùn)算符類別類別運(yùn)算符運(yùn)算符說(shuō)明說(shuō)明比較運(yùn)算符=、=、=、比較兩個(gè)表達(dá)式邏輯運(yùn)算符AND、OR、NOT組合兩個(gè)表達(dá)式的運(yùn)算結(jié)果或取反范圍運(yùn)算符BETWEEN、NOT BETWEEN查詢值是否在范圍內(nèi)列表運(yùn)算符IN、NOT IN查詢值是否屬于列表值之一字符匹配符LIKE、NOT LIKE字符串是否匹配未知值IS NULL、IS NOT NULL查詢值是否為NULL-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200517比較運(yùn)算符和表達(dá)式 運(yùn)運(yùn) 算算 符符含含 義義=等于大于=大于等于=小于等于不等于SELECT * FROM

14、 Tb_Student WHERE StuName張三SELECT * FROM Tb_Student WHERE Sex= F-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200518邏輯運(yùn)算符和表達(dá)式 運(yùn)算符運(yùn)算符含含 義義AND如果兩個(gè)布爾表達(dá)式都為 TRUE,那么就為 TRUEOR如果兩個(gè)布爾表達(dá)式中的一個(gè)為 TRUE,那么就為 TRUENOT對(duì)任何其他布爾運(yùn)算符的值取反SELECT * FROM Tb_Student WHERE Sex= M and Sex= FSELECT * FROM Tb_Student WHE

15、RE ClassId= S040201101 and Sex= FSELECT * FROM Tb_Student WHERE NOT Sex= M-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200519范圍搜索運(yùn)算符和表達(dá)式 SELECT * FROM Tb_Student WHERE Age BETWEEN 20 TO 22-SELECT * FROM Tb_Student WHERE Age NOT BETWEEN 20 TO 22-SELECT * FROM Tb_Student WHERE Age IN (20,21

16、,22)-相當(dāng)于 SELECT * FROM Tb_Student WHERE Age=20 OR Age=21 OR Age=22類別類別運(yùn)算符運(yùn)算符說(shuō)明說(shuō)明范圍運(yùn)算符BETWEEN、NOT BETWEEN查詢值在范圍內(nèi)列表運(yùn)算符IN、NOT IN查詢值屬于列表值之一-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200520模式匹配運(yùn)算符和表達(dá)式 SELECT * FROM Tb_Student WHERE StuName LIKE 張%通配符通配符說(shuō)明說(shuō)明示例示例%匹配零個(gè)或多個(gè)字符的任意字符串。LIKE %林% 姓名中包含

17、有“林”的信息。_下劃線匹配任何單個(gè)字符。一個(gè)漢字只使用一個(gè)_表示LIKE 林_ 姓名第一個(gè)字為“林”并且名字只有兩個(gè)字。 匹配指定范圍 (a-f) 或集合(abcdef) 中的任何單個(gè)字符。LIKE 張王% 姓張或姓王的信息。匹配不屬于指定范圍 (a-f) 或集合 (abcdef) 中的任何單個(gè)字符。LIKE 王林% 姓王且第二個(gè)字不是林的信息。SELECT * FROM Tb_Student WHERE StuName NOT LIKE 張三-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200521未知值條件 NULL表示未

18、知的,不可用或?qū)⒃谝院筇砑拥臄?shù)據(jù)。NULL值與零、零長(zhǎng)度的字符串的含義不同。 在WHERE子句中,使用IS NULL或IS NOT NULL條件可以查詢某一數(shù)據(jù)值是否為NULL的數(shù)據(jù)信息。 例如:SELECT * FROM Tb_Grade WHERE RetestScore IS NOT NULLSELECT * FROM Tb_CourseWHERE CourseName IS NULL-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200522字符串運(yùn)算符和表達(dá)式 字符串表達(dá)式是用字符串連接符()將字符型常量、變量、字符串函

19、數(shù)連接組成的式子。字符串表達(dá)式的計(jì)算結(jié)果包括兩個(gè)字符串內(nèi)的空格和所有字符,仍然是字符型。 如 我愛(ài)+ 我家 表達(dá)式的值為: 我愛(ài) 我家 - 例如:Beijing+ Huanying + Ning! 請(qǐng)寫出結(jié)果!-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200523運(yùn)算符的優(yōu)先級(jí) 運(yùn)算符的優(yōu)先級(jí)決定了表達(dá)式的計(jì)算和比較操作順序。運(yùn)算符的優(yōu)先級(jí)由高到低的順序?yàn)椋?1)括號(hào):()。 2)正、負(fù)或取反運(yùn)算:+、-、。 3)乘、除、求模運(yùn)算:*、/、。 4)加、減、字符連接運(yùn)算:+、-、+。 5)比較運(yùn)算:、!、!、!。 6)位運(yùn)算位

20、運(yùn)算:、|。 7)邏輯非運(yùn)算:NOT。 8)邏輯與運(yùn)算:AND。 9) BETWEEN、IN、LIKE、OR等運(yùn)算。 10)賦值運(yùn)算:。-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200524ORDER BY子句 使用SELECT語(yǔ)句進(jìn)行數(shù)據(jù)查詢,為了按一定順序?yàn)g覽數(shù)據(jù),可以使用ORDER BY子句對(duì)生成的查詢結(jié)果進(jìn)行排序。ORDER BY子句在SELECT語(yǔ)句中的語(yǔ)法格式如下:- SELECT 字段1,字段2, FROM 表名 WHERE 查詢條件 ORDER BY 排序表達(dá)式 ASC | DESC-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系

21、江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200525ORDER BY子句SELECT StuId,StuName,Sex FROM Tb_Student WHERE DeptId=08 ORDER BY StuNameSELECT StuId,StuName,Sex FROM Tb_Student WHERE DeptId=08 ORDER BY StuName DESC-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200526ORDER BY子句SELECT StuId,StuNa

22、me,Sex FROM Tb_Student WHERE DeptId=08 ORDER BY StuName,Sex 結(jié)果如何?-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200527 ORDER BY子句 ORDER BY子句總是位于WHERE子句(如果有的話)后面,可以包含一個(gè)或多個(gè)列,每個(gè)列之間以逗號(hào)分隔。這些列可能是表中定義的列,也可能是SELECT子句中定義的計(jì)算列。 - 在SQL Server 2005中,漢字比其它字符值都要大,而漢字之間的大小比較是取決于其拼音首字母的大小。 如果沒(méi)有特別說(shuō)明,值是以升序序列進(jìn)

23、行排序的。當(dāng)然,你也可以選擇使用ASC關(guān)鍵字指定升序排序。 - 如果你希望以降序排列,則在ORDER BY后面使用DESC關(guān)鍵字。 -江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200528GROUP BY 子句 使用SELECT語(yǔ)句進(jìn)行數(shù)據(jù)查詢,為了按特定條件分組瀏覽數(shù)據(jù),可以使用GROUP BY子句對(duì)某一列數(shù)據(jù)的值進(jìn)行分類,形成結(jié)果集。GROUP BY子句在SELECT語(yǔ)句中的語(yǔ)法格式如下:- SELECT 字段1,字段2, FROM 表名 WHERE 查詢條件 GROUP BY 字段1,字段2, WITH ROLLUP |

24、 CUBE ORDER BY 排序表達(dá)式 ASC | DESC- CUBE 生成的結(jié)果集顯示了所選列中值的所有組合(包括顯示了所選列中值的所有組合(包括字段1、字段2、字段1+字段2)的分組統(tǒng)計(jì)結(jié)果和總的匯總統(tǒng)計(jì)的聚合;ROLLUP生成的結(jié)果集顯示了所選列中值的某一層次結(jié)構(gòu)某一層次結(jié)構(gòu)的聚合。(包括(包括字段1、字段1+字段2的分組統(tǒng)計(jì)結(jié)果和總的匯總統(tǒng)計(jì)的聚合)-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200529聚合函數(shù) 聚合函數(shù)是SQL語(yǔ)言中一種特殊的函數(shù),比如SUM, COUNT, MAX, MIN, AVG等。這些函

25、數(shù)和其它函數(shù)的根本區(qū)別就是它們一般作用在多條記錄上。換句話說(shuō),上面幾個(gè)返函數(shù)的值建立在對(duì)多條記錄進(jìn)行統(tǒng)計(jì)的基礎(chǔ)上。 SUM是求和函數(shù)。 SELECT ClassId,SUM(Score) FROM Tb_Grade WHERE ClassId=S0408011 COUNT函數(shù)用來(lái)計(jì)算記錄的數(shù)量。 Select COUNT(StuID) FROM Tb_Grade WHERE ClassId=S0408011 MAX, MIN, AVG函數(shù)分別是用來(lái)求最大值、最小值和平均值。 SELECT MAX(Score), MIN(Score), AVG(Score) FROM Tb_Grade WHER

26、E ClassId=S0408011-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200530GROUP BY 子句 常用統(tǒng)計(jì)函數(shù)函數(shù)名功能COUNT求組中項(xiàng)數(shù)SUM求和,返回表達(dá)式中所有值的和AVG求均值,返回表達(dá)式中所有值的平均值MAX求最大值,返回表達(dá)式中所有值的最大值MIN求最小值,返回表達(dá)式中所有值的最小值A(chǔ)BS求絕對(duì)值,返回表達(dá)式的絕對(duì)值A(chǔ)SCII求ASCII碼,返回字符型數(shù)據(jù)的ASCIIRAND產(chǎn)生隨機(jī)數(shù),返回一個(gè)位于0和1之間的隨機(jī)數(shù)-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Micro

27、soft SQL Server 200531GROUP BY子句-顯示每個(gè)學(xué)生的班級(jí)編碼和成績(jī)SELECT ClassId,TotalScore FROM Tb_Grade-匯總每個(gè)班級(jí)的平均成績(jī)SELECT ClassId,AVG(TotalScore)FROM Tb_GradeGROUP BY ClassId-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200532-SELECT ClassId,ClassName,AVG(TotalScore)FROM Tb_Grade,Tb_ClassGROUP BY ClassIdGR

28、OUP BY子句-匯總每個(gè)班級(jí)(含班級(jí)名稱)的平均成績(jī)?SELECT ClassId,ClassName,AVG(TotalScore)FROM Tb_GradeGROUP BY ClassId-SELECT Tb_Grade.ClassId,ClassName,AVG(TotalScore)FROM Tb_Grade,Tb_ClassWHERE Tb_Grade.ClassId=Tb_Class.ClassIdGROUP BY Tb_Grade.ClassId-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200533GROUP

29、 BY子句 -顯示班級(jí)名稱的匯總各班平均成績(jī)顯示班級(jí)名稱的匯總各班平均成績(jī) SELECT ClassId,ClassName,AVG(TotalScore) AS AvgScore FROM Tb_Grade,Tb_Class WHERE ClassId=ClassId GROUP BY ClassId,ClassName當(dāng)兩個(gè)表中都有ClassId字段時(shí),要加上表前綴,說(shuō)明是那個(gè)表的ClassId字段SELECT列表中出現(xiàn)的字段都必須要在GROUP BY列表中出現(xiàn),聚合函數(shù)字段除外當(dāng)要顯示相關(guān)主鍵表中的其它字段時(shí),如這兒的ClassName字段,則在WHERE子句中通過(guò)主外鍵關(guān)系進(jìn)行連接-江

30、陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200534GROUP BY 子句 查詢各個(gè)班級(jí)的最大成績(jī)和最小成績(jī)? SELECT Tb_Grade.ClassId,ClassName,MAX(TotalScore) AS MaxScore, MIN(TotalScore) AS MinScore FROM Tb_Grade,Tb_Class WHERE Tb_Grade.ClassId=Tb_Class.ClassId GROUP BY Tb_Grade.ClassId,ClassName-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院

31、計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200535GROUP BY 子句 GROUP BY分類匯總,分項(xiàng)統(tǒng)計(jì) 緊跟在GROUP BY后面的字段就是分組條件。 如果在前面選擇列表中出現(xiàn)的非聚合字段未出現(xiàn)在GROUP BY后面,SQL語(yǔ)句就會(huì)出錯(cuò)。思考題: 按照不同班級(jí)和性別統(tǒng)計(jì)學(xué)生平均年齡。 -江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200536HAVING子句 HAVING子句相當(dāng)于一個(gè)用于組(分類匯總)的WHERE子句,它指定了組或聚合的查詢條件。HAVING子句通常與GROUP BY子句一

32、起使用。HAVING子句的語(yǔ)法為:- SELECT 字段1,字段2, FROM 表名 WHERE 查詢條件 GROUP BY字段1,字段2, HAVING 組查詢條件-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200537HAVING子句 顯示各班級(jí)學(xué)生平均總成績(jī)大于顯示各班級(jí)學(xué)生平均總成績(jī)大于73的班級(jí)編號(hào)。的班級(jí)編號(hào)。 SELECT Tb_Grade.ClassId, AVG(TotalScore) AS AvgScore FROM Tb_Grade GROUP BY Tb_Grade.ClassId HAVING AVG

33、(TotalScore)73-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200538HAVING子句 求各個(gè)班級(jí)的最大成績(jī)和最小成績(jī),且最低成績(jī)小于50分的? SELECT Tb_Grade.ClassId, MAX(TotalScore) AS MaxScore, MIN(TotalScore) AS MinScore FROM Tb_Grade GROUP BY Tb_Grade.ClassId HAVING MIN(TotalScore)50-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Micro

34、soft SQL Server 200539HAVING子句 HAVING子句用來(lái)對(duì)分組后的數(shù)據(jù)進(jìn)行篩選,它后面會(huì)跟一個(gè)條件表達(dá)式。 當(dāng)在GROUP BY 子句中使用HAVING子句時(shí),查詢結(jié)果中只返回滿足HAVING條件的組。-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200540SELECT語(yǔ)法總結(jié) SELECT select_list FROM table_list WHERE search_conditions GROUP BY group_by_list HAVING search_conditions ORDER

35、BY order_list ASC | DESC 上述“ ”表示可選項(xiàng),“ | ”表示取其中之一。-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200541計(jì)算列 SELECT后面還可以是計(jì)算列。在SELECT后面的計(jì)算列,只是位于該SELECT語(yǔ)句中,是臨時(shí)性的,它由一個(gè)表達(dá)式產(chǎn)生。 SELECT StuId, StuName+(+Sex+) FROM Tb_Student 上面語(yǔ)句中的StuName+(+Sex+)就構(gòu)成了一個(gè)計(jì)算列,它的值由兩個(gè)字符型值和一對(duì)括號(hào)連接組成。 -江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系

36、-2022-3-16Microsoft SQL Server 200542列別名 在上面的結(jié)果集中,列名都是英文。這樣看上去很不直觀,我們希望能夠給列名換上諸如“學(xué)號(hào)、姓名”等這樣的名字。只需在SELECT語(yǔ)句中,給列取個(gè)別名即可。AS可以省去??梢允∪?。 SELECT StuId AS 學(xué)號(hào), StuName+ (+Sex+) AS 姓名性別 FROM Tb_Student SELECT StuId 學(xué)號(hào), StuName+ (+Sex+) 姓名性別 FROM Tb_Student SELECT 學(xué)號(hào)=StuId,姓名性別=StuName+(+Sex+) FROM Tb_Student-江陰

37、職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200543 當(dāng)然,我們也可以給表指定列別名,給表取別名和給列取別名類似,但只可以用 “原始表名原始表名 AS 別名別名”和和 “原始表名原始表名 別名別名”這兩種方式。 SELECT * FROM Tb_Student ST 或者 SELECT * FROM Tb_Student AS ST- 字段別名不能放在WHERE子句中,而表別名可以放在WHERE子句中。 表別名-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 2005

38、44多表查詢-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200545 查詢?nèi)焊飨挡繐碛邪嗉?jí)的基本情況,顯示系部名稱、班級(jí)編碼和班級(jí)名稱; 多表查詢-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200546 USE Teaching_System GO SELECT d.*, c.* FROM Tb_Class AS c, Tb_Dept AS d 多表查詢-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Serv

39、er 200547 笛卡爾乘積多表查詢-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200548多表查詢-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200549多表查詢-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200550 USE Teaching_System GO SELECT d.*, c.* FROM Tb_Class AS c, Tb_Dept AS d WHERE c.DeptId

40、=d.DeptId多表查詢-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200551多表查詢 SELECT StuId,StuName,DeptId,SpecId,ClassId,Sex FROM Tb_Student SELECT StuId 學(xué)號(hào),StuName 姓名,DeptId 系部,SpecId 專業(yè),ClassId 班級(jí),Sex 性別 FROM Tb_Student-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200552兩表連接 SELECT Stu

41、Id 學(xué)號(hào),StuName 姓名,DeptName 系部, SpecId 專業(yè),ClassId 班級(jí),Sex 性別 FROM Tb_Student TS,Tb_Dept TD WHERE TS.DeptId=TD.DeptId-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200553多表連接基礎(chǔ) 在實(shí)際查詢應(yīng)用中,用戶所需要的數(shù)據(jù)并不全部在一個(gè)表中,這時(shí)就需要多表查詢,從多個(gè)表中抽取我們所需要的數(shù)據(jù)信息。 多表查詢實(shí)際上是通過(guò)各個(gè)表之間的共同列通過(guò)各個(gè)表之間的共同列的相關(guān)性(主外鍵關(guān)系)來(lái)查詢數(shù)據(jù)的,這是關(guān)系數(shù)據(jù)庫(kù)查詢數(shù)據(jù)的主要

42、特征。 多表查詢首先要用WHERE子句在表之間建立連接關(guān)系。 在進(jìn)行多表查詢時(shí),可以遵循以下基本原則基本原則: (1)SELECT子句列表中,字段前要加上基表名稱; (2)FROM子句應(yīng)包括所有使用的基表; (3)WHERE子句應(yīng)在表之間建立連接關(guān)系。-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200554兩表連接 SELECT StuId 學(xué)號(hào),StuName 姓名,DeptId 系部編碼, DeptName 系部, SpecId 專業(yè),ClassId 班級(jí),Sex 性別 FROM Tb_Student TS,Tb_Dept

43、 TD WHERE TS.DeptId=TD.DeptId SELECT StuId 學(xué)號(hào),StuName 姓名, TS.DeptId 系部編碼, DeptName 系部, SpecId 專業(yè),ClassId 班級(jí),Sex 性別 FROM Tb_Student TS,Tb_Dept TD WHERE TS.DeptId=TD.DeptId-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200555多表連接 SELECT StuId 學(xué)號(hào),StuName 姓名,DeptName 系部, SpecName 專業(yè),ClassName 班

44、級(jí),Sex 性別 FROM Tb_Student TS,Tb_Dept TD,Tb_Spec TSP, Tb_Class TC WHERE TS.DeptId=TD.DeptId AND TS.SpecId=TSP.SpecId AND TS.ClassId=TC.ClassId要求顯示學(xué)生姓名和所在系名、專業(yè)、班級(jí)名稱?-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200556各種連接查詢 內(nèi)連接內(nèi)連接:內(nèi)連接是一種常用的數(shù)據(jù)連接查詢方式。它使用比較運(yùn)算符進(jìn)行多個(gè)表之間的比較連接操作。內(nèi)連接會(huì)消除與另一個(gè)表的任何不匹配的數(shù)據(jù)行

45、。 外連接外連接:外連接會(huì)返回FROM子句中提到的至少一個(gè)表的所有符合查詢條件的數(shù)據(jù)行(包括連接中不匹配的數(shù)據(jù)行),外連接分為左外連接左外連接、右右外連接外連接和完全連接完全連接。 交叉連接交叉連接:當(dāng)對(duì)兩個(gè)表使用交叉連接查詢時(shí),將返回來(lái)自這兩個(gè)表的各行的所有可能的數(shù)據(jù)行組合。 自連接自連接:表自身的鏈接參見(jiàn)教材p119。-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200557兩個(gè)樣例表 SELECT * FROM Tb_Dept SELECT ClassId,ClassName,DeptId FROM Tb_Class-江陰

46、職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200558內(nèi)連接 SELECT DeptName 系部名稱, ClassId 班級(jí)編碼, ClassName 班級(jí)名稱 FROM Tb_Dept INNER JOIN Tb_Class ON Tb_Class.DeptId=Tb_Dept.DeptId等同于:等同于: SELECT DeptName 系部名稱, ClassId 班級(jí)編碼, ClassName 班級(jí)名稱 FROM Tb_Class,Tb_Dept WHERE Tb_Dept.DeptId=Tb_Class.DeptId-江

47、陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200559外連接-左外連接 SELECT DeptName 系部名稱, ClassId 班級(jí)編碼, ClassName 班級(jí)名稱 FROM Tb_Dept LEFT OUTER JOIN Tb_Class ON Tb_Dept.DeptId=Tb_Class.DeptId 左邊表中列全顯示-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200560外連接-右外連接 SELECT DeptName 系部名稱, ClassId

48、 班級(jí)編碼, ClassName 班級(jí)名稱 FROM Tb_Dept RIGHT OUTER JOIN Tb_Class ON Tb_Dept.DeptId=Tb_Class.DeptId 右邊表中列全顯示-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200561外連接-完全連接 SELECT DeptName 系部名稱, ClassId 班級(jí)編碼, ClassName 班級(jí)名稱 FROM Tb_Dept FULL OUTER JOIN Tb_Class ON Tb_Dept.DeptId=Tb_Class.DeptId-江陰職

49、業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200562交叉連接 SELECT DeptName 系部名稱, ClassId 班級(jí)編碼, ClassName 班級(jí)名稱 FROM Tb_Dept CROSS JOIN Tb_Class-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200563交叉連接不使用WHERE子句時(shí),返回的結(jié)果是一個(gè)基本表中符合條件的行數(shù)乘以另一個(gè)基本表中符合條件的行數(shù)。使用WHERE子句時(shí),返回的結(jié)果是被連接的兩個(gè)基本表所有行的笛卡爾積中滿足WHE

50、RE條件的所有行的行數(shù)。參見(jiàn)教材p118-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200564聯(lián)合查詢(UNION) 如果有多個(gè)不同的查詢結(jié)果,但又希望將這些查詢結(jié)果放在一起顯示,組成一組數(shù)據(jù)。在這種情況下,可以使用UNION子句。使用UNION子句的查詢又稱為聯(lián)合查詢,它可以將兩個(gè)和多個(gè)查詢結(jié)果集組合成為單個(gè)結(jié)果集。語(yǔ)法如下: SELECT select_list FROM table_list WHERE search_conditions UNION ALL SELECT select_list FROM table_

51、list WHERE search_conditions 其中,ALL關(guān)鍵字為可選的,如果在UNION子句中使用該關(guān)鍵字,則返回全部數(shù)據(jù)行;如果不使用該關(guān)鍵字,則返回結(jié)果中刪除重復(fù)數(shù)據(jù)行。-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200565聯(lián)合查詢(UNION) SELECT * FROM Tb_Spec WHERE SpecId08 UNION SELECT StuId,StuName,Sex FROM Tb_Student WHERE ClassIdS0408011-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2

52、022-3-16Microsoft SQL Server 200566章節(jié)綜合練習(xí) 每個(gè)學(xué)年結(jié)束,班主任都要對(duì)班級(jí)學(xué)生成績(jī)進(jìn)行分析,然后初定學(xué)年獎(jiǎng)學(xué)金獲得者的人選。讓我們運(yùn)用數(shù)據(jù)庫(kù)查詢的知識(shí)幫助04網(wǎng)絡(luò)1班的班主任劉老師完成以下兩個(gè)任務(wù):根據(jù)學(xué)院獎(jiǎng)學(xué)金評(píng)選規(guī)定,初定獲獎(jiǎng)學(xué)金學(xué)生名單;(每位同學(xué)的課程平均成績(jī)必須高于75分)對(duì)該班級(jí)開(kāi)設(shè)的各門課程分別進(jìn)行成績(jī)分析。顯示課程編號(hào)、學(xué)生學(xué)號(hào)和成績(jī)的明細(xì)并分別匯總每門課程的平均成績(jī)。 -江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200567章節(jié)綜合練習(xí)-江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系江陰職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系-2022-3-16Microsoft SQL Server 200568任務(wù)一 USE Teaching_System GO SELECT StuId 學(xué)號(hào), AVG(TotalScore) AS 平均成績(jī) FROM

溫馨提示

  • 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)論