版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫的增刪改查第1頁,共37頁,2023年,2月20日,星期六第二章數(shù)據(jù)庫的增刪改查第2頁,共37頁,2023年,2月20日,星期六回顧數(shù)據(jù)類型分哪兩種類型裝箱和拆箱的關(guān)系簡單類型以及其字節(jié)數(shù)與范圍變量命名規(guī)則聲明變量方法第3頁,共37頁,2023年,2月20日,星期六課程目標(biāo)使用insert語句向表中插入數(shù)據(jù)使用update語句更新表中數(shù)據(jù)使用delete語句刪除表中數(shù)據(jù)使用select語句進(jìn)行查詢第4頁,共37頁,2023年,2月20日,星期六示例數(shù)據(jù)庫:學(xué)生--課程數(shù)據(jù)庫學(xué)生表:Student(Sno,Sname,Ssex,Sage,Sdept)課程表:Course(Cno,Cname)學(xué)生選課表:SC(Sno,Cno,Grade)
第5頁,共37頁,2023年,2月20日,星期六2.1添加數(shù)據(jù)使用insert語句添加數(shù)據(jù)的一般格式:insert[into]<表名>[列名]values<值列表>省略列名--指定值的順序必須與表中的列順序一致
只有部分列包含值insertinto員工信息表(姓名,性別,職務(wù))values(‘張三','男','經(jīng)理')insertinto員工信息表values(‘張三','經(jīng)理','男')insertinto員工信息表(姓名,職務(wù))values(‘李四',null)第6頁,共37頁,2023年,2月20日,星期六使用selectinto語句復(fù)制表的結(jié)構(gòu)和數(shù)據(jù)select*into普通職員表from員工信息表where職務(wù)='職員'selectinto和insertinto都可以添加多行數(shù)據(jù),兩者的區(qū)別insertinto語句中用于添加數(shù)據(jù)的目標(biāo)表要求已經(jīng)存在selectinto語句會創(chuàng)建新表,要求不存在同名的表第7頁,共37頁,2023年,2月20日,星期六2.2更新數(shù)據(jù)update語句:可更新表中單行,行組或所有行的數(shù)據(jù)一般格式為:update表名set列名1=新值1,列名2=新值2…where條件
update員工信息表 set職務(wù)='職員' where姓名=‘張三’
update圖書信息 set庫存數(shù)量=庫存數(shù)據(jù)+20 where出版社編號=1第8頁,共37頁,2023年,2月20日,星期六2.3刪除數(shù)據(jù)使用delete語句刪除行 delete[from]表名where條件deletefrom教師信息表where職務(wù)isnull注意:如果delete語句沒有where條件,則刪除表中所有行,但保留表的結(jié)構(gòu)delete新職員表使用truncatetable刪除表中所有行truncatetable新職員表用truncate和delete都可以刪除表的所有行,兩者的區(qū)別truncate語句不寫日志,執(zhí)行速度比delete語句快,但不可回滾第9頁,共37頁,2023年,2月20日,星期六數(shù)據(jù)查詢是數(shù)據(jù)庫中最常見的操作。SQL語言提供SELECT語句,通過查詢操作可得到所需的信息。
SELECT語句的一般格式為:
2.4查詢數(shù)據(jù)SELECT<列名>FROM<表名>[WHERE<查詢條件表達(dá)式>][GROUPBY<分組的列名>[HAVING<條件表達(dá)式>]][ORDERBY<排序的列名>[ASC或DESC]]第10頁,共37頁,2023年,2月20日,星期六
SELECT語句的執(zhí)行過程是:根據(jù)WHERE子句的檢索條件,從FROM子句指定的基本表或視圖中選取滿足條件的元組,再按照SELECT子句中指定的列,投影得到結(jié)果表。如果有GROUP子句,則將查詢結(jié)果按照<列名1>相同的值進(jìn)行分組。如果GROUP子句后有HAVING短語,則只輸出滿足HAVING條件的元組。如果有ORDER子句,查詢結(jié)果還要按照<列名2>的值進(jìn)行排序。第11頁,共37頁,2023年,2月20日,星期六[例3-23]查詢?nèi)w學(xué)生的學(xué)號、姓名和年齡。SELECTSNo,SN,AgeFROMS[例3-24]查詢學(xué)生的全部信息。SELECT*FROMS[例3-25]查詢選修了課程的學(xué)生號。SELECTDISTINCTSNoFROMSC[例3-26]查詢?nèi)w學(xué)生的姓名、學(xué)號和年齡。SELECTSNName,SNo,AgeFROMSSELECTSNASName,SNo,Age第12頁,共37頁,2023年,2月20日,星期六2.4.2條件查詢運算符含義=,>,<,>=,<=,!=,<>比較大小AND,OR,NOT多重條件BETWEENAND確定范圍IN確定集合LIKE字符匹配ISNULL空值第13頁,共37頁,2023年,2月20日,星期六2.4.2.1比較大小
例2.5查詢選修課程號為‘C1‘的學(xué)生的學(xué)號和成績SELECTSNO,SCOREFROMSCWHERECNO=‘C1’
例2.6查詢成績高于85分的學(xué)生的學(xué)號、課程號和成績。SELECTSNO,CNO,SCOREFROMSCWHERESCORE>85
第14頁,共37頁,2023年,2月20日,星期六2.4.2.2多重條件查詢當(dāng)WHERE子句需要指定一個以上的查詢條件時,則需要使用邏輯運算符AND、OR和NOT將其連結(jié)成復(fù)合的邏輯表達(dá)式。其優(yōu)先級由高到低為:NOT、AND、OR,用戶可以使用括號改變優(yōu)先級。例2.7查詢選修C1或C2且分?jǐn)?shù)大于等于85分學(xué)生的的學(xué)號、課程號和成績。SELECTSNO,CNO,SCOREFROMSCWHERE(CNO=’C1’ORCNO=’C2’ANDSCORE>=85))
第15頁,共37頁,2023年,2月20日,星期六2.4.2.3確定范圍例2.8查詢工資在1000至1500間的教師的教師號姓名及職稱SELECTTNO,TN,PROFFROMTWHERESALBETWEEN1000AND1500等價于
SELECTTNO,TN,PROFFROMTWHERESAL>1000ANDSAL<1500
例3.9查詢工資不在1000至1500之間的教師的教師號、姓名及職稱。SELECTTNO,TN,PROFFROMTWHERESALNOTBETWEEN1000AND1500第16頁,共37頁,2023年,2月20日,星期六2.4.2.4確定集合利用“IN”操作可以查詢屬性值屬于指定集合的元組。例3.10查詢選修C1或C2的學(xué)生的學(xué)號、課程號和成績。SELECTSNO,CNO,SCOREFROMSCWHERECNOIN(‘C1’,‘C2’)此語句也可以使用邏輯運算符“OR”實現(xiàn)。SELECTSNO,CNO,SCOREFROMSCWHERECNO=‘C1’ORCNO=‘C2’利用“NOTIN”可以查詢指定集合外的元組。
第17頁,共37頁,2023年,2月20日,星期六例2.11查詢沒有選修C1,也沒有選修C2的學(xué)生的學(xué)號、課程號和成績。SELECTSNO,CNO,SCOREFROMSCWHERECNONOTIN(‘C1’,‘C2’)等價于:SELECTSNO,CNO,SCOREFROMSCWHERECNO!=‘C1’ANDCNO!=‘C2’
最后一行也可以寫成:WHERE(CNO<>‘C1’)AND(CNO<>‘C2’)第18頁,共37頁,2023年,2月20日,星期六2.4.2.5部分匹配查詢
上例均屬于完全匹配查詢,當(dāng)不知道完全精確的値時,用戶還可以使用LIKE或NOTLIKE進(jìn)行部分匹配查詢(也稱模糊查詢)。
LIKE定義的一般格式為:
<屬性名>LIKE<字符串常量>
屬性名必須為字符型,字符串常量的字符可以包含如下兩個特殊符號:通配符功能實例%代表0個或多個字符‘a(chǎn)b%’,’ab’后可連接任意字符串_下劃線代表一個字符‘a(chǎn)_b’,’a’與‘b’間可以有一個字符[]表示在某一范圍內(nèi)的字符[0-9],0~9之間的字符[^]表示不在某一范圍內(nèi)的字符[^0-9],不在0~9之間的字符第19頁,共37頁,2023年,2月20日,星期六
%:表示任意知長度的字符串;_:表示任意單個字符。例3.12查詢所有姓張的教師的教師號和姓名。SELECTTNO,TNFROMTWHERETNLIKE‘張%’例3.13查詢姓名中第二個漢字是“力”的教師號和姓名。SELECTTNO,TNFROMTWHERETNLIKE‘_力%’第20頁,共37頁,2023年,2月20日,星期六2.4.2.6空值查詢
某個字段沒有值稱之為具有空值(NULL)。通常沒有為一個列輸入值時,該列的值就是空值??罩挡煌诹愫涂崭?,它不占任何存儲空間。例如,某些學(xué)生選課后沒有參加考試,有選課記錄,但沒有考試成績,考試成績?yōu)榭罩?,這與參加考試,成績?yōu)榱惴值牟煌?。?.14查詢沒有考試成績的學(xué)生的學(xué)號和相應(yīng)的課程號。SELECTSNO,CNOFROMSCWHERESCOREISNULL注意:這里的空值條件為ISNULL,不能寫成SCORE=NULL。
第21頁,共37頁,2023年,2月20日,星期六2.4.3
常用庫函數(shù)及統(tǒng)計匯總查詢SQL提供了許多庫函數(shù)增強了基本檢索能力。常用的庫函數(shù),如表3.2所示:
函數(shù)名稱功能AVG按列計算平均值SUM按列計算值的總和MAX求一列中的最大值MIN求一列中的最小值COUNT按列值同濟個數(shù)例3.15求學(xué)號為S1學(xué)生的總分和平均分。SELECTSUM(SCORE)ASTotalScore,AVG(SCORE)ASAveScoreFROMSCWHERE(SNO='S1')注意:函數(shù)SUM和AVG只能對數(shù)值型字段進(jìn)行計算。第22頁,共37頁,2023年,2月20日,星期六例2.16求選修C1號課程的最高分、最低分及之間相差的分?jǐn)?shù)SELECTMAX(SCORE)ASMaxScore,MIN(SCORE)ASMinScore,MAX(SCORE)-MIN(SCORE)ASDiffFROMSCWHERE(CNO='C1')例3.17求計算機系學(xué)生的總數(shù)SELECTCOUNT(*)FROMSWHEREDEPT='計算機'例3.18求學(xué)校中共有多少個系SELECTCOUNT(DISTINCTDEPT)ASDeptNumFROMS注意:加入關(guān)鍵字DISTINCT后表示消去重復(fù)行,可計算字段“DEPT“不同值的數(shù)目。COUNT函數(shù)對空值不計算,但對零進(jìn)行計算。第23頁,共37頁,2023年,2月20日,星期六例2.19統(tǒng)計有成績同學(xué)的人數(shù)SELECTCOUNT(DISTINCTSNO)FROMSCWHERESCOREISNOTNULL上例中成績?yōu)榱愕耐瑢W(xué)計算在內(nèi),沒有成績(即為空值)的不計算。例2.20利用特殊函數(shù)COUNT(*)求計算機系學(xué)生的總數(shù)SELECTCOUNT(*)FROMSWHEREDEPT=‘計算機’COUNT(*)用來統(tǒng)計元組的個數(shù),不消除重復(fù)行,不允許使用DISTINCT關(guān)鍵字。第24頁,共37頁,2023年,2月20日,星期六
2.4.4分組查詢GROUPBY子句可以將查詢結(jié)果按屬性列或?qū)傩粤薪M合在行的方向上進(jìn)行分組,每組在屬性列或?qū)傩粤薪M合上具有相同的值。例3.21查詢各位教師的教師號及其任課的門數(shù)。SELECTTNO,COUNT(*)ASC_NUMFROMTCGROUPBYTNOGROUPBY子句按TNO的值分組,所有具有相同TNO的元組為一組,對每一組使用函數(shù)COUNT進(jìn)行計算,統(tǒng)計出各位教師任課的門數(shù)。若在分組后還要按照一定的條件進(jìn)行篩選,則需使用HAVIN子句。第25頁,共37頁,2023年,2月20日,星期六例2.22查詢選修兩門以上課程的學(xué)生學(xué)號和選課門數(shù)SELECTSNO,COUNT(*)ASSC_NUMFROMSCGROUPBYSNOHAVINGCOUNT(*)>=2GROUPBY子句按SNO的值分組,所有具有相同SNO的元組為一組,對每一組使用函數(shù)COUNT進(jìn)行計算,統(tǒng)計出每位學(xué)生選課的門數(shù)。HAVING子句去掉不滿足COUNT(*)>=2的組。當(dāng)在一個SQL查詢中同時使用WHERE子句,GROUPBY子句和HAVING子句時,其順序是WHERE-GROUPBY-HAVING。WHERE與HAVING子句的根本區(qū)別在于作用對象不同:WHERE子句作用于基本表或視圖,從中選擇滿足條件的元組;HAVING子句作用于組,選擇滿足條件的組,必須用于GROUPBY子句之后,但GROUPBY子句可沒有HAVING子句。
第26頁,共37頁,2023年,2月20日,星期六2.4.5查詢的排序當(dāng)需要對查詢結(jié)果排序時,應(yīng)該使用ORDERBY子句ORDERBY子句必須出現(xiàn)在其他子句之后。排序方式可以指定,DESC為降序,ASC為升序,缺省時為升序例3.23查詢選修C1的學(xué)生學(xué)號和成績,并按成績降序排列。SELECTSNO,SCOREFROMSCWHERECNO='C1'ORDERBYSCOREDESC例3.24查詢選修C2、C3、C4或C5課程的學(xué)號、課程號和成績,查詢結(jié)果按學(xué)號升序排列,學(xué)號相同再按成績降序排列。SELECTSNO,CNO,SCOREFROMSCWHERECNOIN('C2','C3','C4','C5')ORDERBYSNO,SCOREDESC第27頁,共37頁,2023年,2月20日,星期六例2.25求選課在三門以上且各門課程均及格的學(xué)生的學(xué)號及其總成績,查詢結(jié)果按總成績降序列出。SELECTSNO,SUM(SCORE)ASTotalScoreFROMSCWHERESCORE>=60GROUPBYSNOHAVINGCOUNT(*)>=3ORDERBYSUM(SCORE)DESC
此語句為分組排序,執(zhí)行過程如下:1.(FROM)取出整個SC2.(WHERE)篩選SCORE>=60的元組3.(GROUPBY)將選出的元組按SNO分組4.(HAVING)篩選選課三門以上的分組5.(SELECT)以剩下的組中提取學(xué)號和總成績6.(ORDERBY)將選取結(jié)果排序
第28頁,共37頁,2023年,2月20日,星期六練習(xí)查詢年齡不在20-23歲之間的學(xué)生姓名、系別和年齡。SELECTSname,Sdept,SageFROMStudentWHERESageNOTBETWEEN20AND23;書店來了一位新員工杜康,職務(wù)為部門主管,如何向員工信息表(員工編號,姓名,職務(wù))中添加他的信息?杜康從部門主管升為部門經(jīng)理,如何更新他的信息?杜康離職了,如何刪除他的信息?第29頁,共37頁,2023年,2月20日,星期六在一個SQL語句中,groupby、where、having這三部分正確使用次序是什么?selectinto和insertinto者可以添加多行數(shù)據(jù),兩者的區(qū)別是什么?用truncate和delete都可以刪除表的所有行,兩者的區(qū)別是什么?where和having的作用都是篩選數(shù)據(jù),它們的區(qū)別是什么?第30頁,共37頁,2023年,2月20日,星期六小結(jié)第31頁,共37頁,2023年,2月20日,星期六第32頁,共37頁,2023年,2月20日,星期六3.3變量3.3.1變量及其作用域
1.變量命名規(guī)則在C#2005中,變量命名規(guī)則如下:1)變量名的第首字符必須是字母、漢字或下劃線。2)變量名中不能包含空格、小數(shù)點以及各種符號。3)組成變量名的字符數(shù)不要太長,應(yīng)控制在3~30個字符。4)變量名不能是關(guān)鍵字。如:int,object等不能用作變量名。5)變量名在同一范圍內(nèi)必須是唯一的。第33頁,共37頁,2023年,2月20日,星期六3.3變量與常量3.3.1變量及其作用域
2.為變量命名時的注意事項
在為變量命名時注意以下幾點:1)變量名應(yīng)該能夠標(biāo)識事物的特性,如用于存放姓名的字符串變量可使用strName命名。2)變量名應(yīng)使用英文單詞,而不能為漢語拼音。3)變量名盡量不使用縮寫,除非它是眾所周知的。4)若在變量名中使用了多個單詞,則應(yīng)大寫每個單詞的第一個字母,其它字母小寫。例如:IsSuperUser。5)變量名應(yīng)使用說明數(shù)據(jù)類型的前綴縮寫,如str、i等。6)變量名中的單詞盡量使用名詞。如有動詞要盡量放在后面。第34頁,共37頁,2023年,2月20日,星期六3.3變量與常量3.3.1變量及其作用域
2.為變量命名時的注意事項變量有兩種典型的命名方法:駱駝表示法和匈牙利表示法。駱駝表示
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 益元散中藥成分分析-洞察分析
- 響應(yīng)式認(rèn)證系統(tǒng)設(shè)計-洞察分析
- 藥物相互作用-洞察分析
- 移動安全防護(hù)研究-洞察分析
- 溯源鏈與建筑信用體系-洞察分析
- 匠心筑夢技能報國三分鐘演講稿(7篇)
- 冬春森林防火方案(9篇)
- 文化遺產(chǎn)法政策體系構(gòu)建-洞察分析
- 《普通混凝土選》課件
- 網(wǎng)絡(luò)隱私政策優(yōu)化-洞察分析
- 2024年江西三校生對口升學(xué)考試語文試卷真題(含答案詳解)
- 語文園地三(課件)2024~2025學(xué)年語文一年級上冊統(tǒng)編版
- 《3 我和鳥類做朋友》(教案)-2023-2024學(xué)年五年級上冊綜合實踐活動粵教版
- GB 30254-2024高壓三相籠型異步電動機能效限定值及能效等級
- (高級)鐵路貨運員職業(yè)技能鑒定考試題庫(濃縮500題)
- 人體捐獻(xiàn)器官合同協(xié)議書
- 重大事故隱患判定標(biāo)準(zhǔn)與相關(guān)事故案例培訓(xùn)課件
- 2024年公開招聘駕駛員面試試題
- 2024年高考地理真題完全解讀(廣西卷)
- 2024至2030年中國沖調(diào)飲料行業(yè)市場深度研究及投資規(guī)劃建議報告
- 2024年貴州省中考理科綜合試卷(含答案解析)
評論
0/150
提交評論