版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 資助工作聯(lián)審制度
- 蜜雪集團(tuán)港股上市交易制度
- 醫(yī)院牙科種植牙新技術(shù)
- 急性胃腸炎患者的營養(yǎng)支持護(hù)理
- 2026中國科學(xué)院上海生命科學(xué)研究院生物化學(xué)與細(xì)胞生物學(xué)研究所分子細(xì)胞卓越中心曾安組招聘博士后科研助理2人備考考試題庫附答案解析
- 2026山東煙臺濰柴新能源全球社招招聘備考考試題庫附答案解析
- 2026四川蒙頂山茶馬古道文化旅游發(fā)展有限公司招聘勞務(wù)派遣工作人員1人備考考試題庫附答案解析
- 2026河北邢臺市臨城縣招聘森林消防專業(yè)隊員8人參考考試題庫附答案解析
- 2026年棗莊山亭區(qū)事業(yè)單位公開招聘初級綜合類崗位人員(55人)參考考試題庫附答案解析
- 2026海南三亞市教育局直屬公辦學(xué)校招聘教職工215人(1號)備考考試題庫附答案解析
- 2025年中考語文文言文真題匯編47份(分師生版)
- DBJ∕T 15-106-2015 頂管技術(shù)規(guī)程
- 2025年勞動保障協(xié)理員三級技能試題及答案
- 湖北省咸寧市2025-2026學(xué)年物理高二上期末復(fù)習(xí)檢測試題含解析
- 2025年煤層氣開發(fā)行業(yè)分析報告及未來發(fā)展趨勢預(yù)測
- 全民健身中心建設(shè)工程施工方案
- 傳統(tǒng)文化音樂課題申報書
- GB/T 21526-2025結(jié)構(gòu)膠粘劑粘接前金屬和塑料表面處理導(dǎo)則
- 天然氣管道應(yīng)急搶修技術(shù)方案
- (2025年標(biāo)準(zhǔn))情侶欠錢協(xié)議書
- 長租公寓消防知識培訓(xùn)課件
評論
0/150
提交評論