版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章編輯數(shù)據(jù)本章學(xué)習(xí)目標(biāo):掌握插入單行記錄和多行記錄的方法掌握更新記錄的方法,包括根據(jù)查詢(xún)子句更新記錄的方法掌握刪除記錄的方法,包括根據(jù)查詢(xún)子句刪除記錄的方法以及清空表的方法
工作場(chǎng)景導(dǎo)入學(xué)校教務(wù)處工作人員在工作中經(jīng)常會(huì)遇到更新教學(xué)管理數(shù)據(jù)庫(kù)中數(shù)據(jù)的情況。例如,有以下更新需求:新生入學(xué)時(shí),需要大批量插入學(xué)生的選課信息;學(xué)生的選課信息錄入出錯(cuò)時(shí)需要進(jìn)行更改;修改各專(zhuān)業(yè)培養(yǎng)方案時(shí),會(huì)添加一批新課程、修改一批課程的信息,或者刪除一批課程。引導(dǎo)問(wèn)題:如何插入單個(gè)記錄或多條記錄?如何更新記錄?如何刪除記錄?5.1插入數(shù)據(jù)對(duì)教學(xué)管理數(shù)據(jù)庫(kù)中的表錄入數(shù)據(jù)、修改和刪除數(shù)據(jù)庫(kù)可以通過(guò)SSMS管理器進(jìn)行操作。5.1.1插入單行數(shù)據(jù)使用INSERT語(yǔ)句可向指定表中插入數(shù)據(jù)。INSERT語(yǔ)法的基本結(jié)構(gòu)如下:INSERT[INTO]<table_name>(column_name1,column_name2…,column_namen)VALUES(values1,values2,…,valuesn)其中,INTO關(guān)鍵字是可選的,可以忽略,teble_name指的是表的名稱(chēng),column_name1,column_name2…,column_namen指的是表中定義的列名稱(chēng),這些列必須在表中已經(jīng)定義,VALUES子句中的值values1,values2,…,valuesn指的是要插入的記錄在各列中的取值。INSERT語(yǔ)句中的列名必須與VALUES子句中的值一一對(duì)應(yīng),且數(shù)據(jù)類(lèi)型一致。1.最簡(jiǎn)單的INSERT語(yǔ)句【例5-1】向教學(xué)管理數(shù)據(jù)庫(kù)中的課程表中增加一門(mén)新課程,課程名稱(chēng)為“SQLServer2014”,其先修課為離散數(shù)學(xué)(課程號(hào)為1008),學(xué)分為3分。代碼如下:INSERTINTO課程(課程號(hào),課程名,先修課程號(hào),學(xué)分)VALUES('1007','SQLServer2014','1002',3)2.省略清單的INSERT語(yǔ)句【例5-2】使用省略清單的INSERT語(yǔ)句向教學(xué)管理數(shù)據(jù)庫(kù)中的課程表中增加一條新記錄,課程名稱(chēng)為“算法設(shè)計(jì)與分析”,課程號(hào)為“1017”,先修課為C語(yǔ)言(課程號(hào)為1003),學(xué)分為4分。代碼如下:INSERTINTO課程VALUES('1006','C語(yǔ)言','1005',3)3.使用DEFAULTVALUES子句上例中向課程表插入新課信息時(shí),如果表中先修課程號(hào)與學(xué)分這兩列允許插入空值或默認(rèn)值,則插入記錄的代碼也可以寫(xiě)成如下形式:INSERTINTO課程VALUES('1017','C語(yǔ)言',DEFAULT,NULL)如果表中所有列都允許為空,或者定義有默認(rèn)值或者其它可自動(dòng)獲取的數(shù)據(jù)類(lèi)型,則可以使用INSERT...DEFAULTVALUES語(yǔ)句向表中插入一行僅用默認(rèn)值的記錄,此行記錄唯一的參數(shù)是表名,列名和數(shù)據(jù)值都沒(méi)有。假設(shè)課程表中所有列都允許為空或者有默認(rèn)值,則可以使用如下語(yǔ)句向課程表中插入一條僅含有默認(rèn)值的記錄。INSERTINTO課程DEFAULTVALUES5.1.2插入多行數(shù)據(jù)利用INSERT…VALUES語(yǔ)句也可以向數(shù)據(jù)庫(kù)的表格中插入多行記錄,其語(yǔ)法結(jié)構(gòu)如下:INSERT[INTO]<table_name>(column_name1,column_name2…,column_namen)VALUES(val11,val12,…,val1n),(val21,val22,…,val2n),…,(valn1,valn2,…,valnn)其中,需要在VALUES后面輸入各條記錄的值。上述方法雖然能夠達(dá)到插入多行數(shù)據(jù)的目的,但是需要錄入大量的數(shù)據(jù)值,效率過(guò)低。下面介紹兩種較為高效的多行數(shù)據(jù)插入方法。5.1.2插入多行數(shù)據(jù)利用SELECT插入查詢(xún)結(jié)果集在T-SQL語(yǔ)言中,最常用且最簡(jiǎn)單的插入多行數(shù)據(jù)的方法是利用INSERT…SELECT語(yǔ)句。它使用SELECT語(yǔ)句查詢(xún)出的結(jié)果代替VALUES子句,將結(jié)果集作為多行記錄插入到表中。INSERT…SELECT語(yǔ)句借助SELECT語(yǔ)句的靈活性,可以從任何地方抽取任意多行數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn),從而作為返回結(jié)果集插入數(shù)據(jù)庫(kù)表中。其語(yǔ)法結(jié)構(gòu)如下:INSERT[INTO]table_name[(column_list)]SELECTcolumn_listFROMtable_nameWHEREsearch_conditions其中,search_conditions指的是查詢(xún)條件,INSERT表和SELECT表的結(jié)果集的列數(shù)、列序、數(shù)據(jù)類(lèi)型必須一致?!纠?-3】創(chuàng)建一個(gè)學(xué)分表,然后把每位學(xué)生選修的課程所獲得的學(xué)分輸入到學(xué)分表中。T-SQL代碼如下:--創(chuàng)建學(xué)分表CREATETABLE學(xué)分表(學(xué)號(hào)char(10)notnull,
姓名varchar(10)notnull,
選修課程門(mén)數(shù)
tinyint,
學(xué)分
tinyint)--插入數(shù)據(jù)INSERT學(xué)分表SELECT學(xué)生.學(xué)號(hào),姓名,COUNT(選課.課程號(hào)),SUM(學(xué)分)FROM學(xué)生,選課,課程WHERE學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào)AND選課.課程號(hào)=課程.課程號(hào)GROUPBY學(xué)生.學(xué)號(hào),姓名5.1.2插入多行數(shù)據(jù)5.1.2插入多行數(shù)據(jù)2.大批量插入數(shù)據(jù)BULKINSERT語(yǔ)句是批量加載數(shù)據(jù)的一種方式,它按照用戶(hù)指定的格式把大量數(shù)據(jù)插入到數(shù)據(jù)庫(kù)的表中。BULKINSERT語(yǔ)句經(jīng)常與FIELDTERMINATOR子句和ROWTERMINATOR子句一起使用,前者用于指定字段之間的分隔符,后者用于指定行之間的分隔符?!纠?-4】使用大批量插入數(shù)據(jù)記錄的方法將txt文件中的數(shù)據(jù)插入到指定的表中。T-SQL代碼如下:--創(chuàng)建表
bulk_tableCREATETABLEbulk_table(c1char(4),c2int)--插入數(shù)據(jù)BULKINSERTbulk_tableFROM'F:\temp\bulk_test.txt'WITH(FIELDTERMINATOR=';',ROWTERMINATOR='\n')GO5.2修改數(shù)據(jù)在數(shù)據(jù)輸入過(guò)程中,可能會(huì)出現(xiàn)輸入錯(cuò)誤,或是因?yàn)闀r(shí)間變化而需要更新數(shù)據(jù),這都需要修改數(shù)據(jù)。修改表中的數(shù)據(jù)可以使用查詢(xún)分析器中的網(wǎng)格界面進(jìn)行修改。本節(jié)主要介紹使用T-SQL的UPDATE語(yǔ)句實(shí)現(xiàn)數(shù)據(jù)的修改,UPDATE語(yǔ)句的語(yǔ)法格式如下:UPDATEtable_nameSETcolumn_1=expression_1,column_2=expression_2,…,column_n=expression_n[WHEREsearch_conditions]SET子句后面既可以跟具體的值,也可以是一個(gè)表達(dá)式。UPDATE語(yǔ)句只更新WHERE子句篩選的行,如果不帶WHERE子句,則表中的所有行都將被更新。WHERE子句的條件也可以是一個(gè)子查詢(xún)。5.2.1修改單行數(shù)據(jù)
【例5-5】將SQLServer2014課程的學(xué)分改為4分。T-SQL代碼如下:UPDATE課程SET學(xué)分=6WHERE課程名='數(shù)據(jù)結(jié)構(gòu)'執(zhí)行結(jié)果如圖5-4所示。如果上例中沒(méi)有WHERE子句,則表示把所有課程的學(xué)分都更新為6分。UPDATE語(yǔ)句還可以同時(shí)修改一個(gè)表中的多個(gè)值。例如:UPDATE課程SET課程名='SQLServer2014數(shù)據(jù)庫(kù)設(shè)計(jì)',學(xué)分=2WHERE課程名='SQLServer2014'5.2.2修改多行數(shù)據(jù)【例5-6】將選課表中所有選修“線(xiàn)性代數(shù)”課的學(xué)生的成績(jī)減3分。T-SQL代碼如下:UPDATE選課SET成績(jī)=成績(jī)-3WHERE課程號(hào)IN(SELECT課程號(hào)FROM課程WHERE課程名='線(xiàn)性代數(shù)')5.3刪除數(shù)據(jù)隨著系統(tǒng)的運(yùn)行,表中可能會(huì)產(chǎn)生一些無(wú)用的數(shù)據(jù),這些數(shù)據(jù)不僅占用空間,而且還影響查詢(xún)的速度,所以應(yīng)該及時(shí)地刪除。刪除數(shù)據(jù)可以使用DELETE語(yǔ)句和TRUNCATETABLE語(yǔ)句。5.3.1使用DELETE語(yǔ)句刪除數(shù)據(jù)從表中刪除數(shù)據(jù),最常用的是DELETE語(yǔ)句。DELETE語(yǔ)句的語(yǔ)法格式如下:DELETEFROMtable_name[WHEREsearch_conditions]如果省略了WHEREsearch_conditions子句,就表示刪除數(shù)據(jù)表中的全部數(shù)據(jù);如果加上了WHEREsearch_conditions子句就可以根據(jù)篩選條件刪除表中的指定數(shù)據(jù)。【例5-7】刪除學(xué)生表中的所有記錄。T-SQL代碼如下:DELETEFROM學(xué)生本例中沒(méi)有使用WHERE語(yǔ)句,將刪除選課表中的所有記錄,只剩下表的定義。用戶(hù)可以通過(guò)“資源管理器”查看?!纠?-8】刪除課程表中沒(méi)有學(xué)分的記錄。T-SQL代碼如下:DELETE課程WHERE學(xué)分ISNULL【例5-9】刪除選課表中姓名為“李華”、選修課程為“1003”的選課信息。T-SQL代碼如下:DELETE選課WHERE選課.課程號(hào)='1003'AND學(xué)號(hào)=(SELECT學(xué)號(hào)FROM學(xué)生WHERE姓名='李華')用戶(hù)在操作數(shù)據(jù)庫(kù)時(shí),要謹(jǐn)慎使用DELETE語(yǔ)句,因?yàn)閳?zhí)行該語(yǔ)句后,數(shù)據(jù)會(huì)從數(shù)據(jù)庫(kù)中永久的被刪除。5.4.1使用DELETE語(yǔ)句刪除數(shù)據(jù)5.3.2使用TRUNCATETABLE語(yǔ)句清空表使用TRUNCATETABLE語(yǔ)句刪除所有記錄的語(yǔ)法格式如下:TRUNCATETABLEtable_name其中,TRUNCATETABLE為關(guān)鍵字,table_name為要?jiǎng)h除記錄的表名。使用TRUNCATETABLE語(yǔ)句比DELETE語(yǔ)句要快,因?yàn)樗侵痦?yè)刪除表中的內(nèi)容,而DELETE則是逐行刪除內(nèi)容。TRUNCATETABLE是不記錄日志的操作,它將釋放表的數(shù)據(jù)和索引所占據(jù)的所有空間以及所有為全部索引分配的頁(yè),刪除的數(shù)據(jù)是不可恢復(fù)的。而DELETE語(yǔ)句則不同,它在刪除每一行記錄時(shí)都要把刪除操作記錄在日志中。刪除操作記錄在日志中,可以通過(guò)事務(wù)回滾來(lái)恢復(fù)刪除的數(shù)據(jù)。用TRUNCATETABLE和DELETE語(yǔ)句都可以刪除所有的記錄,但是表結(jié)構(gòu)還在,而DROPTABLE不但刪除表中的數(shù)據(jù),而且還刪除表的結(jié)構(gòu)并釋放空間?!纠?-10】使用TRUNCATETABLE語(yǔ)句清空課程表。T-SQL代碼如下:TRUNCATETABLE課程5.5多數(shù)據(jù)編輯EditTableData特性使可以將插入、更新和刪除語(yǔ)句組合在一起。它僅僅是將所有修改生成到一個(gè)動(dòng)態(tài)的腳本文件中。當(dāng)你運(yùn)行該腳本文件時(shí),它會(huì)按照你在模型中給各修改安排的相同順序來(lái)執(zhí)行所有修改。當(dāng)修改超出了一個(gè)事務(wù)的范圍時(shí),會(huì)存在在執(zhí)行所有修改之前暴露部分修改的風(fēng)險(xiǎn)。例如,假設(shè)在你
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 觀瀾湖圣安德魯斯別墅營(yíng)銷(xiāo)策劃報(bào)告
- 教育信息化平臺(tái)建設(shè)與應(yīng)用教育信息化平臺(tái)工作匯報(bào)
- 教育科技在創(chuàng)新創(chuàng)業(yè)人才培養(yǎng)中的應(yīng)用
- 二零二五年度車(chē)輛使用安全教育與責(zé)任保險(xiǎn)合同4篇
- 潮州2025年廣東潮州市委外事工作委員會(huì)辦公室屬下事業(yè)單位招聘筆試歷年參考題庫(kù)附帶答案詳解
- 2025年度個(gè)人私有房屋購(gòu)買(mǎi)合同(精裝修家居環(huán)保材料版)4篇
- 2025年度個(gè)性化定制個(gè)人房屋建造合同范本2篇
- 武漢2025年湖北武漢理工大學(xué)附屬小學(xué)教師招聘筆試歷年參考題庫(kù)附帶答案詳解
- 二零二五年度食品加工廠原料供應(yīng)合同2篇
- 成都2024年四川成都經(jīng)開(kāi)區(qū)(龍泉驛區(qū))招聘教育人才11人筆試歷年參考題庫(kù)附帶答案詳解
- GB/T 16895.3-2024低壓電氣裝置第5-54部分:電氣設(shè)備的選擇和安裝接地配置和保護(hù)導(dǎo)體
- 安徽省合肥市2025年高三第一次教學(xué)質(zhì)量檢測(cè)地理試題(含答案)
- 計(jì)劃合同部部長(zhǎng)述職報(bào)告范文
- 統(tǒng)編版八年級(jí)下冊(cè)語(yǔ)文第三單元名著導(dǎo)讀《經(jīng)典常談》閱讀指導(dǎo) 學(xué)案(含練習(xí)題及答案)
- 風(fēng)光儲(chǔ)儲(chǔ)能項(xiàng)目PCS艙、電池艙吊裝方案
- 人教版高一地理必修一期末試卷
- GJB9001C質(zhì)量管理體系要求-培訓(xùn)專(zhuān)題培訓(xùn)課件
- 二手車(chē)車(chē)主寄售協(xié)議書(shū)范文范本
- 窗簾采購(gòu)?fù)稑?biāo)方案(技術(shù)方案)
- 基于學(xué)習(xí)任務(wù)群的小學(xué)語(yǔ)文單元整體教學(xué)設(shè)計(jì)策略的探究
- 人教版高中物理必修一同步課時(shí)作業(yè)(全冊(cè))
評(píng)論
0/150
提交評(píng)論