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

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論