版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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ǔ)入門(mén)課程學(xué)習(xí)方法數(shù)據(jù)庫(kù)無(wú)處不在可以登錄教務(wù)系統(tǒng)多次查詢(xún)課表、查詢(xún)自己的成績(jī)。你的個(gè)人賬號(hào)、密碼、收貨地址、購(gòu)物信息等存在哪里?動(dòng)態(tài)網(wǎng)站的工作過(guò)程(以淘寶網(wǎng)為例)(客戶(hù)機(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ù)不管什么專(zhuān)業(yè)的學(xué)生,
都有必要學(xué)學(xué)數(shù)據(jù)庫(kù)知識(shí)數(shù)據(jù)庫(kù)的定義數(shù)據(jù)庫(kù)(Database,簡(jiǎn)稱(chēng)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)化查詢(xún)語(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)稱(chēng)SSMS操作演示課后作業(yè)完成云教材學(xué)習(xí)任務(wù)。SQLServer數(shù)據(jù)庫(kù)實(shí)踐14十二月2024回顧數(shù)據(jù)庫(kù)(Database,簡(jiǎn)稱(chēng)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ù)類(lèi)型說(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ù)類(lèi)型(附錄B)附表B-1字符類(lèi)型常用數(shù)據(jù)類(lèi)型(附錄B)附表B-2數(shù)字類(lèi)型數(shù)據(jù)類(lèi)型說(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ù)類(lèi)型在功能上等效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ù)類(lèi)型(附錄B)附表B-3日期類(lèi)型數(shù)據(jù)類(lèi)型說(shuō)明精度date日期型,4個(gè)字節(jié),無(wú)時(shí)間,1753年1月1日到9999年12月31日,SQLServer2008版新增的數(shù)據(jù)類(lèi)型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ù)類(lèi)型1毫秒約束關(guān)系模型有三類(lèi)完整性約束實(shí)體完整性(通過(guò)主鍵實(shí)現(xiàn))參照完整性(通過(guò)外鍵實(shí)現(xiàn))用戶(hù)自定義完整性(檢查約束、非空約束、唯一約束、默認(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)稱(chēng)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ù)嵌在程序中使用(客戶(hù)機(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í)行查詢(xún)操作⑥返回查詢(xún)結(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)化查詢(xún)語(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)化查詢(xún)語(yǔ)言,NotonlyQuery
SQL語(yǔ)言數(shù)據(jù)查詢(xún)數(shù)據(jù)定義數(shù)據(jù)操縱(增、刪、改)數(shù)據(jù)安全控制事務(wù)處理SQL語(yǔ)言一般分四類(lèi)數(shù)據(jù)定義語(yǔ)言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語(yǔ)言(DML,DataManipulationLanguage)數(shù)據(jù)查詢(xún)語(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)操作演示--后面是單行注釋?zhuān)粓?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ù)文件邏輯名稱(chēng)|ADDFILEGROUP文件組名|REMOVEFILEGROUP文件組名|MODIFYFILE<數(shù)據(jù)文件參數(shù)> |MODIFYNAME=新數(shù)據(jù)庫(kù)名 |SET<參數(shù)>/*數(shù)據(jù)庫(kù)參數(shù)設(shè)置*/}/**/中間是多行注釋?zhuān)粓?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ù)類(lèi)型>[<列級(jí)完整性約束>][,<列名><數(shù)據(jù)類(lèi)型>[<列級(jí)完整性約束>]]…[,<表級(jí)完整性約束>]);問(wèn)題:數(shù)據(jù)類(lèi)型都有哪些?
完整性約束有哪些?SQLServer中常用數(shù)據(jù)類(lèi)型字符類(lèi)型數(shù)據(jù)類(lèi)型說(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ù)類(lèi)型數(shù)字類(lèi)型數(shù)據(jù)類(lèi)型說(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ù)類(lèi)型在功能上等效。SQLServer中常用數(shù)據(jù)類(lèi)型日期類(lèi)型數(shù)據(jù)類(lèi)型說(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ù)類(lèi)型貨幣類(lèi)型數(shù)據(jù)類(lèi)型說(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ù)類(lèi)型>[<列級(jí)完整性約束>][,<列名><數(shù)據(jù)類(lèi)型>[<列級(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ù)類(lèi)型>[完整性約束]][ADD<表級(jí)完整性約束>][DROP[COLUMN]<列名>[CASCADE|RESTRICT]][DROPCONSTRAINT<完整性約束名>[CASCADE|RESTRICT]][ALTERCOLUMN<列名><數(shù)據(jù)類(lèi)型>];修改基本表
ALTERTABLEStudentADDS_entranceDATE;不論基本表中原來(lái)是否已有數(shù)據(jù),新增加的列一律為空值。
[例6]向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類(lèi)型為日期型。修改基本表[例7]將年齡的數(shù)據(jù)類(lèi)型由字符型(假設(shè)原來(lái)的數(shù)據(jù)類(lèi)型是字符型)改為整數(shù)。
ALTERTABLEStudentALTER
COLUMNSageINT;[例8]增加課程名稱(chēng)必須取唯一值的約束條件。
ALTERTABLECourseADDUNIQUE(Cname);刪除基本表語(yǔ)法: DROPTABLE<表名>[例9]刪除Student表。
DROPTABLEStudent
操作練習(xí)實(shí)驗(yàn)3數(shù)據(jù)定義
14十二月2024SQLServer數(shù)據(jù)庫(kù)實(shí)踐SQL語(yǔ)言一般分四類(lèi)數(shù)據(jù)定義語(yǔ)言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語(yǔ)言(DML,DataManipulationLanguage)數(shù)據(jù)查詢(xún)語(yǔ)言(DQL,DataQuery
Language)數(shù)據(jù)控制語(yǔ)言(DCL,DataControlLanguage)(+事務(wù))創(chuàng)建數(shù)據(jù)庫(kù)
createdatabase創(chuàng)建表createtable插入數(shù)據(jù)兩種插入數(shù)據(jù)方式①插入元組②插入子查詢(xún)結(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ù)值的類(lèi)型插入數(shù)據(jù)語(yǔ)法:
INSERTINTO<表名>[(<屬性列1>[,<屬性列2>…)]VALUES(<常量1>[,<常量2>]…)INSERTINTO
Student(Sno,Sname)VALUES
(200215128,'陳冬');插入數(shù)據(jù)
插入語(yǔ)句時(shí)會(huì)檢查自動(dòng)所插元組是否破壞表上已定義的完整性規(guī)則實(shí)體完整性參照完整性用戶(hù)定義的完整性NOTNULL約束UNIQUE約束值域約束提示:語(yǔ)法沒(méi)錯(cuò),語(yǔ)句也不一定能執(zhí)行成功。成功前提:不違反表中約束,符合域(屬性的取值范圍)的限制修改數(shù)據(jù)修改數(shù)據(jù)語(yǔ)法
UPDATE<表名>SET<列名>=<表達(dá)式>[,<列名>=<表達(dá)式>]…[WHERE<條件>];修改數(shù)據(jù)修改數(shù)據(jù)三種方式:
修改某一個(gè)元組的值
修改多個(gè)元組的值
帶子查詢(xún)的修改語(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í)體完整性參照完整性用戶(hù)定義的完整性
NOTNULL約束
UNIQUE約束值域約束刪除數(shù)據(jù)刪除數(shù)據(jù)語(yǔ)法
DELETE[FROM]<表名>[WHERE<條件>];4.數(shù)據(jù)更新:刪除數(shù)據(jù)三種刪除數(shù)據(jù)的方式:刪除某一個(gè)元組的值刪除多個(gè)元組的值帶子查詢(xún)的刪除語(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ǔ)言一般分四類(lèi)數(shù)據(jù)定義語(yǔ)言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語(yǔ)言(DML,DataManipulationLanguage)數(shù)據(jù)查詢(xún)語(yǔ)言(DQL,DataQuery
Language)數(shù)據(jù)控制語(yǔ)言(DCL,DataControlLanguage)(+事務(wù))√√√√數(shù)據(jù)查詢(xún)語(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ù)查詢(xún)目錄1、單表查詢(xún)2、連接查詢(xún)3、嵌套查詢(xún)4、集合查詢(xún)5、基于派生表的查詢(xún)1、單表查詢(xún)單表查詢(xún)僅涉及一個(gè)表,又分為:選擇表中的若干列選擇表中的若干元組
ORDERBY排序子句聚集函數(shù)
GROUPBY分組子句①
選擇表中的若干列【例題5-1】查詢(xún)?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】查詢(xún)?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】查詢(xún)?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.查詢(xún)所有課程的課程名和學(xué)分2.查詢(xún)課程的所有信息查詢(xún)語(yǔ)法SELECT
<輸出列表>]…FROM數(shù)據(jù)源列表習(xí)題1.查詢(xún)所有課程的課程名和學(xué)分
selectcname,creditfromcourse2.查詢(xún)課程的所有信息查詢(xún)語(yǔ)法SELECT
<輸出列表>]…FROM數(shù)據(jù)源列表習(xí)題1.查詢(xún)所有課程的課程名和學(xué)分
selectcname,creditfromcourse2.查詢(xún)課程的所有信息
select*fromcourseselectCno,cname,hours,credit,Semesterfromcourse查詢(xún)語(yǔ)法SELECT
<輸出列表>]…FROM數(shù)據(jù)源列表①選擇表中的若干列查詢(xún)經(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】查詢(xún)學(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】查詢(xún)學(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】查詢(xún)學(xué)生分布在哪些民族
SELECTNationFROMStudent等價(jià)于:SELECTALLNationFROMStudent SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]②
選擇表中的若干元組【例題5-5】查詢(xún)學(xué)生分布在哪些民族
SELECTDISTINCTNationFROMStudent SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]說(shuō)明:DISTINCT關(guān)鍵詞,去掉查詢(xún)結(jié)果中重復(fù)的行②
選擇表中的若干元組【例題5-7】查詢(xún)哪些學(xué)生是少數(shù)民族,顯示學(xué)生姓名和民族。SELECTName,NationFROMStudentWHERENation<>'漢族'SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]WHERE
子句中常用的查詢(xún)運(yùn)算符查詢(xún)條件謂詞比較=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比較運(yùn)算符確定范圍BETWEENAND,NOTBETWEENAND確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件(邏輯運(yùn)算)AND,OR,NOT②
選擇表中的若干元組【例題5-8】查詢(xún)年齡在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單表查詢(xún)(一)1~5題
②
選擇表中的若干元組【例題5-9】查詢(xún)民族為“漢族”或者“滿(mǎn)族”的學(xué)生詳細(xì)信息。SELECT*FROMStudentWHERENationin('漢族','滿(mǎn)族')或者SELECT*FROMStudentWHERENation='漢族'orNation='滿(mǎn)族'②
選擇表中的若干元組【例題5-10】查詢(xún)哪些學(xué)生選課了還沒(méi)有考試成績(jī),顯示學(xué)號(hào),課程號(hào)。SELECTSno,CnoFROMSCWHEREGradeisNULL判斷空值不能用等號(hào)=②
選擇表中的若干元組-模糊查詢(xún)【例題5-11】查詢(xún)哪些學(xué)生姓名中含有“南”字。SELECT*FROMStudentWHERENameLIKE'%南%'模糊查詢(xún)通配符:%:任意長(zhǎng)度_:?jiǎn)蝹€(gè)字符②
選擇表中的若干元組-模糊查詢(xún)【例題5-13】找出所有姓“張”和姓“江”的員工信息。SELECT*FROMStudentWHERENameLIKE'[張,江]%'SELECT*FROMStudentWHEREsubstring(Name,1,1)IN('張','江')SELECT*FROMStudentWHEREleft(Name,1)IN('張','江')模糊查詢(xún)通配符:%:任意長(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單表查詢(xún)(一)
14十二月2024SQLServer數(shù)據(jù)庫(kù)實(shí)踐SQL語(yǔ)言一般分四類(lèi)數(shù)據(jù)定義語(yǔ)言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語(yǔ)言(DML,DataManipulationLanguage)數(shù)據(jù)查詢(xún)語(yǔ)言(DQL,DataQuery
Language)數(shù)據(jù)控制語(yǔ)言(DCL,DataControlLanguage)(+事務(wù))√√√√數(shù)據(jù)查詢(xún)語(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ù)查詢(xún)目錄1、單表查詢(xún)2、連接查詢(xún)3、嵌套查詢(xún)4、集合查詢(xún)5、基于派生表的查詢(xún)1、單表查詢(xún)單表查詢(xún)僅涉及一個(gè)表,又分為:選擇表中的若干列選擇表中的若干元組
ORDERBY排序子句聚集函數(shù)
GROUPBY分組子句①
選擇表中的若干列【例題5-1】查詢(xún)?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】查詢(xún)?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】查詢(xún)?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.查詢(xún)所有課程的課程名和學(xué)分2.查詢(xún)課程的所有信息查詢(xún)語(yǔ)法SELECT
<輸出列表>]…FROM數(shù)據(jù)源列表習(xí)題1.查詢(xún)所有課程的課程名和學(xué)分
selectcname,creditfromcourse2.查詢(xún)課程的所有信息查詢(xún)語(yǔ)法SELECT
<輸出列表>]…FROM數(shù)據(jù)源列表習(xí)題1.查詢(xún)所有課程的課程名和學(xué)分
selectcname,creditfromcourse2.查詢(xún)課程的所有信息
select*fromcourseselectCno,cname,hours,credit,Semesterfromcourse查詢(xún)語(yǔ)法SELECT
<輸出列表>]…FROM數(shù)據(jù)源列表①選擇表中的若干列查詢(xún)經(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】查詢(xún)學(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】查詢(xún)學(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】查詢(xún)學(xué)生分布在哪些民族
SELECTNationFROMStudent等價(jià)于:SELECTALLNationFROMStudent SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]②
選擇表中的若干元組【例題5-5】查詢(xún)學(xué)生分布在哪些民族
SELECTDISTINCTNationFROMStudent SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]說(shuō)明:DISTINCT關(guān)鍵詞,去掉查詢(xún)結(jié)果中重復(fù)的行②
選擇表中的若干元組【例題5-7】查詢(xún)哪些學(xué)生是少數(shù)民族,顯示學(xué)生姓名和民族。SELECTName,NationFROMStudentWHERENation<>'漢族'SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]WHERE
子句中常用的查詢(xún)運(yùn)算符查詢(xún)條件謂詞比較=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比較運(yùn)算符確定范圍BETWEENAND,NOTBETWEENAND確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件(邏輯運(yùn)算)AND,OR,NOT②
選擇表中的若干元組【例題5-8】查詢(xún)年齡在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單表查詢(xún)(一)1~5題
②
選擇表中的若干元組【例題5-9】查詢(xún)民族為“漢族”或者“滿(mǎn)族”的學(xué)生詳細(xì)信息。SELECT*FROMStudentWHERENationin('漢族','滿(mǎn)族')或者SELECT*FROMStudentWHERENation='漢族'orNation='滿(mǎn)族'②
選擇表中的若干元組【例題5-10】查詢(xún)哪些學(xué)生選課了還沒(méi)有考試成績(jī),顯示學(xué)號(hào),課程號(hào)。SELECTSno,CnoFROMSCWHEREGradeisNULL判斷空值不能用等號(hào)=②
選擇表中的若干元組-模糊查詢(xún)【例題5-11】查詢(xún)哪些學(xué)生姓名中含有“南”字。SELECT*FROMStudentWHERENameLIKE'%南%'模糊查詢(xún)通配符:%:任意長(zhǎng)度_:?jiǎn)蝹€(gè)字符②
選擇表中的若干元組-模糊查詢(xún)【例題5-13】找出所有姓“張”和姓“江”的員工信息。SELECT*FROMStudentWHERENameLIKE'[張,江]%'SELECT*FROMStudentWHEREsubstring(Name,1,1)IN('張','江')SELECT*FROMStudentWHEREleft(Name,1)IN('張','江')模糊查詢(xún)通配符:%:任意長(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單表查詢(xún)(一)
14十二月2024SQLServer數(shù)據(jù)庫(kù)實(shí)踐SQL語(yǔ)言一般分四類(lèi)數(shù)據(jù)定義語(yǔ)言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語(yǔ)言(DML,DataManipulationLanguage)數(shù)據(jù)查詢(xún)語(yǔ)言(DQL,DataQuery
Language)數(shù)據(jù)控制語(yǔ)言(DCL,DataControlLanguage)(+事務(wù))√√√√數(shù)據(jù)查詢(xún)語(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ù)查詢(xún)目錄1、單表查詢(xún)2、連接查詢(xún)3、嵌套查詢(xún)4、集合查詢(xún)5、基于派生表的查詢(xún)1、單表查詢(xún)單表查詢(xún)僅涉及一個(gè)表,又分為:選擇表中的若干列選擇表中的若干元組
ORDERBY排序子句聚集函數(shù)
GROUPBY分組子句√√③ORDERBY排序子句【例題5-16】查詢(xún)選修了1號(hào)課程的學(xué)生學(xué)號(hào)及其成績(jī),查詢(xún)結(jié)果按照成績(jī)降序排列。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<條件表達(dá)式>]][ORDERBY<排序表達(dá)式>[ASC|DESC]]③ORDERBY排序子句【例題5-16】查詢(xún)選修了1號(hào)課程的學(xué)生學(xué)號(hào)及其成績(jī),查詢(xún)結(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】查詢(xún)學(xué)生的學(xué)號(hào)、姓名、民族、出生日期,查詢(xún)結(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】查詢(xún)有多少學(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】查詢(xún)課程表中有多少門(mén)必修課(選修課的開(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】查詢(xún)學(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è)了多少門(mén)課程用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è)了多少門(mén)課程用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ù)查詢(xún)語(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è)查詢(xún)結(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】查詢(xún)學(xué)生學(xué)習(xí)所有課程獲得的最高分、最低分和平均分。SELECTmax(Grade)最高分,min(Grade)最低分,avg(Grade)平均分FROMSC【進(jìn)階1例題5-22】查詢(xún)每門(mén)課程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年農(nóng)村土地承包經(jīng)營(yíng)權(quán)互換合同示范文本3篇
- 2024版二手房買(mǎi)賣(mài)合同代辦與房屋權(quán)屬證明服務(wù)協(xié)議2篇
- 2024年度三方新能源汽車(chē)貨權(quán)轉(zhuǎn)讓合同范本3篇
- 2024年度廣告公司與戶(hù)外廣告運(yùn)營(yíng)商關(guān)于2024年度戶(hù)外廣告投放合同3篇
- 2024年標(biāo)準(zhǔn)化行政管理合同樣本版B版
- 2024年度物業(yè)項(xiàng)目轉(zhuǎn)讓合同3篇
- 2024年商品混凝土運(yùn)輸及結(jié)算合同示范文本
- 2024年度體育設(shè)施抵押貸款保證合同3篇
- 2024年家居用品買(mǎi)賣(mài)合同英文翻譯范本3篇
- 2024年度供應(yīng)鏈管理服務(wù)合同的貨物描述與擔(dān)保
- vte患者個(gè)案護(hù)理
- 聲學(xué)實(shí)驗(yàn)設(shè)計(jì):聲音的傳播和共振現(xiàn)象
- 第五章 中國(guó)特色社會(huì)主義理論體系的形成發(fā)展(一)
- 芭蕾舞演出策劃方案
- 異型件自動(dòng)插件機(jī)設(shè)計(jì)
- 電腦病毒及預(yù)防課件
- 新版中國(guó)食物成分表
- 零食店開(kāi)業(yè)活動(dòng)策劃
- 《小米手機(jī)分析》課件
- 初中數(shù)學(xué)專(zhuān)項(xiàng)練習(xí)《二次函數(shù)》92道計(jì)算題包含答案
- 教師法律法規(guī)講座課件
評(píng)論
0/150
提交評(píng)論