SQL Server數(shù)據(jù)庫實踐教程 課件全套 王雪梅 01-12 緒論-數(shù)據(jù)庫安全_第1頁
SQL Server數(shù)據(jù)庫實踐教程 課件全套 王雪梅 01-12 緒論-數(shù)據(jù)庫安全_第2頁
SQL Server數(shù)據(jù)庫實踐教程 課件全套 王雪梅 01-12 緒論-數(shù)據(jù)庫安全_第3頁
SQL Server數(shù)據(jù)庫實踐教程 課件全套 王雪梅 01-12 緒論-數(shù)據(jù)庫安全_第4頁
SQL Server數(shù)據(jù)庫實踐教程 課件全套 王雪梅 01-12 緒論-數(shù)據(jù)庫安全_第5頁
已閱讀5頁,還剩227頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

SQLServer數(shù)據(jù)庫實踐課程介紹24學(xué)時、1.5學(xué)分

考查課

教材:《SQLServer數(shù)據(jù)庫實踐教程》

中國鐵道出版社2024.9出版上機(jī)軟件:SQLServer2008

MOOC:e會學(xué)MOOC《SQLServer數(shù)據(jù)庫實踐》(/)博思平臺MOOC:數(shù)據(jù)庫系統(tǒng)(安信工)智慧教學(xué)工具:云班課

+云教材《SQLServer數(shù)據(jù)庫實踐》ISBN978-7-113-30940-4記錄平時成績課程考核分值考核/評價細(xì)則100

出勤10%按照百分制,缺勤一次扣10分三次缺勤,該項考核分為0分測驗30%課后自測題+課堂測驗成績作業(yè)60%12個實驗報告,當(dāng)堂交問卷、投票等其他活動考查課,零基礎(chǔ)入門課程學(xué)習(xí)方法數(shù)據(jù)庫無處不在可以登錄教務(wù)系統(tǒng)多次查詢課表、查詢自己的成績。你的個人賬號、密碼、收貨地址、購物信息等存在哪里?動態(tài)網(wǎng)站的工作過程(以淘寶網(wǎng)為例)(客戶機(jī))瀏覽器進(jìn)程Web應(yīng)用服務(wù)器進(jìn)程LAN或WANWeb服務(wù)器進(jìn)程Web服務(wù)器Web應(yīng)用服務(wù)器/(瀏覽淘寶網(wǎng)為例)數(shù)據(jù)庫服務(wù)器進(jìn)程數(shù)據(jù)庫服務(wù)器ODBC數(shù)據(jù)庫數(shù)據(jù)庫的重要地位數(shù)據(jù)庫技術(shù)是所有信息系統(tǒng)的核心和基礎(chǔ)。chartGPT、訊飛星火大模型等AI模型都需要大量數(shù)據(jù)不管什么專業(yè)的學(xué)生,

都有必要學(xué)學(xué)數(shù)據(jù)庫知識數(shù)據(jù)庫的定義數(shù)據(jù)庫(Database,簡稱DB)是長期儲存在計算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)的集合。數(shù)據(jù)庫中存儲的基本對象是數(shù)據(jù)(Data)數(shù)據(jù)庫語言:SQL語言

(StructuredQueryLanguage結(jié)構(gòu)化查詢語言)操作練習(xí)實驗1

SSMS圖形界面創(chuàng)建數(shù)據(jù)庫和學(xué)生表快速了解數(shù)據(jù)庫實驗1SSMS圖形界面創(chuàng)建數(shù)據(jù)庫和學(xué)生表創(chuàng)建數(shù)據(jù)庫ST創(chuàng)建學(xué)生表SSMS簡稱SSMS操作演示課后作業(yè)完成云教材學(xué)習(xí)任務(wù)。SQLServer數(shù)據(jù)庫實踐14十二月2024回顧數(shù)據(jù)庫(Database,簡稱DB)是長期儲存在計算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)的集合。數(shù)據(jù)庫中存儲的基本對象是數(shù)據(jù)(Data)數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)是二維表格

實驗1

SSMS圖形界面創(chuàng)建數(shù)據(jù)庫和學(xué)生表

(已完成)數(shù)據(jù)類型說明char(n)固定長度字符型,長度為n個字節(jié),最多可存n個字符或n/2個漢字,n的取值范圍為1~8000,默認(rèn)長度1varchar(n)可變長度字符型,長度為n個字節(jié),n的取值范圍為1~8000,默認(rèn)長度1nchar(n)固定長度Unicode字符型,Unicode字符集對字符和漢字都采用雙字節(jié)存儲,最多可存n個字符或n個漢字,n的取值范圍為1~4000,默認(rèn)長度1nvarchar(n)可變長度Unicode字符型,n值在1~4000之間,默認(rèn)長度1text大量長度的字符型,最多達(dá)到231—1(2147483647)字節(jié)ntext大量長度的Unicode字符型,最多可存(231—1)∕2=(1073741823)個字符或漢字常用數(shù)據(jù)類型(附錄B)附表B-1字符類型常用數(shù)據(jù)類型(附錄B)附表B-2數(shù)字類型數(shù)據(jù)類型說明bigint-263(-1.8E19)~263-1(1.8E19)的整型數(shù),存儲長度為8個字節(jié)int-231(-2147483648)~231-1(2147483647)的整型數(shù),存儲長度為4個字節(jié)smallint-215(-32768)~215-1(32767)的整型數(shù),存儲長度為兩個字節(jié)tinyint0~255的整型數(shù),存儲長度為1個字節(jié)float浮點(diǎn)型,從–1.79E+308到1.79E+308,存儲長度為8個字節(jié)real浮點(diǎn)精度型,從–3.40E+38到3.40E+38,存儲長度為4個字節(jié)bit整數(shù)型,值為1或0,存儲長度為1位numeric(p,s)固定精度和小數(shù)的數(shù)字型,取值范圍從-1038+1到1038–1。p是總的數(shù)字位數(shù),取值范圍為1~38。s是小數(shù)位數(shù),取值范圍從0到p。numeric與decimal數(shù)據(jù)類型在功能上等效decimal(p,s)固定精度和小數(shù)的數(shù)字型,取值范圍從-1038+1~1038–1。p是總的數(shù)字位數(shù),取值范圍為1~38。s是小數(shù)位數(shù),取值范圍從0到p。存儲長度為19個字節(jié)常用數(shù)據(jù)類型(附錄B)附表B-3日期類型數(shù)據(jù)類型說明精度date日期型,4個字節(jié),無時間,1753年1月1日到9999年12月31日,SQLServer2008版新增的數(shù)據(jù)類型1天datetime日期時間型,8個字節(jié),1753年1月1日到9999年12月31日3.33毫秒smalldatetime日期時間型,4個字節(jié),1900年1月1日到2079年6月6日1分鐘time時間型,不存日期,只存時分秒,SQLServer2008版新增的數(shù)據(jù)類型1毫秒約束關(guān)系模型有三類完整性約束實體完整性(通過主鍵實現(xiàn))參照完整性(通過外鍵實現(xiàn))用戶自定義完整性(檢查約束、非空約束、唯一約束、默認(rèn)值等)

今日內(nèi)容:外鍵、聯(lián)合主鍵操作練習(xí)實驗2SSMS圖形界面管理數(shù)據(jù)庫和課程表、成績表實驗2SSMS圖形界面管理數(shù)據(jù)庫和課程表、成績表創(chuàng)建或附加ST數(shù)據(jù)庫創(chuàng)建表簡稱SSMS操作演示14十二月2024SQLServer數(shù)據(jù)庫實踐對數(shù)據(jù)庫有了初步認(rèn)識在圖形界面初步認(rèn)識了數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫創(chuàng)建表錄入數(shù)據(jù)現(xiàn)在開始學(xué)習(xí)使用代碼操作數(shù)據(jù)庫數(shù)據(jù)庫嵌在程序中使用(客戶機(jī))請求網(wǎng)頁瀏覽器進(jìn)程Web應(yīng)用服務(wù)器進(jìn)程LAN或WANWeb服務(wù)器進(jìn)程Web服務(wù)器Web應(yīng)用服務(wù)器/(瀏覽淘寶網(wǎng)為例)數(shù)據(jù)庫服務(wù)器進(jìn)程數(shù)據(jù)庫服務(wù)器ODBC①⑨返回頁面②發(fā)送到Web服務(wù)器③轉(zhuǎn)發(fā)動態(tài)頁面請求④連接數(shù)據(jù)庫驅(qū)動程序⑤執(zhí)行查詢操作⑥返回查詢結(jié)果到數(shù)據(jù)庫驅(qū)動程序⑦返回結(jié)果到Web應(yīng)用服務(wù)器⑧生成并將動態(tài)數(shù)據(jù)插入頁面,返回給Web服務(wù)器⑩接受網(wǎng)頁,解釋并顯示網(wǎng)頁內(nèi)容數(shù)據(jù)庫SQL語言SQL(StructuredQueryLanguage)結(jié)構(gòu)化查詢語言,是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言SQL是一個通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫語言層次模型樹形結(jié)構(gòu)網(wǎng)狀模型網(wǎng)狀結(jié)構(gòu)層次數(shù)據(jù)庫、網(wǎng)狀數(shù)據(jù)庫已經(jīng)淘汰目前使用的基本都是關(guān)系數(shù)據(jù)庫使用關(guān)系模型,數(shù)據(jù)結(jié)構(gòu)是二維表SQL結(jié)構(gòu)化查詢語言,NotonlyQuery

SQL語言數(shù)據(jù)查詢數(shù)據(jù)定義數(shù)據(jù)操縱(增、刪、改)數(shù)據(jù)安全控制事務(wù)處理SQL語言一般分四類數(shù)據(jù)定義語言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語言(DML,DataManipulationLanguage)數(shù)據(jù)查詢語言(DQL,DataQuery

Language)數(shù)據(jù)控制語言(DCL,DataControlLanguage)(+事務(wù))九個主要動詞數(shù)據(jù)定義操作對象操作方式數(shù)據(jù)庫createdatabasealterdatabasedropdatabase表createtablealtertabledroptable視圖createviewalterviewdropview

數(shù)據(jù)定義

三個動詞數(shù)據(jù)定義語言需要兩個關(guān)鍵字有特定含義的單詞create創(chuàng)建

alter修改drop刪除創(chuàng)建數(shù)據(jù)庫語法:CREATEDATABASE<數(shù)據(jù)庫名>[[ON[PRIMARY]]([NAME=<數(shù)據(jù)文件邏輯文件名>][,FILENAME=<'數(shù)據(jù)文件物理文件名'>][,SIZE=<數(shù)據(jù)文件初始大小>],[,MAXSIZE=<數(shù)據(jù)文件最大大小>][,FILEGROWTH<數(shù)據(jù)文件增長比例>][,…n])]

[LOGON([NAME=<日志文件邏輯文件名>][,FILENAME=<'日志文件物理文件名'>][,SIZE=<日志文件初始大小>],[,MAXSIZE=<日志文件最大大小>][,FILEGROWTH<日志文件增長比例>][,…n])]可選可選提示:

語法中的方括號[]表示可選項,非必需項創(chuàng)建數(shù)據(jù)庫【例題1】指定數(shù)據(jù)文件和日志文件屬性創(chuàng)建數(shù)據(jù)庫語句:CREATEDATABASEMyDBON(NAME=MyDB_data,

--數(shù)據(jù)文件邏輯名,半角逗號分隔FILENAME='C:\MyDB_data.mdf',--數(shù)據(jù)文件物理名,半角引號SIZE=10MB,

--數(shù)據(jù)文件初始大小MAXSIZE=UNLIMITED,

--數(shù)據(jù)文件最大設(shè)置FILEGROWTH=10%)

--數(shù)據(jù)文件增長方式,注意后面沒有逗號LOGON(NAME=MyDB_log,

--日志文件邏輯名

FILENAME='C:\MyDB_log.ldf',--日志文件物理名SIZE=3MB,

--日志文件初始大小MAXSIZE=5MB,

--日志文件最大設(shè)置

FILEGROWTH=1MB)

--日志文件增長方式,注意后面沒有逗號操作演示--后面是單行注釋,不執(zhí)行

創(chuàng)建數(shù)據(jù)庫

CREATEDATABASEMyDBON(NAME=MyDB_data,FILENAME='C:\MyDB_data.mdf',SIZE=10MB,MAXSIZE=UNLIMITED,FILEGROWTH=10%)

LOGON(NAME=MyDB_log,FILENAME='C:\MyDB_log.ldf',SIZE=3MB,MAXSIZE=5MB,

FILEGROWTH=1MB)

邏輯名NAME物理名FILENAME修改數(shù)據(jù)庫

語法ALTERDATABASE<數(shù)據(jù)庫名>{ADDFILE<數(shù)據(jù)文件參數(shù)>[,...n]|ADDLOGFILE<日志文件參數(shù)>[,...n]|REMOVEFILE數(shù)據(jù)文件邏輯名稱|ADDFILEGROUP文件組名|REMOVEFILEGROUP文件組名|MODIFYFILE<數(shù)據(jù)文件參數(shù)> |MODIFYNAME=新數(shù)據(jù)庫名 |SET<參數(shù)>/*數(shù)據(jù)庫參數(shù)設(shè)置*/}/**/中間是多行注釋,不執(zhí)行ALTERDATABASEMyDBADDFILE(NAME=MyDB_data2,FILENAME='C:\MyDB_data2.ndf',SIZE=10MB,MAXSIZE=2GB,FILEGROWTH=10%)

修改數(shù)據(jù)庫【例題2】增加數(shù)據(jù)文件次要數(shù)據(jù)文件擴(kuò)展名.NDF

修改數(shù)據(jù)庫【例題3】修改數(shù)據(jù)文件的增長方式ALTERDATABASE

MyDBMODIFYFILE(NAME=MyDB_data2,FILEGROWTH=15%)刪除數(shù)據(jù)庫語法:DROPDATABASE<數(shù)據(jù)庫名>提示:會丟失數(shù)據(jù),慎重使用刪除數(shù)據(jù)庫【例題4】刪除

MyDB數(shù)據(jù)庫語句:DROPDATABASE

MyDB打開數(shù)據(jù)庫

語法:

USE<數(shù)據(jù)庫名>

注意:

USE

DATABASE<數(shù)據(jù)庫名>

×

CREATEDATABASE<數(shù)據(jù)庫名>

ALTERDATABASE<數(shù)據(jù)庫名>

DROPDATABASE<數(shù)據(jù)庫名>

CREATETABLE<表名>

CREATEVIEW<視圖名>打開數(shù)據(jù)庫創(chuàng)建表

語法CREATETABLE<表名>(<列名><數(shù)據(jù)類型>[<列級完整性約束>][,<列名><數(shù)據(jù)類型>[<列級完整性約束>]]…[,<表級完整性約束>]);問題:數(shù)據(jù)類型都有哪些?

完整性約束有哪些?SQLServer中常用數(shù)據(jù)類型字符類型數(shù)據(jù)類型說明char[(n)]固定長度字符型,n的范圍:1~8000,默認(rèn)1字節(jié)varchar[(n)]可變長字符型,n的范圍:1~8000,默認(rèn)1字節(jié)nchar[(n)]固定長度Unicode字符型,每個字符都占2個字節(jié),n的范圍:1~4000,默認(rèn)1字節(jié)nvarchar[(n)]可變長度Unicode字符型,每個字符都占2個字節(jié),n的范圍:1~4000之間,默認(rèn)1字節(jié)text大長度字符型,最多231-1(2147483647)字節(jié)ntext大長度Unicode字符數(shù)據(jù),最多(231-1)∕2(1073741823)個字符SQLServer中常用數(shù)據(jù)類型數(shù)字類型數(shù)據(jù)類型說明bigint長整型,8個字節(jié),-263~263-1int整型,4個字節(jié),-231~231-1smallint短整型2個字節(jié),-215~215-1tinyint存儲長度為1個字節(jié)無符號整型,0~255float浮點(diǎn)型,8個字節(jié),–1.79E+308~1.79E+308real浮點(diǎn)型,4個字節(jié),–3.40E+38~3.40E+38bit二進(jìn)制整數(shù),1位值,為1或0numeric(p,s)固定精度和小數(shù)浮點(diǎn)型,取值范圍-1038+1~1038–1,p指定精度,取值范圍從1~38。s指小數(shù)位數(shù),取值范圍從0~pdecimal(p,s)decimal與numeric數(shù)據(jù)類型在功能上等效。SQLServer中常用數(shù)據(jù)類型日期類型數(shù)據(jù)類型說明精度date日期型,無時間,4個字節(jié),1753年1月1日~9999年12月31日1天datetime日期時間型,8個字節(jié),1753年1月1日~9999年12月31日3.33毫秒smalldatetime日期時間型,4個字節(jié),1900年1月1日~2079年6月6日1分鐘time時間型,不存日期,只存時分秒1毫秒SQLServer中常用數(shù)據(jù)類型貨幣類型數(shù)據(jù)類型說明money8個字節(jié),-263(-922,337,203,685,477.5808)~263-1(922,337,203,685,477.5807)smallmoney4個字節(jié),-231(-214,748.3648)~231-1(214,748.3647)完整性約束Primarykey:主鍵約束(唯一、不允許空)Foreignkeyreferences主鍵表(主鍵列):外鍵約束NULL|NOTNULL:非空約束(允許空|不允許空)Unique:唯一鍵約束Default(值):默認(rèn)值約束Check(完整表達(dá)式):檢查約束

完整性約束:保證數(shù)據(jù)完整性的一種方法,可以防止數(shù)據(jù)庫中輸入不符合語意規(guī)定、不正確的數(shù)據(jù)。創(chuàng)建基本表

語法CREATETABLE<表名>(<列名><數(shù)據(jù)類型>[<列級完整性約束>][,<列名><數(shù)據(jù)類型>[<列級完整性約束>]]…[,<表級完整性約束>]);

約束分為表級約束和列級約束

只涉及一列的約束可以定義列級,也可以定義表級。

涉及多列的約束必須定義為表級(如SC表聯(lián)合主鍵)。提示:語法中的方括號[]表示可選項,非必需項創(chuàng)建基本表[例3]建立“學(xué)生”表Student,學(xué)號是主碼。

CREATETABLEStudent(SnoINTNOTNULL

PRIMARYKEY,/*列級完整性約束*/

SnameVARCHAR(20),SsexCHAR(2),SageSMALLINT,SdeptVARCHAR(20))主鍵提示:數(shù)據(jù)庫中不區(qū)分大小寫創(chuàng)建基本表[例4]建立一個“課程”表CourseCREATETABLECourse(CnoINTNOTNULL

PRIMARYKEY,CnameVARCHAR(40)UNIQUE,/*唯一約束*/

CpnoINT, CcreditSMALLINT

);創(chuàng)建基本表[例5]建立一個“學(xué)生選課”表SCCREATETABLESC(SnoINTFOREIGNKEYREFERENCESStudent(Sno),CnoINT,GradeSMALLINT,

PRIMARYKEY(Sno,Cno),/*表級約束,聯(lián)合主鍵,兩個屬性構(gòu)成*/FOREIGNKEY(Cno)REFERENCESCourse(Cno)

/*表級約束,外鍵,Cno是外碼,被參照表是Course*/);修改基本表

語法:ALTERTABLE<表名>[ADD<新列名><數(shù)據(jù)類型>[完整性約束]][ADD<表級完整性約束>][DROP[COLUMN]<列名>[CASCADE|RESTRICT]][DROPCONSTRAINT<完整性約束名>[CASCADE|RESTRICT]][ALTERCOLUMN<列名><數(shù)據(jù)類型>];修改基本表

ALTERTABLEStudentADDS_entranceDATE;不論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值。

[例6]向Student表增加“入學(xué)時間”列,其數(shù)據(jù)類型為日期型。修改基本表[例7]將年齡的數(shù)據(jù)類型由字符型(假設(shè)原來的數(shù)據(jù)類型是字符型)改為整數(shù)。

ALTERTABLEStudentALTER

COLUMNSageINT;[例8]增加課程名稱必須取唯一值的約束條件。

ALTERTABLECourseADDUNIQUE(Cname);刪除基本表語法: DROPTABLE<表名>[例9]刪除Student表。

DROPTABLEStudent

操作練習(xí)實驗3數(shù)據(jù)定義

14十二月2024SQLServer數(shù)據(jù)庫實踐SQL語言一般分四類數(shù)據(jù)定義語言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語言(DML,DataManipulationLanguage)數(shù)據(jù)查詢語言(DQL,DataQuery

Language)數(shù)據(jù)控制語言(DCL,DataControlLanguage)(+事務(wù))創(chuàng)建數(shù)據(jù)庫

createdatabase創(chuàng)建表createtable插入數(shù)據(jù)兩種插入數(shù)據(jù)方式①插入元組②插入子查詢結(jié)果(后面再學(xué))插入數(shù)據(jù)插入元組語法:

INSERTINTO<表名>[(<屬性列1>[,<屬性列2>…)] VALUES(<常量1>[,<常量2>]…)可以一次插入一個或多個元組插入數(shù)據(jù)

[例1]將學(xué)生信息(學(xué)號:200215128;姓名:陳冬;性別:男;所在系:IS;年齡:18歲)插入到Student表中。問題:語法沒錯,語句是否一定能執(zhí)行成功?成功前提:不違反表中約束,符合域(屬性的取值范圍)的限制INSERTINTO

Student(Sno,Sname,Ssex,Sdept,Sage)

VALUES

(200215128,'陳冬','男','IS',18);插入數(shù)據(jù)語法:

INSERTINTO<表名>[(<屬性列1>[,<屬性列2>…)]VALUES(<常量1>[,<常量2>]…)INSERTINTO

StudentVALUES

(200215128,'陳冬','男',18,'IS');提示:字符型和日期型常量加單引號,數(shù)值型直接寫

插入數(shù)據(jù)INTO子句屬性列的順序可與表定義中的順序不一致沒有指定屬性列:表示要插入的是一條完整的元組,且屬性列與表中定義的順序一致指定部分屬性列:要插入的元組在其余屬性列上取空值或者不允許為空但有默認(rèn)值

VALUES子句提供的值必須與INTO子句匹配值的個數(shù)值的類型插入數(shù)據(jù)語法:

INSERTINTO<表名>[(<屬性列1>[,<屬性列2>…)]VALUES(<常量1>[,<常量2>]…)INSERTINTO

Student(Sno,Sname)VALUES

(200215128,'陳冬');插入數(shù)據(jù)

插入語句時會檢查自動所插元組是否破壞表上已定義的完整性規(guī)則實體完整性參照完整性用戶定義的完整性NOTNULL約束UNIQUE約束值域約束提示:語法沒錯,語句也不一定能執(zhí)行成功。成功前提:不違反表中約束,符合域(屬性的取值范圍)的限制修改數(shù)據(jù)修改數(shù)據(jù)語法

UPDATE<表名>SET<列名>=<表達(dá)式>[,<列名>=<表達(dá)式>]…[WHERE<條件>];修改數(shù)據(jù)修改數(shù)據(jù)三種方式:

修改某一個元組的值

修改多個元組的值

帶子查詢的修改語句(后面學(xué))修改數(shù)據(jù)修改一個元組的值[例2]將Student表中學(xué)號為200215121的學(xué)生年齡改為22歲

問題:如果沒有WHERE子句會怎么樣?

UPDATEStudentSETSage=22WHERESno=200215121;修改數(shù)據(jù)語法

UPDATE<表名>

SET<列名>=<表達(dá)式>[,<列名>=<表達(dá)式>]…[WHERE<條件>];修改數(shù)據(jù)修改多個元組的值[例3]將所有學(xué)生的年齡增加1歲

UPDATEStudentSETSage=Sage+1;修改數(shù)據(jù)語法

UPDATE<表名>

SET<列名>=<表達(dá)式>[,<列名>=<表達(dá)式>]…[WHERE<條件>];修改數(shù)據(jù)執(zhí)行修改語句時會檢查自動修改操作是否破壞表上已定義的完整性規(guī)則實體完整性參照完整性用戶定義的完整性

NOTNULL約束

UNIQUE約束值域約束刪除數(shù)據(jù)刪除數(shù)據(jù)語法

DELETE[FROM]<表名>[WHERE<條件>];4.數(shù)據(jù)更新:刪除數(shù)據(jù)三種刪除數(shù)據(jù)的方式:刪除某一個元組的值刪除多個元組的值帶子查詢的刪除語句(后面再學(xué))刪除數(shù)據(jù)[例4]刪除學(xué)號為200215128的學(xué)生記錄。問題1:如果沒有WHERE子句會怎么樣?問題2:語法沒錯是否一定能刪除成功?

DELETEFROMStudentWHERESno=200215128;刪除數(shù)據(jù)語法

DELETE[FROM]<表名>[WHERE<條件>];說明:刪除語句時會受外鍵(參照完整性)制約操作練習(xí)實驗4數(shù)據(jù)更新

14十二月2024SQLServer數(shù)據(jù)庫實踐SQL語言一般分四類數(shù)據(jù)定義語言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語言(DML,DataManipulationLanguage)數(shù)據(jù)查詢語言(DQL,DataQuery

Language)數(shù)據(jù)控制語言(DCL,DataControlLanguage)(+事務(wù))√√√√數(shù)據(jù)查詢語法SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]stuDB數(shù)據(jù)庫三張表數(shù)據(jù)查詢目錄1、單表查詢2、連接查詢3、嵌套查詢4、集合查詢5、基于派生表的查詢1、單表查詢單表查詢僅涉及一個表,又分為:選擇表中的若干列選擇表中的若干元組

ORDERBY排序子句聚集函數(shù)

GROUPBY分組子句①

選擇表中的若干列【例題5-1】查詢?nèi)w學(xué)生的姓名和民族。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]SELECTName,NationFROM

Student①

選擇表中的若干列【例題5-2】查詢?nèi)w學(xué)生的姓名、民族和性別。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]SELECTName,Nation,SexFROM

Student注意:列的順序①

選擇表中的若干列【例題5-3】查詢?nèi)w學(xué)生的詳細(xì)信息。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]SELECT

Sno,Name,Sex,Nation,Birthday

FROM

Student或者SELECT

*

FROM

Student習(xí)題1.查詢所有課程的課程名和學(xué)分2.查詢課程的所有信息查詢語法SELECT

<輸出列表>]…FROM數(shù)據(jù)源列表習(xí)題1.查詢所有課程的課程名和學(xué)分

selectcname,creditfromcourse2.查詢課程的所有信息查詢語法SELECT

<輸出列表>]…FROM數(shù)據(jù)源列表習(xí)題1.查詢所有課程的課程名和學(xué)分

selectcname,creditfromcourse2.查詢課程的所有信息

select*fromcourseselectCno,cname,hours,credit,Semesterfromcourse查詢語法SELECT

<輸出列表>]…FROM數(shù)據(jù)源列表①選擇表中的若干列查詢經(jīng)過計算的值SELECT子句的<輸出列表>可以為:算術(shù)表達(dá)式字符串常量函數(shù)列別名SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]①

選擇表中的若干列【例題5-4】查詢學(xué)生的姓名及年齡。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]SELECT

Name,YEAR(GETDATE())-YEAR(Birthday)

FROM

Student①

選擇表中的若干列【例題5-4】查詢學(xué)生的姓名及年齡。GETDATE()函數(shù)取系統(tǒng)當(dāng)前日期YEAR()函數(shù)取日期中的年定義列別名有三種方法①別名=列名②列名as別名③列名別名SELECT

Name,YEAR(GETDATE())-YEAR(Birthday)

FROM

StudentSELECTName,nl=YEAR(GETDATE())-YEAR(Birthday)FROMStudentSELECTName,YEAR(GETDATE())-YEAR(Birthday)asnl

FROMStudentSELECTName,YEAR(GETDATE())-YEAR(Birthday)nl

FROMStudent例:SELECTname,birthday,YEAR(birthday)年,month(birthday)月,day(birthday)日FROMStudent常用日期函數(shù)

Getdate():返回服務(wù)器當(dāng)前系統(tǒng)日期和時間

year(DATA):返回日期中的年

month(DATA):返回日期中的月

day(DATA):返回日期中的日②

選擇表中的若干元組【例題5-5】查詢學(xué)生分布在哪些民族

SELECTNationFROMStudent等價于:SELECTALLNationFROMStudent SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]②

選擇表中的若干元組【例題5-5】查詢學(xué)生分布在哪些民族

SELECTDISTINCTNationFROMStudent SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]說明:DISTINCT關(guān)鍵詞,去掉查詢結(jié)果中重復(fù)的行②

選擇表中的若干元組【例題5-7】查詢哪些學(xué)生是少數(shù)民族,顯示學(xué)生姓名和民族。SELECTName,NationFROMStudentWHERENation<>'漢族'SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]WHERE

子句中常用的查詢運(yùn)算符查詢條件謂詞比較=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比較運(yùn)算符確定范圍BETWEENAND,NOTBETWEENAND確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件(邏輯運(yùn)算)AND,OR,NOT②

選擇表中的若干元組【例題5-8】查詢年齡在19~23歲(包括19和23歲)之間的學(xué)生的學(xué)號、姓名、出生日期。1:SELECTSno,Name,BirthdayFROMStudent

WHEREYEAR(GETDATE())-YEAR(Birthday)BETWEEN19AND232:SELECTSno,Name,BirthdayFROMStudent

WHEREYEAR(GETDATE())-YEAR(Birthday)>=19

ANDYEAR(GETDATE())-YEAR(Birthday)<=23操作練習(xí)實驗4單表查詢(一)1~5題

選擇表中的若干元組【例題5-9】查詢民族為“漢族”或者“滿族”的學(xué)生詳細(xì)信息。SELECT*FROMStudentWHERENationin('漢族','滿族')或者SELECT*FROMStudentWHERENation='漢族'orNation='滿族'②

選擇表中的若干元組【例題5-10】查詢哪些學(xué)生選課了還沒有考試成績,顯示學(xué)號,課程號。SELECTSno,CnoFROMSCWHEREGradeisNULL判斷空值不能用等號=②

選擇表中的若干元組-模糊查詢【例題5-11】查詢哪些學(xué)生姓名中含有“南”字。SELECT*FROMStudentWHERENameLIKE'%南%'模糊查詢通配符:%:任意長度_:單個字符②

選擇表中的若干元組-模糊查詢【例題5-13】找出所有姓“張”和姓“江”的員工信息。SELECT*FROMStudentWHERENameLIKE'[張,江]%'SELECT*FROMStudentWHEREsubstring(Name,1,1)IN('張','江')SELECT*FROMStudentWHEREleft(Name,1)IN('張','江')模糊查詢通配符:%:任意長度_:單個字符常用字符串函數(shù)Left(字符表達(dá)式,整數(shù)):截取從左側(cè)開始指定位數(shù)的子字符串Right(字符表達(dá)式,整數(shù)):截取從右側(cè)開始指定位數(shù)的子字符串Substring(字符表達(dá)式,起始位置,n):從任意位置取子串,截取從起始位置開始的n個字符Ltrim(字符表達(dá)式):去掉字符表達(dá)式左側(cè)(前面)的空格Rtrim(字符表達(dá)式):去掉字符表達(dá)式右側(cè)(尾部)的空格操作練習(xí)實驗4單表查詢(一)

14十二月2024SQLServer數(shù)據(jù)庫實踐SQL語言一般分四類數(shù)據(jù)定義語言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語言(DML,DataManipulationLanguage)數(shù)據(jù)查詢語言(DQL,DataQuery

Language)數(shù)據(jù)控制語言(DCL,DataControlLanguage)(+事務(wù))√√√√數(shù)據(jù)查詢語法SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]stuDB數(shù)據(jù)庫三張表數(shù)據(jù)查詢目錄1、單表查詢2、連接查詢3、嵌套查詢4、集合查詢5、基于派生表的查詢1、單表查詢單表查詢僅涉及一個表,又分為:選擇表中的若干列選擇表中的若干元組

ORDERBY排序子句聚集函數(shù)

GROUPBY分組子句①

選擇表中的若干列【例題5-1】查詢?nèi)w學(xué)生的姓名和民族。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]SELECTName,NationFROM

Student①

選擇表中的若干列【例題5-2】查詢?nèi)w學(xué)生的姓名、民族和性別。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]SELECTName,Nation,SexFROM

Student注意:列的順序①

選擇表中的若干列【例題5-3】查詢?nèi)w學(xué)生的詳細(xì)信息。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]SELECT

Sno,Name,Sex,Nation,Birthday

FROM

Student或者SELECT

*

FROM

Student習(xí)題1.查詢所有課程的課程名和學(xué)分2.查詢課程的所有信息查詢語法SELECT

<輸出列表>]…FROM數(shù)據(jù)源列表習(xí)題1.查詢所有課程的課程名和學(xué)分

selectcname,creditfromcourse2.查詢課程的所有信息查詢語法SELECT

<輸出列表>]…FROM數(shù)據(jù)源列表習(xí)題1.查詢所有課程的課程名和學(xué)分

selectcname,creditfromcourse2.查詢課程的所有信息

select*fromcourseselectCno,cname,hours,credit,Semesterfromcourse查詢語法SELECT

<輸出列表>]…FROM數(shù)據(jù)源列表①選擇表中的若干列查詢經(jīng)過計算的值SELECT子句的<輸出列表>可以為:算術(shù)表達(dá)式字符串常量函數(shù)列別名SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]①

選擇表中的若干列【例題5-4】查詢學(xué)生的姓名及年齡。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]SELECT

Name,YEAR(GETDATE())-YEAR(Birthday)

FROM

Student①

選擇表中的若干列【例題5-4】查詢學(xué)生的姓名及年齡。GETDATE()函數(shù)取系統(tǒng)當(dāng)前日期YEAR()函數(shù)取日期中的年定義列別名有三種方法①別名=列名②列名as別名③列名別名SELECT

Name,YEAR(GETDATE())-YEAR(Birthday)

FROM

StudentSELECTName,nl=YEAR(GETDATE())-YEAR(Birthday)FROMStudentSELECTName,YEAR(GETDATE())-YEAR(Birthday)asnl

FROMStudentSELECTName,YEAR(GETDATE())-YEAR(Birthday)nl

FROMStudent例:SELECTname,birthday,YEAR(birthday)年,month(birthday)月,day(birthday)日FROMStudent常用日期函數(shù)

Getdate():返回服務(wù)器當(dāng)前系統(tǒng)日期和時間

year(DATA):返回日期中的年

month(DATA):返回日期中的月

day(DATA):返回日期中的日②

選擇表中的若干元組【例題5-5】查詢學(xué)生分布在哪些民族

SELECTNationFROMStudent等價于:SELECTALLNationFROMStudent SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]②

選擇表中的若干元組【例題5-5】查詢學(xué)生分布在哪些民族

SELECTDISTINCTNationFROMStudent SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]說明:DISTINCT關(guān)鍵詞,去掉查詢結(jié)果中重復(fù)的行②

選擇表中的若干元組【例題5-7】查詢哪些學(xué)生是少數(shù)民族,顯示學(xué)生姓名和民族。SELECTName,NationFROMStudentWHERENation<>'漢族'SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]WHERE

子句中常用的查詢運(yùn)算符查詢條件謂詞比較=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比較運(yùn)算符確定范圍BETWEENAND,NOTBETWEENAND確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件(邏輯運(yùn)算)AND,OR,NOT②

選擇表中的若干元組【例題5-8】查詢年齡在19~23歲(包括19和23歲)之間的學(xué)生的學(xué)號、姓名、出生日期。1:SELECTSno,Name,BirthdayFROMStudent

WHEREYEAR(GETDATE())-YEAR(Birthday)BETWEEN19AND232:SELECTSno,Name,BirthdayFROMStudent

WHEREYEAR(GETDATE())-YEAR(Birthday)>=19

ANDYEAR(GETDATE())-YEAR(Birthday)<=23操作練習(xí)實驗4單表查詢(一)1~5題

選擇表中的若干元組【例題5-9】查詢民族為“漢族”或者“滿族”的學(xué)生詳細(xì)信息。SELECT*FROMStudentWHERENationin('漢族','滿族')或者SELECT*FROMStudentWHERENation='漢族'orNation='滿族'②

選擇表中的若干元組【例題5-10】查詢哪些學(xué)生選課了還沒有考試成績,顯示學(xué)號,課程號。SELECTSno,CnoFROMSCWHEREGradeisNULL判斷空值不能用等號=②

選擇表中的若干元組-模糊查詢【例題5-11】查詢哪些學(xué)生姓名中含有“南”字。SELECT*FROMStudentWHERENameLIKE'%南%'模糊查詢通配符:%:任意長度_:單個字符②

選擇表中的若干元組-模糊查詢【例題5-13】找出所有姓“張”和姓“江”的員工信息。SELECT*FROMStudentWHERENameLIKE'[張,江]%'SELECT*FROMStudentWHEREsubstring(Name,1,1)IN('張','江')SELECT*FROMStudentWHEREleft(Name,1)IN('張','江')模糊查詢通配符:%:任意長度_:單個字符常用字符串函數(shù)Left(字符表達(dá)式,整數(shù)):截取從左側(cè)開始指定位數(shù)的子字符串Right(字符表達(dá)式,整數(shù)):截取從右側(cè)開始指定位數(shù)的子字符串Substring(字符表達(dá)式,起始位置,n):從任意位置取子串,截取從起始位置開始的n個字符Ltrim(字符表達(dá)式):去掉字符表達(dá)式左側(cè)(前面)的空格Rtrim(字符表達(dá)式):去掉字符表達(dá)式右側(cè)(尾部)的空格操作練習(xí)實驗4單表查詢(一)

14十二月2024SQLServer數(shù)據(jù)庫實踐SQL語言一般分四類數(shù)據(jù)定義語言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語言(DML,DataManipulationLanguage)數(shù)據(jù)查詢語言(DQL,DataQuery

Language)數(shù)據(jù)控制語言(DCL,DataControlLanguage)(+事務(wù))√√√√數(shù)據(jù)查詢語法SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]stuDB數(shù)據(jù)庫三張表數(shù)據(jù)查詢目錄1、單表查詢2、連接查詢3、嵌套查詢4、集合查詢5、基于派生表的查詢1、單表查詢單表查詢僅涉及一個表,又分為:選擇表中的若干列選擇表中的若干元組

ORDERBY排序子句聚集函數(shù)

GROUPBY分組子句√√③ORDERBY排序子句【例題5-16】查詢選修了1號課程的學(xué)生學(xué)號及其成績,查詢結(jié)果按照成績降序排列。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]③ORDERBY排序子句【例題5-16】查詢選修了1號課程的學(xué)生學(xué)號及其成績,查詢結(jié)果按照成績降序排列。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]SELECTSno,GradeFROMSCWHERECno=1ORDERBYGradeDESC分?jǐn)?shù)降序表中數(shù)據(jù)順序③ORDERBY排序子句【例題5-17】查詢學(xué)生的學(xué)號、姓名、民族、出生日期,查詢結(jié)果按照民族升序排列,同一民族的按照年齡降序排列。SELECTSno,Name,Nation,BirthdayFROMStudentORDERBYNationASC,BirthdayASC

SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]判斷題:orderby子句中如果沒有寫排序字段,默認(rèn)升序④聚集函數(shù)五個聚集函數(shù),只有count()函數(shù)多種用法函數(shù)功能COUNT(*)統(tǒng)計元組(行、記錄)數(shù)COUNT(<列名>)統(tǒng)計該列(字段、屬性)值不為空的元組數(shù)COUNT(DISTINCT<列名>)統(tǒng)計該列值不為空,并且值不重復(fù)的元組數(shù)SUM(<列名>)計算一列值的總和(此列必須為數(shù)值型)AVG(<列名>)計算一列值的平均值(此列必須為數(shù)值型)MAX(<列名>)求一列值的最大值MIN(<列名>)求一列值的最小值④聚集函數(shù)【例題5-18】統(tǒng)計有多少名學(xué)生。代碼1:SELECTcount(*)FROMStudent代碼2:SELECTcount(*)學(xué)生數(shù)FROMStudentSELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]④聚集函數(shù)【例題5-20】查詢有多少學(xué)生選修了課程。SELECTcount(*)FROMSC結(jié)果:5SELECTcount(DISTINCTSno)選課人數(shù)FROMSC結(jié)果:3SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…

FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]④聚集函數(shù)【例題5-21】查詢課程表中有多少門必修課(選修課的開課學(xué)期是空值)。代碼1:SELECTcount(Semester)必修課程數(shù)FROMCourse代碼2:SELECTcount(*)必修課程數(shù)FROMCourse

WHERESemesterISNOTNULL

結(jié)果:3SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]強(qiáng)調(diào):COUNT(*)

統(tǒng)計行數(shù),不考慮空值COUNT(列名)

統(tǒng)計該列不為空的行數(shù)COUNT(DISTINCT列名)統(tǒng)計該列不為空

并且不重復(fù)的行數(shù)?SELECT

count(distinctSemester)

FROM

Course④聚集函數(shù)【例題5-19】查詢學(xué)生學(xué)習(xí)所有課程獲得的最高分、最低分和平均分。SELECTmax(Grade)最高分,min(Grade)最低分,avg(Grade)平均分FROMSCSELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]習(xí)題1用SQL語句統(tǒng)計學(xué)校一共開設(shè)了多少門課程用SQL語句統(tǒng)計少數(shù)民族學(xué)生的人數(shù)用SQL語句統(tǒng)計學(xué)生有多少個民族用SQL語句統(tǒng)計學(xué)校課程的總學(xué)時,以及最高學(xué)分、最低學(xué)分用SQL語句統(tǒng)計2號課程參加考試的人數(shù)用SQL語句統(tǒng)計1號課程的平均分COUNT()計數(shù)SUM()求和AVG()求平均分MAX()求最大值MIN()求最低分SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表

[WHERE<條件表達(dá)式>]習(xí)題1用SQL語句統(tǒng)計學(xué)校一共開設(shè)了多少門課程用SQL語句統(tǒng)計少數(shù)民族學(xué)生的人數(shù)用SQL語句統(tǒng)計學(xué)生有多少個民族用SQL語句統(tǒng)計學(xué)校課程的總學(xué)時,以及最高學(xué)分、最低學(xué)分用SQL語句統(tǒng)計2號課程參加考試的人數(shù)用SQL語句統(tǒng)計1號課程的平均分selectcount(*)fromcourseselectcount(cno)fromcourseselectcount(*)fromstudentwherenation<>’漢族’selectcount(distinctnation)fromstudentselectsum(hours),max(credit),min(credit)fromcourseselectcount(grade)fromSCwherecno=2selectcount(*)fromSCwherecno=2andgradeisnotnullselectavg(grade)fromSCwherecno=1COUNT()計數(shù)、SUM()求和AVG()求平均分、MAX()求最大值

、MIN()求最低分?jǐn)?shù)據(jù)查詢語法SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]⑤GROUPBY子句GROUPBY子句分組:細(xì)化聚集函數(shù)的作用對象未分組,聚集函數(shù)將作用于整個查詢結(jié)果分組后,聚集函數(shù)將分別作用于每個組,按一列或多列分組,值相等的為一組⑤GROUPBY子句【例題5-18】統(tǒng)計有多少名學(xué)生。SELECTcount(*)學(xué)生數(shù)FROMStudent【進(jìn)階】統(tǒng)計各個民族分別有多少名學(xué)生。SELECTnation,count(*)學(xué)生數(shù)FROMStudentgroupbynationGROUPBY分組后,聚集函數(shù)將分別作用于每個組值相等的為一組,分組統(tǒng)計⑤GROUPBY子句【例題5-19】查詢學(xué)生學(xué)習(xí)所有課程獲得的最高分、最低分和平均分。SELECTmax(Grade)最高分,min(Grade)最低分,avg(Grade)平均分FROMSC【進(jìn)階1例題5-22】查詢每門課程

溫馨提示

  • 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

提交評論