版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
SQLServer數(shù)據(jù)庫(kù)實(shí)踐課程介紹24學(xué)時(shí)、1.5學(xué)分
考查課
教材:《SQLServer數(shù)據(jù)庫(kù)實(shí)踐教程》
中國(guó)鐵道出版社2024.9出版上機(jī)軟件:SQLServer2008
MOOC:e會(huì)學(xué)MOOC《SQLServer數(shù)據(jù)庫(kù)實(shí)踐》(/)博思平臺(tái)MOOC:數(shù)據(jù)庫(kù)系統(tǒng)(安信工)智慧教學(xué)工具:云班課
+云教材《SQLServer數(shù)據(jù)庫(kù)實(shí)踐》ISBN978-7-113-30940-4記錄平時(shí)成績(jī)課程考核分值考核/評(píng)價(jià)細(xì)則100
出勤10%按照百分制,缺勤一次扣10分三次缺勤,該項(xiàng)考核分為0分測(cè)驗(yàn)30%課后自測(cè)題+課堂測(cè)驗(yàn)成績(jī)作業(yè)60%12個(gè)實(shí)驗(yàn)報(bào)告,當(dāng)堂交問(wèn)卷、投票等其他活動(dòng)考查課,零基礎(chǔ)入門課程學(xué)習(xí)方法數(shù)據(jù)庫(kù)無(wú)處不在可以登錄教務(wù)系統(tǒng)多次查詢課表、查詢自己的成績(jī)。你的個(gè)人賬號(hào)、密碼、收貨地址、購(gòu)物信息等存在哪里?動(dòng)態(tài)網(wǎng)站的工作過(guò)程(以淘寶網(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ù)庫(kù)服務(wù)器進(jìn)程數(shù)據(jù)庫(kù)服務(wù)器ODBC數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)的重要地位數(shù)據(jù)庫(kù)技術(shù)是所有信息系統(tǒng)的核心和基礎(chǔ)。chartGPT、訊飛星火大模型等AI模型都需要大量數(shù)據(jù)不管什么專業(yè)的學(xué)生,
都有必要學(xué)學(xué)數(shù)據(jù)庫(kù)知識(shí)數(shù)據(jù)庫(kù)的定義數(shù)據(jù)庫(kù)(Database,簡(jiǎn)稱DB)是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)的集合。數(shù)據(jù)庫(kù)中存儲(chǔ)的基本對(duì)象是數(shù)據(jù)(Data)數(shù)據(jù)庫(kù)語(yǔ)言:SQL語(yǔ)言
(StructuredQueryLanguage結(jié)構(gòu)化查詢語(yǔ)言)操作練習(xí)實(shí)驗(yàn)1
SSMS圖形界面創(chuàng)建數(shù)據(jù)庫(kù)和學(xué)生表快速了解數(shù)據(jù)庫(kù)實(shí)驗(yàn)1SSMS圖形界面創(chuàng)建數(shù)據(jù)庫(kù)和學(xué)生表創(chuàng)建數(shù)據(jù)庫(kù)ST創(chuàng)建學(xué)生表SSMS簡(jiǎn)稱SSMS操作演示課后作業(yè)完成云教材學(xué)習(xí)任務(wù)。SQLServer數(shù)據(jù)庫(kù)實(shí)踐14十二月2024回顧數(shù)據(jù)庫(kù)(Database,簡(jiǎn)稱DB)是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)的集合。數(shù)據(jù)庫(kù)中存儲(chǔ)的基本對(duì)象是數(shù)據(jù)(Data)數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)是二維表格
實(shí)驗(yàn)1
SSMS圖形界面創(chuàng)建數(shù)據(jù)庫(kù)和學(xué)生表
(已完成)數(shù)據(jù)類型說(shuō)明char(n)固定長(zhǎng)度字符型,長(zhǎng)度為n個(gè)字節(jié),最多可存n個(gè)字符或n/2個(gè)漢字,n的取值范圍為1~8000,默認(rèn)長(zhǎng)度1varchar(n)可變長(zhǎng)度字符型,長(zhǎng)度為n個(gè)字節(jié),n的取值范圍為1~8000,默認(rèn)長(zhǎng)度1nchar(n)固定長(zhǎng)度Unicode字符型,Unicode字符集對(duì)字符和漢字都采用雙字節(jié)存儲(chǔ),最多可存n個(gè)字符或n個(gè)漢字,n的取值范圍為1~4000,默認(rèn)長(zhǎng)度1nvarchar(n)可變長(zhǎng)度Unicode字符型,n值在1~4000之間,默認(rèn)長(zhǎng)度1text大量長(zhǎng)度的字符型,最多達(dá)到231—1(2147483647)字節(jié)ntext大量長(zhǎng)度的Unicode字符型,最多可存(231—1)∕2=(1073741823)個(gè)字符或漢字常用數(shù)據(jù)類型(附錄B)附表B-1字符類型常用數(shù)據(jù)類型(附錄B)附表B-2數(shù)字類型數(shù)據(jù)類型說(shuō)明bigint-263(-1.8E19)~263-1(1.8E19)的整型數(shù),存儲(chǔ)長(zhǎng)度為8個(gè)字節(jié)int-231(-2147483648)~231-1(2147483647)的整型數(shù),存儲(chǔ)長(zhǎng)度為4個(gè)字節(jié)smallint-215(-32768)~215-1(32767)的整型數(shù),存儲(chǔ)長(zhǎng)度為兩個(gè)字節(jié)tinyint0~255的整型數(shù),存儲(chǔ)長(zhǎng)度為1個(gè)字節(jié)float浮點(diǎn)型,從–1.79E+308到1.79E+308,存儲(chǔ)長(zhǎng)度為8個(gè)字節(jié)real浮點(diǎn)精度型,從–3.40E+38到3.40E+38,存儲(chǔ)長(zhǎng)度為4個(gè)字節(jié)bit整數(shù)型,值為1或0,存儲(chǔ)長(zhǎng)度為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。存儲(chǔ)長(zhǎng)度為19個(gè)字節(jié)常用數(shù)據(jù)類型(附錄B)附表B-3日期類型數(shù)據(jù)類型說(shuō)明精度date日期型,4個(gè)字節(jié),無(wú)時(shí)間,1753年1月1日到9999年12月31日,SQLServer2008版新增的數(shù)據(jù)類型1天datetime日期時(shí)間型,8個(gè)字節(jié),1753年1月1日到9999年12月31日3.33毫秒smalldatetime日期時(shí)間型,4個(gè)字節(jié),1900年1月1日到2079年6月6日1分鐘time時(shí)間型,不存日期,只存時(shí)分秒,SQLServer2008版新增的數(shù)據(jù)類型1毫秒約束關(guān)系模型有三類完整性約束實(shí)體完整性(通過(guò)主鍵實(shí)現(xiàn))參照完整性(通過(guò)外鍵實(shí)現(xiàn))用戶自定義完整性(檢查約束、非空約束、唯一約束、默認(rèn)值等)
今日內(nèi)容:外鍵、聯(lián)合主鍵操作練習(xí)實(shí)驗(yàn)2SSMS圖形界面管理數(shù)據(jù)庫(kù)和課程表、成績(jī)表實(shí)驗(yàn)2SSMS圖形界面管理數(shù)據(jù)庫(kù)和課程表、成績(jī)表創(chuàng)建或附加ST數(shù)據(jù)庫(kù)創(chuàng)建表簡(jiǎn)稱SSMS操作演示14十二月2024SQLServer數(shù)據(jù)庫(kù)實(shí)踐對(duì)數(shù)據(jù)庫(kù)有了初步認(rèn)識(shí)在圖形界面初步認(rèn)識(shí)了數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)創(chuàng)建表錄入數(shù)據(jù)現(xiàn)在開(kāi)始學(xué)習(xí)使用代碼操作數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)嵌在程序中使用(客戶機(jī))請(qǐng)求網(wǎng)頁(yè)瀏覽器進(jìn)程Web應(yīng)用服務(wù)器進(jìn)程LAN或WANWeb服務(wù)器進(jìn)程Web服務(wù)器Web應(yīng)用服務(wù)器/(瀏覽淘寶網(wǎng)為例)數(shù)據(jù)庫(kù)服務(wù)器進(jìn)程數(shù)據(jù)庫(kù)服務(wù)器ODBC①⑨返回頁(yè)面②發(fā)送到Web服務(wù)器③轉(zhuǎn)發(fā)動(dòng)態(tài)頁(yè)面請(qǐng)求④連接數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序⑤執(zhí)行查詢操作⑥返回查詢結(jié)果到數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序⑦返回結(jié)果到Web應(yīng)用服務(wù)器⑧生成并將動(dòng)態(tài)數(shù)據(jù)插入頁(yè)面,返回給Web服務(wù)器⑩接受網(wǎng)頁(yè),解釋并顯示網(wǎng)頁(yè)內(nèi)容數(shù)據(jù)庫(kù)SQL語(yǔ)言SQL(StructuredQueryLanguage)結(jié)構(gòu)化查詢語(yǔ)言,是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL是一個(gè)通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言層次模型樹(shù)形結(jié)構(gòu)網(wǎng)狀模型網(wǎng)狀結(jié)構(gòu)層次數(shù)據(jù)庫(kù)、網(wǎng)狀數(shù)據(jù)庫(kù)已經(jīng)淘汰目前使用的基本都是關(guān)系數(shù)據(jù)庫(kù)使用關(guān)系模型,數(shù)據(jù)結(jié)構(gòu)是二維表SQL結(jié)構(gòu)化查詢語(yǔ)言,NotonlyQuery
SQL語(yǔ)言數(shù)據(jù)查詢數(shù)據(jù)定義數(shù)據(jù)操縱(增、刪、改)數(shù)據(jù)安全控制事務(wù)處理SQL語(yǔ)言一般分四類數(shù)據(jù)定義語(yǔ)言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語(yǔ)言(DML,DataManipulationLanguage)數(shù)據(jù)查詢語(yǔ)言(DQL,DataQuery
Language)數(shù)據(jù)控制語(yǔ)言(DCL,DataControlLanguage)(+事務(wù))九個(gè)主要?jiǎng)釉~數(shù)據(jù)定義操作對(duì)象操作方式數(shù)據(jù)庫(kù)createdatabasealterdatabasedropdatabase表createtablealtertabledroptable視圖createviewalterviewdropview
數(shù)據(jù)定義
三個(gè)動(dòng)詞數(shù)據(jù)定義語(yǔ)言需要兩個(gè)關(guān)鍵字有特定含義的單詞create創(chuàng)建
alter修改drop刪除創(chuàng)建數(shù)據(jù)庫(kù)語(yǔ)法:CREATEDATABASE<數(shù)據(jù)庫(kù)名>[[ON[PRIMARY]]([NAME=<數(shù)據(jù)文件邏輯文件名>][,FILENAME=<'數(shù)據(jù)文件物理文件名'>][,SIZE=<數(shù)據(jù)文件初始大小>],[,MAXSIZE=<數(shù)據(jù)文件最大大小>][,FILEGROWTH<數(shù)據(jù)文件增長(zhǎng)比例>][,…n])]
[LOGON([NAME=<日志文件邏輯文件名>][,FILENAME=<'日志文件物理文件名'>][,SIZE=<日志文件初始大小>],[,MAXSIZE=<日志文件最大大小>][,FILEGROWTH<日志文件增長(zhǎng)比例>][,…n])]可選可選提示:
語(yǔ)法中的方括號(hào)[]表示可選項(xiàng),非必需項(xiàng)創(chuàng)建數(shù)據(jù)庫(kù)【例題1】指定數(shù)據(jù)文件和日志文件屬性創(chuàng)建數(shù)據(jù)庫(kù)語(yǔ)句:CREATEDATABASEMyDBON(NAME=MyDB_data,
--數(shù)據(jù)文件邏輯名,半角逗號(hào)分隔FILENAME='C:\MyDB_data.mdf',--數(shù)據(jù)文件物理名,半角引號(hào)SIZE=10MB,
--數(shù)據(jù)文件初始大小MAXSIZE=UNLIMITED,
--數(shù)據(jù)文件最大設(shè)置FILEGROWTH=10%)
--數(shù)據(jù)文件增長(zhǎng)方式,注意后面沒(méi)有逗號(hào)LOGON(NAME=MyDB_log,
--日志文件邏輯名
FILENAME='C:\MyDB_log.ldf',--日志文件物理名SIZE=3MB,
--日志文件初始大小MAXSIZE=5MB,
--日志文件最大設(shè)置
FILEGROWTH=1MB)
--日志文件增長(zhǎng)方式,注意后面沒(méi)有逗號(hào)操作演示--后面是單行注釋,不執(zhí)行
創(chuàng)建數(shù)據(jù)庫(kù)
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ù)庫(kù)
語(yǔ)法ALTERDATABASE<數(shù)據(jù)庫(kù)名>{ADDFILE<數(shù)據(jù)文件參數(shù)>[,...n]|ADDLOGFILE<日志文件參數(shù)>[,...n]|REMOVEFILE數(shù)據(jù)文件邏輯名稱|ADDFILEGROUP文件組名|REMOVEFILEGROUP文件組名|MODIFYFILE<數(shù)據(jù)文件參數(shù)> |MODIFYNAME=新數(shù)據(jù)庫(kù)名 |SET<參數(shù)>/*數(shù)據(jù)庫(kù)參數(shù)設(shè)置*/}/**/中間是多行注釋,不執(zhí)行ALTERDATABASEMyDBADDFILE(NAME=MyDB_data2,FILENAME='C:\MyDB_data2.ndf',SIZE=10MB,MAXSIZE=2GB,FILEGROWTH=10%)
修改數(shù)據(jù)庫(kù)【例題2】增加數(shù)據(jù)文件次要數(shù)據(jù)文件擴(kuò)展名.NDF
修改數(shù)據(jù)庫(kù)【例題3】修改數(shù)據(jù)文件的增長(zhǎng)方式ALTERDATABASE
MyDBMODIFYFILE(NAME=MyDB_data2,FILEGROWTH=15%)刪除數(shù)據(jù)庫(kù)語(yǔ)法:DROPDATABASE<數(shù)據(jù)庫(kù)名>提示:會(huì)丟失數(shù)據(jù),慎重使用刪除數(shù)據(jù)庫(kù)【例題4】刪除
MyDB數(shù)據(jù)庫(kù)語(yǔ)句:DROPDATABASE
MyDB打開(kāi)數(shù)據(jù)庫(kù)
語(yǔ)法:
USE<數(shù)據(jù)庫(kù)名>
注意:
USE
DATABASE<數(shù)據(jù)庫(kù)名>
×
CREATEDATABASE<數(shù)據(jù)庫(kù)名>
√
ALTERDATABASE<數(shù)據(jù)庫(kù)名>
√
DROPDATABASE<數(shù)據(jù)庫(kù)名>
√
CREATETABLE<表名>
CREATEVIEW<視圖名>打開(kāi)數(shù)據(jù)庫(kù)創(chuàng)建表
語(yǔ)法CREATETABLE<表名>(<列名><數(shù)據(jù)類型>[<列級(jí)完整性約束>][,<列名><數(shù)據(jù)類型>[<列級(jí)完整性約束>]]…[,<表級(jí)完整性約束>]);問(wèn)題:數(shù)據(jù)類型都有哪些?
完整性約束有哪些?SQLServer中常用數(shù)據(jù)類型字符類型數(shù)據(jù)類型說(shuō)明char[(n)]固定長(zhǎng)度字符型,n的范圍:1~8000,默認(rèn)1字節(jié)varchar[(n)]可變長(zhǎng)字符型,n的范圍:1~8000,默認(rèn)1字節(jié)nchar[(n)]固定長(zhǎng)度Unicode字符型,每個(gè)字符都占2個(gè)字節(jié),n的范圍:1~4000,默認(rèn)1字節(jié)nvarchar[(n)]可變長(zhǎng)度Unicode字符型,每個(gè)字符都占2個(gè)字節(jié),n的范圍:1~4000之間,默認(rèn)1字節(jié)text大長(zhǎng)度字符型,最多231-1(2147483647)字節(jié)ntext大長(zhǎng)度Unicode字符數(shù)據(jù),最多(231-1)∕2(1073741823)個(gè)字符SQLServer中常用數(shù)據(jù)類型數(shù)字類型數(shù)據(jù)類型說(shuō)明bigint長(zhǎng)整型,8個(gè)字節(jié),-263~263-1int整型,4個(gè)字節(jié),-231~231-1smallint短整型2個(gè)字節(jié),-215~215-1tinyint存儲(chǔ)長(zhǎng)度為1個(gè)字節(jié)無(wú)符號(hào)整型,0~255float浮點(diǎn)型,8個(gè)字節(jié),–1.79E+308~1.79E+308real浮點(diǎn)型,4個(gè)字節(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ù)類型說(shuō)明精度date日期型,無(wú)時(shí)間,4個(gè)字節(jié),1753年1月1日~9999年12月31日1天datetime日期時(shí)間型,8個(gè)字節(jié),1753年1月1日~9999年12月31日3.33毫秒smalldatetime日期時(shí)間型,4個(gè)字節(jié),1900年1月1日~2079年6月6日1分鐘time時(shí)間型,不存日期,只存時(shí)分秒1毫秒SQLServer中常用數(shù)據(jù)類型貨幣類型數(shù)據(jù)類型說(shuō)明money8個(gè)字節(jié),-263(-922,337,203,685,477.5808)~263-1(922,337,203,685,477.5807)smallmoney4個(gè)字節(jié),-231(-214,748.3648)~231-1(214,748.3647)完整性約束Primarykey:主鍵約束(唯一、不允許空)Foreignkeyreferences主鍵表(主鍵列):外鍵約束NULL|NOTNULL:非空約束(允許空|不允許空)Unique:唯一鍵約束Default(值):默認(rèn)值約束Check(完整表達(dá)式):檢查約束
完整性約束:保證數(shù)據(jù)完整性的一種方法,可以防止數(shù)據(jù)庫(kù)中輸入不符合語(yǔ)意規(guī)定、不正確的數(shù)據(jù)。創(chuàng)建基本表
語(yǔ)法CREATETABLE<表名>(<列名><數(shù)據(jù)類型>[<列級(jí)完整性約束>][,<列名><數(shù)據(jù)類型>[<列級(jí)完整性約束>]]…[,<表級(jí)完整性約束>]);
約束分為表級(jí)約束和列級(jí)約束
只涉及一列的約束可以定義列級(jí),也可以定義表級(jí)。
涉及多列的約束必須定義為表級(jí)(如SC表聯(lián)合主鍵)。提示:語(yǔ)法中的方括號(hào)[]表示可選項(xiàng),非必需項(xiàng)創(chuàng)建基本表[例3]建立“學(xué)生”表Student,學(xué)號(hào)是主碼。
CREATETABLEStudent(SnoINTNOTNULL
PRIMARYKEY,/*列級(jí)完整性約束*/
SnameVARCHAR(20),SsexCHAR(2),SageSMALLINT,SdeptVARCHAR(20))主鍵提示:數(shù)據(jù)庫(kù)中不區(qū)分大小寫(xiě)創(chuàng)建基本表[例4]建立一個(gè)“課程”表CourseCREATETABLECourse(CnoINTNOTNULL
PRIMARYKEY,CnameVARCHAR(40)UNIQUE,/*唯一約束*/
CpnoINT, CcreditSMALLINT
);創(chuàng)建基本表[例5]建立一個(gè)“學(xué)生選課”表SCCREATETABLESC(SnoINTFOREIGNKEYREFERENCESStudent(Sno),CnoINT,GradeSMALLINT,
PRIMARYKEY(Sno,Cno),/*表級(jí)約束,聯(lián)合主鍵,兩個(gè)屬性構(gòu)成*/FOREIGNKEY(Cno)REFERENCESCourse(Cno)
/*表級(jí)約束,外鍵,Cno是外碼,被參照表是Course*/);修改基本表
語(yǔ)法:ALTERTABLE<表名>[ADD<新列名><數(shù)據(jù)類型>[完整性約束]][ADD<表級(jí)完整性約束>][DROP[COLUMN]<列名>[CASCADE|RESTRICT]][DROPCONSTRAINT<完整性約束名>[CASCADE|RESTRICT]][ALTERCOLUMN<列名><數(shù)據(jù)類型>];修改基本表
ALTERTABLEStudentADDS_entranceDATE;不論基本表中原來(lái)是否已有數(shù)據(jù),新增加的列一律為空值。
[例6]向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型。修改基本表[例7]將年齡的數(shù)據(jù)類型由字符型(假設(shè)原來(lái)的數(shù)據(jù)類型是字符型)改為整數(shù)。
ALTERTABLEStudentALTER
COLUMNSageINT;[例8]增加課程名稱必須取唯一值的約束條件。
ALTERTABLECourseADDUNIQUE(Cname);刪除基本表語(yǔ)法: DROPTABLE<表名>[例9]刪除Student表。
DROPTABLEStudent
操作練習(xí)實(shí)驗(yàn)3數(shù)據(jù)定義
14十二月2024SQLServer數(shù)據(jù)庫(kù)實(shí)踐SQL語(yǔ)言一般分四類數(shù)據(jù)定義語(yǔ)言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語(yǔ)言(DML,DataManipulationLanguage)數(shù)據(jù)查詢語(yǔ)言(DQL,DataQuery
Language)數(shù)據(jù)控制語(yǔ)言(DCL,DataControlLanguage)(+事務(wù))創(chuàng)建數(shù)據(jù)庫(kù)
createdatabase創(chuàng)建表createtable插入數(shù)據(jù)兩種插入數(shù)據(jù)方式①插入元組②插入子查詢結(jié)果(后面再學(xué))插入數(shù)據(jù)插入元組語(yǔ)法:
INSERTINTO<表名>[(<屬性列1>[,<屬性列2>…)] VALUES(<常量1>[,<常量2>]…)可以一次插入一個(gè)或多個(gè)元組插入數(shù)據(jù)
[例1]將學(xué)生信息(學(xué)號(hào):200215128;姓名:陳冬;性別:男;所在系:IS;年齡:18歲)插入到Student表中。問(wèn)題:語(yǔ)法沒(méi)錯(cuò),語(yǔ)句是否一定能執(zhí)行成功?成功前提:不違反表中約束,符合域(屬性的取值范圍)的限制INSERTINTO
Student(Sno,Sname,Ssex,Sdept,Sage)
VALUES
(200215128,'陳冬','男','IS',18);插入數(shù)據(jù)語(yǔ)法:
INSERTINTO<表名>[(<屬性列1>[,<屬性列2>…)]VALUES(<常量1>[,<常量2>]…)INSERTINTO
StudentVALUES
(200215128,'陳冬','男',18,'IS');提示:字符型和日期型常量加單引號(hào),數(shù)值型直接寫(xiě)
插入數(shù)據(jù)INTO子句屬性列的順序可與表定義中的順序不一致沒(méi)有指定屬性列:表示要插入的是一條完整的元組,且屬性列與表中定義的順序一致指定部分屬性列:要插入的元組在其余屬性列上取空值或者不允許為空但有默認(rèn)值
VALUES子句提供的值必須與INTO子句匹配值的個(gè)數(shù)值的類型插入數(shù)據(jù)語(yǔ)法:
INSERTINTO<表名>[(<屬性列1>[,<屬性列2>…)]VALUES(<常量1>[,<常量2>]…)INSERTINTO
Student(Sno,Sname)VALUES
(200215128,'陳冬');插入數(shù)據(jù)
插入語(yǔ)句時(shí)會(huì)檢查自動(dòng)所插元組是否破壞表上已定義的完整性規(guī)則實(shí)體完整性參照完整性用戶定義的完整性NOTNULL約束UNIQUE約束值域約束提示:語(yǔ)法沒(méi)錯(cuò),語(yǔ)句也不一定能執(zhí)行成功。成功前提:不違反表中約束,符合域(屬性的取值范圍)的限制修改數(shù)據(jù)修改數(shù)據(jù)語(yǔ)法
UPDATE<表名>SET<列名>=<表達(dá)式>[,<列名>=<表達(dá)式>]…[WHERE<條件>];修改數(shù)據(jù)修改數(shù)據(jù)三種方式:
修改某一個(gè)元組的值
修改多個(gè)元組的值
帶子查詢的修改語(yǔ)句(后面學(xué))修改數(shù)據(jù)修改一個(gè)元組的值[例2]將Student表中學(xué)號(hào)為200215121的學(xué)生年齡改為22歲
問(wèn)題:如果沒(méi)有WHERE子句會(huì)怎么樣?
UPDATEStudentSETSage=22WHERESno=200215121;修改數(shù)據(jù)語(yǔ)法
UPDATE<表名>
SET<列名>=<表達(dá)式>[,<列名>=<表達(dá)式>]…[WHERE<條件>];修改數(shù)據(jù)修改多個(gè)元組的值[例3]將所有學(xué)生的年齡增加1歲
UPDATEStudentSETSage=Sage+1;修改數(shù)據(jù)語(yǔ)法
UPDATE<表名>
SET<列名>=<表達(dá)式>[,<列名>=<表達(dá)式>]…[WHERE<條件>];修改數(shù)據(jù)執(zhí)行修改語(yǔ)句時(shí)會(huì)檢查自動(dòng)修改操作是否破壞表上已定義的完整性規(guī)則實(shí)體完整性參照完整性用戶定義的完整性
NOTNULL約束
UNIQUE約束值域約束刪除數(shù)據(jù)刪除數(shù)據(jù)語(yǔ)法
DELETE[FROM]<表名>[WHERE<條件>];4.數(shù)據(jù)更新:刪除數(shù)據(jù)三種刪除數(shù)據(jù)的方式:刪除某一個(gè)元組的值刪除多個(gè)元組的值帶子查詢的刪除語(yǔ)句(后面再學(xué))刪除數(shù)據(jù)[例4]刪除學(xué)號(hào)為200215128的學(xué)生記錄。問(wèn)題1:如果沒(méi)有WHERE子句會(huì)怎么樣?問(wèn)題2:語(yǔ)法沒(méi)錯(cuò)是否一定能刪除成功?
DELETEFROMStudentWHERESno=200215128;刪除數(shù)據(jù)語(yǔ)法
DELETE[FROM]<表名>[WHERE<條件>];說(shuō)明:刪除語(yǔ)句時(shí)會(huì)受外鍵(參照完整性)制約操作練習(xí)實(shí)驗(yàn)4數(shù)據(jù)更新
14十二月2024SQLServer數(shù)據(jù)庫(kù)實(shí)踐SQL語(yǔ)言一般分四類數(shù)據(jù)定義語(yǔ)言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語(yǔ)言(DML,DataManipulationLanguage)數(shù)據(jù)查詢語(yǔ)言(DQL,DataQuery
Language)數(shù)據(jù)控制語(yǔ)言(DCL,DataControlLanguage)(+事務(wù))√√√√數(shù)據(jù)查詢語(yǔ)法SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]stuDB數(shù)據(jù)庫(kù)三張表數(shù)據(jù)查詢目錄1、單表查詢2、連接查詢3、嵌套查詢4、集合查詢5、基于派生表的查詢1、單表查詢單表查詢僅涉及一個(gè)表,又分為:選擇表中的若干列選擇表中的若干元組
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.查詢課程的所有信息查詢語(yǔ)法SELECT
<輸出列表>]…FROM數(shù)據(jù)源列表習(xí)題1.查詢所有課程的課程名和學(xué)分
selectcname,creditfromcourse2.查詢課程的所有信息查詢語(yǔ)法SELECT
<輸出列表>]…FROM數(shù)據(jù)源列表習(xí)題1.查詢所有課程的課程名和學(xué)分
selectcname,creditfromcourse2.查詢課程的所有信息
select*fromcourseselectCno,cname,hours,credit,Semesterfromcourse查詢語(yǔ)法SELECT
<輸出列表>]…FROM數(shù)據(jù)源列表①選擇表中的若干列查詢經(jīng)過(guò)計(jì)算的值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)日期和時(shí)間
year(DATA):返回日期中的年
month(DATA):返回日期中的月
day(DATA):返回日期中的日②
選擇表中的若干元組【例題5-5】查詢學(xué)生分布在哪些民族
SELECTNationFROMStudent等價(jià)于: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]]說(shuō)明: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é)號(hào)、姓名、出生日期。1:SELECTSno,Name,BirthdayFROMStudent
WHEREYEAR(GETDATE())-YEAR(Birthday)BETWEEN19AND232:SELECTSno,Name,BirthdayFROMStudent
WHEREYEAR(GETDATE())-YEAR(Birthday)>=19
ANDYEAR(GETDATE())-YEAR(Birthday)<=23操作練習(xí)實(shí)驗(yàn)4單表查詢(一)1~5題
②
選擇表中的若干元組【例題5-9】查詢民族為“漢族”或者“滿族”的學(xué)生詳細(xì)信息。SELECT*FROMStudentWHERENationin('漢族','滿族')或者SELECT*FROMStudentWHERENation='漢族'orNation='滿族'②
選擇表中的若干元組【例題5-10】查詢哪些學(xué)生選課了還沒(méi)有考試成績(jī),顯示學(xué)號(hào),課程號(hào)。SELECTSno,CnoFROMSCWHEREGradeisNULL判斷空值不能用等號(hào)=②
選擇表中的若干元組-模糊查詢【例題5-11】查詢哪些學(xué)生姓名中含有“南”字。SELECT*FROMStudentWHERENameLIKE'%南%'模糊查詢通配符:%:任意長(zhǎng)度_:?jiǎn)蝹€(gè)字符②
選擇表中的若干元組-模糊查詢【例題5-13】找出所有姓“張”和姓“江”的員工信息。SELECT*FROMStudentWHERENameLIKE'[張,江]%'SELECT*FROMStudentWHEREsubstring(Name,1,1)IN('張','江')SELECT*FROMStudentWHEREleft(Name,1)IN('張','江')模糊查詢通配符:%:任意長(zhǎng)度_:?jiǎn)蝹€(gè)字符常用字符串函數(shù)Left(字符表達(dá)式,整數(shù)):截取從左側(cè)開(kāi)始指定位數(shù)的子字符串Right(字符表達(dá)式,整數(shù)):截取從右側(cè)開(kāi)始指定位數(shù)的子字符串Substring(字符表達(dá)式,起始位置,n):從任意位置取子串,截取從起始位置開(kāi)始的n個(gè)字符Ltrim(字符表達(dá)式):去掉字符表達(dá)式左側(cè)(前面)的空格Rtrim(字符表達(dá)式):去掉字符表達(dá)式右側(cè)(尾部)的空格操作練習(xí)實(shí)驗(yàn)4單表查詢(一)
14十二月2024SQLServer數(shù)據(jù)庫(kù)實(shí)踐SQL語(yǔ)言一般分四類數(shù)據(jù)定義語(yǔ)言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語(yǔ)言(DML,DataManipulationLanguage)數(shù)據(jù)查詢語(yǔ)言(DQL,DataQuery
Language)數(shù)據(jù)控制語(yǔ)言(DCL,DataControlLanguage)(+事務(wù))√√√√數(shù)據(jù)查詢語(yǔ)法SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]stuDB數(shù)據(jù)庫(kù)三張表數(shù)據(jù)查詢目錄1、單表查詢2、連接查詢3、嵌套查詢4、集合查詢5、基于派生表的查詢1、單表查詢單表查詢僅涉及一個(gè)表,又分為:選擇表中的若干列選擇表中的若干元組
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.查詢課程的所有信息查詢語(yǔ)法SELECT
<輸出列表>]…FROM數(shù)據(jù)源列表習(xí)題1.查詢所有課程的課程名和學(xué)分
selectcname,creditfromcourse2.查詢課程的所有信息查詢語(yǔ)法SELECT
<輸出列表>]…FROM數(shù)據(jù)源列表習(xí)題1.查詢所有課程的課程名和學(xué)分
selectcname,creditfromcourse2.查詢課程的所有信息
select*fromcourseselectCno,cname,hours,credit,Semesterfromcourse查詢語(yǔ)法SELECT
<輸出列表>]…FROM數(shù)據(jù)源列表①選擇表中的若干列查詢經(jīng)過(guò)計(jì)算的值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)日期和時(shí)間
year(DATA):返回日期中的年
month(DATA):返回日期中的月
day(DATA):返回日期中的日②
選擇表中的若干元組【例題5-5】查詢學(xué)生分布在哪些民族
SELECTNationFROMStudent等價(jià)于: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]]說(shuō)明: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é)號(hào)、姓名、出生日期。1:SELECTSno,Name,BirthdayFROMStudent
WHEREYEAR(GETDATE())-YEAR(Birthday)BETWEEN19AND232:SELECTSno,Name,BirthdayFROMStudent
WHEREYEAR(GETDATE())-YEAR(Birthday)>=19
ANDYEAR(GETDATE())-YEAR(Birthday)<=23操作練習(xí)實(shí)驗(yàn)4單表查詢(一)1~5題
②
選擇表中的若干元組【例題5-9】查詢民族為“漢族”或者“滿族”的學(xué)生詳細(xì)信息。SELECT*FROMStudentWHERENationin('漢族','滿族')或者SELECT*FROMStudentWHERENation='漢族'orNation='滿族'②
選擇表中的若干元組【例題5-10】查詢哪些學(xué)生選課了還沒(méi)有考試成績(jī),顯示學(xué)號(hào),課程號(hào)。SELECTSno,CnoFROMSCWHEREGradeisNULL判斷空值不能用等號(hào)=②
選擇表中的若干元組-模糊查詢【例題5-11】查詢哪些學(xué)生姓名中含有“南”字。SELECT*FROMStudentWHERENameLIKE'%南%'模糊查詢通配符:%:任意長(zhǎng)度_:?jiǎn)蝹€(gè)字符②
選擇表中的若干元組-模糊查詢【例題5-13】找出所有姓“張”和姓“江”的員工信息。SELECT*FROMStudentWHERENameLIKE'[張,江]%'SELECT*FROMStudentWHEREsubstring(Name,1,1)IN('張','江')SELECT*FROMStudentWHEREleft(Name,1)IN('張','江')模糊查詢通配符:%:任意長(zhǎng)度_:?jiǎn)蝹€(gè)字符常用字符串函數(shù)Left(字符表達(dá)式,整數(shù)):截取從左側(cè)開(kāi)始指定位數(shù)的子字符串Right(字符表達(dá)式,整數(shù)):截取從右側(cè)開(kāi)始指定位數(shù)的子字符串Substring(字符表達(dá)式,起始位置,n):從任意位置取子串,截取從起始位置開(kāi)始的n個(gè)字符Ltrim(字符表達(dá)式):去掉字符表達(dá)式左側(cè)(前面)的空格Rtrim(字符表達(dá)式):去掉字符表達(dá)式右側(cè)(尾部)的空格操作練習(xí)實(shí)驗(yàn)4單表查詢(一)
14十二月2024SQLServer數(shù)據(jù)庫(kù)實(shí)踐SQL語(yǔ)言一般分四類數(shù)據(jù)定義語(yǔ)言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語(yǔ)言(DML,DataManipulationLanguage)數(shù)據(jù)查詢語(yǔ)言(DQL,DataQuery
Language)數(shù)據(jù)控制語(yǔ)言(DCL,DataControlLanguage)(+事務(wù))√√√√數(shù)據(jù)查詢語(yǔ)法SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]stuDB數(shù)據(jù)庫(kù)三張表數(shù)據(jù)查詢目錄1、單表查詢2、連接查詢3、嵌套查詢4、集合查詢5、基于派生表的查詢1、單表查詢單表查詢僅涉及一個(gè)表,又分為:選擇表中的若干列選擇表中的若干元組
ORDERBY排序子句聚集函數(shù)
GROUPBY分組子句√√③ORDERBY排序子句【例題5-16】查詢選修了1號(hào)課程的學(xué)生學(xué)號(hào)及其成績(jī),查詢結(jié)果按照成績(jī)降序排列。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]③ORDERBY排序子句【例題5-16】查詢選修了1號(hào)課程的學(xué)生學(xué)號(hào)及其成績(jī),查詢結(jié)果按照成績(jī)降序排列。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é)號(hào)、姓名、民族、出生日期,查詢結(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子句中如果沒(méi)有寫(xiě)排序字段,默認(rèn)升序④聚集函數(shù)五個(gè)聚集函數(shù),只有count()函數(shù)多種用法函數(shù)功能COUNT(*)統(tǒng)計(jì)元組(行、記錄)數(shù)COUNT(<列名>)統(tǒng)計(jì)該列(字段、屬性)值不為空的元組數(shù)COUNT(DISTINCT<列名>)統(tǒng)計(jì)該列值不為空,并且值不重復(fù)的元組數(shù)SUM(<列名>)計(jì)算一列值的總和(此列必須為數(shù)值型)AVG(<列名>)計(jì)算一列值的平均值(此列必須為數(shù)值型)MAX(<列名>)求一列值的最大值MIN(<列名>)求一列值的最小值④聚集函數(shù)【例題5-18】統(tǒng)計(jì)有多少名學(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】查詢課程表中有多少門必修課(選修課的開(kāi)課學(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)計(jì)行數(shù),不考慮空值COUNT(列名)
統(tǒng)計(jì)該列不為空的行數(shù)COUNT(DISTINCT列名)統(tǒng)計(jì)該列不為空
并且不重復(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語(yǔ)句統(tǒng)計(jì)學(xué)校一共開(kāi)設(shè)了多少門課程用SQL語(yǔ)句統(tǒng)計(jì)少數(shù)民族學(xué)生的人數(shù)用SQL語(yǔ)句統(tǒng)計(jì)學(xué)生有多少個(gè)民族用SQL語(yǔ)句統(tǒng)計(jì)學(xué)校課程的總學(xué)時(shí),以及最高學(xué)分、最低學(xué)分用SQL語(yǔ)句統(tǒng)計(jì)2號(hào)課程參加考試的人數(shù)用SQL語(yǔ)句統(tǒng)計(jì)1號(hào)課程的平均分COUNT()計(jì)數(shù)SUM()求和AVG()求平均分MAX()求最大值MIN()求最低分SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表
[WHERE<條件表達(dá)式>]習(xí)題1用SQL語(yǔ)句統(tǒng)計(jì)學(xué)校一共開(kāi)設(shè)了多少門課程用SQL語(yǔ)句統(tǒng)計(jì)少數(shù)民族學(xué)生的人數(shù)用SQL語(yǔ)句統(tǒng)計(jì)學(xué)生有多少個(gè)民族用SQL語(yǔ)句統(tǒng)計(jì)學(xué)校課程的總學(xué)時(shí),以及最高學(xué)分、最低學(xué)分用SQL語(yǔ)句統(tǒng)計(jì)2號(hào)課程參加考試的人數(shù)用SQL語(yǔ)句統(tǒng)計(jì)1號(hào)課程的平均分selectcount(*)fromcourseselectcount(cno)fromcourseselectcount(*)fromstudentwherenation<>’漢族’selectcount(distinctnation)fromstudentselectsum(hours),max(credit),min(credit)fromcourseselectcount(grade)fromSCwherecno=2selectcount(*)fromSCwherecno=2andgradeisnotnullselectavg(grade)fromSCwherecno=1COUNT()計(jì)數(shù)、SUM()求和AVG()求平均分、MAX()求最大值
、MIN()求最低分?jǐn)?shù)據(jù)查詢語(yǔ)法SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]⑤GROUPBY子句GROUPBY子句分組:細(xì)化聚集函數(shù)的作用對(duì)象未分組,聚集函數(shù)將作用于整個(gè)查詢結(jié)果分組后,聚集函數(shù)將分別作用于每個(gè)組,按一列或多列分組,值相等的為一組⑤GROUPBY子句【例題5-18】統(tǒng)計(jì)有多少名學(xué)生。SELECTcount(*)學(xué)生數(shù)FROMStudent【進(jìn)階】統(tǒng)計(jì)各個(gè)民族分別有多少名學(xué)生。SELECTnation,count(*)學(xué)生數(shù)FROMStudentgroupbynationGROUPBY分組后,聚集函數(shù)將分別作用于每個(gè)組值相等的為一組,分組統(tǒng)計(jì)⑤GROUPBY子句【例題5-19】查詢學(xué)生學(xué)習(xí)所有課程獲得的最高分、最低分和平均分。SELECTmax(Grade)最高分,min(Grade)最低分,avg(Grade)平均分FROMSC【進(jìn)階1例題5-22】查詢每門課程
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)一年級(jí)20以內(nèi)連加連減口算練習(xí)題1080道非常好
- 《現(xiàn)代農(nóng)業(yè)綠色食品》課件
- 《項(xiàng)目融資b》課件
- 《烴的燃燒規(guī)律總結(jié)》課件
- 如何預(yù)防兒童齲齒
- 《胸腔引流導(dǎo)管》課件
- 園林綠化行業(yè)客服工作心得
- 電子工程師電子設(shè)備設(shè)計(jì)與調(diào)試
- 旅游景點(diǎn)保安工作總結(jié)
- 《紅細(xì)胞與貧血》課件
- 腫瘤科醫(yī)院感染管理制度
- 產(chǎn)品拆解:飛書(shū)多維表格怎么用
- 意識(shí)障礙的診斷鑒別診斷及處理
- 客房服務(wù)員(四級(jí))考證理論考核試題及答案
- 英語(yǔ)演講知到章節(jié)答案智慧樹(shù)2023年哈爾濱工程大學(xué)
- 商務(wù)禮儀培訓(xùn)職業(yè)禮儀員工培訓(xùn)PPT
- 圍手術(shù)期手術(shù)部位感染預(yù)防與控制措施試題及答案
- 本田品質(zhì)管理基礎(chǔ)課程(課堂PPT)
- 教育科學(xué)研究方法(第二版) 單元1 主題6 熟悉本學(xué)科著名的辦學(xué)機(jī)構(gòu)
- JC∕T 2647-2021 預(yù)拌混凝土生產(chǎn)企業(yè)廢水回收利用規(guī)范
- 三星公司供應(yīng)鏈管理流程綜合分析報(bào)告
評(píng)論
0/150
提交評(píng)論