




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章MySQL表數(shù)據(jù)管理主要內(nèi)容6.1插入數(shù)據(jù)6.2更新數(shù)據(jù)6.3刪除數(shù)據(jù)6.4約束對(duì)數(shù)據(jù)操作的限制6.5本章小結(jié)6.1插入數(shù)據(jù)6.1.1使用INSERT…VALUES語(yǔ)句插入一行數(shù)據(jù)語(yǔ)法格式:INSERT[INTO]tbl_name[(col_name[,col_name]...)]VALUES(value_list)說(shuō)明:tbl_name:要插入數(shù)據(jù)的表的名稱(chēng);col_name:表中的列的名稱(chēng);value_list:要插入的數(shù)據(jù)對(duì)應(yīng)各列的值,用逗號(hào)分隔6.1插入數(shù)據(jù)6.1.1使用INSERT…VALUES語(yǔ)句插入一行數(shù)據(jù)不指定列名語(yǔ)法格式:INSERT[INTO]tbl_nameVALUES(value_list)【例6.1】向student表插入一行數(shù)據(jù)('20190101001','劉麗','女','2001-03-02','漢族','0101')。在MySQL命令行客戶(hù)端輸入命令:INSERTINTOstudentVALUES('20190101001','劉麗','女','2001-03-02','漢族','0101');6.1插入數(shù)據(jù)6.1.1使用INSERT…VALUES語(yǔ)句插入一行數(shù)據(jù)指定列名語(yǔ)法格式:INSERT[INTO]tbl_name(col_name1,col_name2,……)VALUES(value_list)【【例6.2】向student表插入一行數(shù)據(jù),學(xué)號(hào)為'20190101002',姓名為'張林',出生日期為'2000-09-12'。在MySQL命令行客戶(hù)端輸入命令:INSERTINTOstudent(sno,sname,sbirthday)VALUES('20190101002','張林','2000-09-12');6.1插入數(shù)據(jù)6.1.2使用INSERT…VALUES語(yǔ)句插入多行數(shù)據(jù)語(yǔ)法格式:INSERT[INTO]tbl_name[(col_name[,col_name]...)]VALUES(value_list),(value_list)……【例6.3】向student表插入3行數(shù)據(jù)。在MySQL命令行客戶(hù)端輸入命令:INSERTINTOstudentVALUES('20190102001','李宏','男','2001-08-29','回族','0102'),('20200102001','孫明','男','2001-10-18','漢族','0102'),('20200102002','趙均','男','2000-12-19','漢族','0102');6.1插入數(shù)據(jù)6.1.3使用INSERT…SET語(yǔ)句插入數(shù)據(jù)語(yǔ)法格式:INSERT[INTO]tbl_nameSETcol_name1=value1,col_name2=value2……【例6.4】向student表插入一行數(shù)據(jù),學(xué)號(hào)為'20200101001',姓名為'張莉',性別為'女'民族為'漢族',專(zhuān)業(yè)為'0101'。在MySQL命令行客戶(hù)端輸入命令:INSERTINTOstudentSETsno='20200101001',sname='張莉',ssex='女',snation='漢族',mno='0101';6.1插入數(shù)據(jù)6.1.4使用INSERT…SELECT語(yǔ)句插入數(shù)據(jù)語(yǔ)法格式:INSERT[INTO]tbl_name[(col_name[,col_name]...)]SELECT...【例6.5】向student_computer表插入student表中專(zhuān)業(yè)為'0101'的學(xué)生數(shù)據(jù)。在MySQL命令行客戶(hù)端輸入命令:INSERTINTOstudent_computerSELECT*FROMstudentWHEREmno='0101';6.1插入數(shù)據(jù)6.1.5使用REPLACE語(yǔ)句插入數(shù)據(jù)語(yǔ)法格式:REPLACE[INTO]tbl_name[(col_name[,col_name]...)]VALUES(value_list)[,(value_list)…]|SETcol_name1=value1,col_name2=value2……|SELECT…說(shuō)明:REPLACE語(yǔ)句是MySQL對(duì)SQL標(biāo)準(zhǔn)的擴(kuò)展,或者插入數(shù)據(jù),或者刪除再插入數(shù)據(jù);REPLACE語(yǔ)句的語(yǔ)法格式和工作原理與INSERT完全相同,只是如果表中的一個(gè)舊行與新行在主鍵或唯一索引上具有相同的值,則在插入新行之前會(huì)刪除舊行。只有當(dāng)表具有主鍵或唯一索引時(shí),REPLACE才有意義。否則,它將等效于INSERT6.1插入數(shù)據(jù)6.1.5使用REPLACE語(yǔ)句插入數(shù)據(jù)【例6.5】使用REPLACE語(yǔ)句向student表插入2行數(shù)據(jù)。(1)先執(zhí)行SELECT語(yǔ)句查看student表中現(xiàn)有的數(shù)據(jù),便于對(duì)比REPLACE語(yǔ)句執(zhí)行前后的數(shù)據(jù):SELECT*FROMstudent;(2)輸入命令:REPLACEINTOstudentVALUES('20190101002','張林','男','2000-09-12','漢族','0101'),('20210201001','牛偉','男','2003-09-18','漢族','0201');(3)再執(zhí)行SELECT語(yǔ)句查看student表中現(xiàn)有的數(shù)據(jù):SELECT*FROMstudent;6.2更新數(shù)據(jù)6.2.1單表更新語(yǔ)句語(yǔ)法格式:UPDATEtbl_nameSETcol_name1=value1[,col_name2=value2…][WHEREwhere_condition]說(shuō)明:UPDATE子句指定要修改數(shù)據(jù)的表的名稱(chēng);SET子句指示要修改的列以及列的新值,每個(gè)值都可以是常量、表達(dá)式或關(guān)鍵字DEFAULT(將列顯式設(shè)置為其默認(rèn)值)。WHERE子句指定要更新的行需滿(mǎn)足的條件。6.2更新數(shù)據(jù)6.2.1單表更新語(yǔ)句【例6.6】在student表中將學(xué)生'20190101002'的專(zhuān)業(yè)改為'0101'。在MySQL命令行客戶(hù)端輸入命令:UPDATEstudentSETmno='0101'WHEREsno='20190101002';6.2更新數(shù)據(jù)6.2.1單表更新語(yǔ)句【例6.7】在student_computer表中將所有學(xué)生的專(zhuān)業(yè)編號(hào)mno修改為NULL。在MySQL命令行客戶(hù)端輸入命令:UPDATEstudent_computerSETmno=NULL;6.2更新數(shù)據(jù)6.2.2多表更新語(yǔ)句語(yǔ)法格式:UPDATEtbl_name1,tbl_name2[,tbl_name3…]SETcol_name1=value1[,col_name2=value2…][WHEREwhere_condition]說(shuō)明:多表更新語(yǔ)句執(zhí)行覆蓋多個(gè)表的更新操作,UPDATE子句列出操作涉及到的所有的表的名稱(chēng);WHERE子句需要指定表之間的連接條件,用于在多個(gè)表之間匹配行。6.2更新數(shù)據(jù)6.2.2多表更新語(yǔ)句【例6.8】在student_computer表中將學(xué)生的專(zhuān)業(yè)改為student表中對(duì)應(yīng)學(xué)生的專(zhuān)業(yè)。在MySQL命令行客戶(hù)端輸入命令:UPDATEstudent,student_computerSETstudent_computer.mno=student.mnoWHEREstudent_computer.sno=student.sno;6.3刪除數(shù)據(jù)6.3.1單表刪除語(yǔ)句語(yǔ)法格式:DELETEFROMtbl_name[WHEREwhere_condition]說(shuō)明:DELETE子句指定要?jiǎng)h除數(shù)據(jù)的表的名稱(chēng);WHERE子句指定要?jiǎng)h除的行需滿(mǎn)足的條件,如果沒(méi)有WHERE子句,則刪除表中所有行。6.3刪除數(shù)據(jù)6.3.1單表刪除語(yǔ)句【例6.9】刪除student表中專(zhuān)業(yè)編號(hào)為'0101'的學(xué)生記錄。在MySQL命令行客戶(hù)端輸入命令:DELETEFROMstudentWHEREmno='0101';6.3刪除數(shù)據(jù)6.3.2多表刪除語(yǔ)句語(yǔ)法格式:DELETEtbl_name1[.*][,tbl_name2[.*]]...FROMtbl_name1,tbl_name2[,tbl_name3…][WHEREwhere_condition]或:
DELETEFROMtbl_name1[.*][,tbl_name2[.*]]...USINGtbl_name1,tbl_name2[,tbl_name3…][WHEREwhere_condition]說(shuō)明:DELETE子句指定要?jiǎng)h除數(shù)據(jù)的表的名稱(chēng);WHERE子句指定要?jiǎng)h除的行需滿(mǎn)足的條件,如果沒(méi)有WHERE子句,則刪除表中所有行。6.3刪除數(shù)據(jù)6.3.2多表刪除語(yǔ)句說(shuō)明:第一種格式中的DELETE后和第二種格式中的DELETEFROM后指定要?jiǎng)h除數(shù)據(jù)的表的名稱(chēng);第一種格式中的FROM后和第二種格式中的USING后指定操作涉及的所有表的名稱(chēng);WHERE子句需要指定表之間的連接條件,用于在多個(gè)表之間匹配行。6.3刪除數(shù)據(jù)6.3.2多表刪除語(yǔ)句【例6.10】刪除student表中專(zhuān)業(yè)名稱(chēng)為'軟件工程'的學(xué)生。在MySQL命令行客戶(hù)端輸入命令:DELETEstudentFROMstudent,majorWHEREstudent.mno=major.mnoandmajor.mname='軟件工程';或者:DELETEFROMstudentUSINGstudent,majorWHEREstudent.mno=major.mnoandmajor.mname='軟件工程';6.3刪除數(shù)據(jù)6.3.3使用TRUNCATETABLE語(yǔ)句清空數(shù)據(jù)語(yǔ)法格式:TRUNCATETABLEtbl_name說(shuō)明:TRUNCATE操作刪除并重新創(chuàng)建表,這比DELETE逐個(gè)刪除行快得多,特別是對(duì)于大型表;TRUNCATE操作會(huì)導(dǎo)致隱式提交,因此無(wú)法回滾;TRUNCATETABLE語(yǔ)句不會(huì)引起DELETE觸發(fā)器調(diào)用(觸發(fā)器的內(nèi)容參見(jiàn)第12章);
對(duì)于InnoDB表或NDB表,如果存在來(lái)自引用該表的其他表的任何外鍵約束,則TRUNCATETABLE失?。?/p>
因?yàn)門(mén)RUNCATE操作刪除并重新創(chuàng)建表,所以清空表數(shù)據(jù)后任何自動(dòng)增量值都將重置為其起始值。6.4約束對(duì)數(shù)據(jù)操作的限制6.4.1主鍵約束和唯一性對(duì)DML的限制主鍵約束和唯一性約束要求字段的值必須唯一,此外主鍵約束還要求字段不能取空值。當(dāng)向表中插入(INSERT)數(shù)據(jù)、更新(UPDATE)數(shù)據(jù)的時(shí)候,所插入的行或更新后的行在主鍵列或者唯一性約束所在列的值不能重復(fù),否則操作將不能執(zhí)行。6.4約束對(duì)數(shù)據(jù)操作的限制6.4.1主鍵約束和唯一性對(duì)DML的限制【例6.12】向student表添加一個(gè)學(xué)生記錄,該學(xué)生的學(xué)號(hào)與表中某一行重復(fù)。INSERTINTOstudentVALUES('20190101001','張三','男','2002-04-02','漢族','0101');6.4約束對(duì)數(shù)據(jù)操作的限制6.4.2CHECK約束對(duì)DML的限制CHECK約束要求字段的值必須滿(mǎn)足檢查條件。向表中插入(INSERT)數(shù)據(jù)、更新(UPDATE)數(shù)據(jù)的時(shí)候,如果插入的數(shù)據(jù)或更新后的數(shù)據(jù)不滿(mǎn)足條件,則操作將不能執(zhí)行?!纠?.13】向student表添加一個(gè)學(xué)生記錄,性別為'M'。在MySQL命令行客戶(hù)端輸入命令:INSERTINTOstudentVALUES('20190101010','張三','M','2002-04-02','漢族','0101');6.4約束對(duì)數(shù)據(jù)操作的限制6.4.3外鍵約束對(duì)DML的限制外鍵約束通常在兩個(gè)表的字段之間建立參照關(guān)系,創(chuàng)建外鍵約束后不僅外鍵約束所在的子表的DML操作收到外鍵約束的限制,被參照的父表執(zhí)行DML操作時(shí)也要遵守外鍵約束的限制:
對(duì)子表執(zhí)行INSERT和UPDATE操作時(shí),插入或更新的行在外鍵列上的值要么為NULL要么必須是父表中主鍵已有的值;對(duì)父表執(zhí)行UPDATE修改主鍵的值和DELETE操作時(shí),如果操作的行在子表中有匹配的子記錄,則根據(jù)當(dāng)初
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025培訓(xùn)機(jī)構(gòu)租賃合同模板
- 協(xié)調(diào)礦山毛石廢渣處理協(xié)議
- 風(fēng)險(xiǎn)代理委托合同范本
- 電梯維修施工合同范本
- 采石場(chǎng)生產(chǎn)承包合同范本
- 2025合同翻譯專(zhuān)家
- 村鎮(zhèn)土地征收協(xié)議書(shū)
- 2025年03月河北保定市雄縣公開(kāi)招聘專(zhuān)項(xiàng)崗位派遣人員29人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025年03月國(guó)家體育總局事業(yè)單位公開(kāi)招聘應(yīng)屆畢業(yè)生79人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 幻想類(lèi)網(wǎng)文需向傳統(tǒng)深處開(kāi)掘
- 檔案開(kāi)發(fā)與利用案例的深度分析試題及答案
- 正式戀愛(ài)協(xié)議書(shū)
- 2025北京豐臺(tái)高三一模生物試題及答案
- 陜西省商洛市2025年高三下學(xué)期第三次模擬檢測(cè)地理試卷(含答案)
- 吉林省吉林市2024-2025學(xué)年高三下學(xué)期3月三模試題 語(yǔ)文 含答案
- 2024年紹興市國(guó)有企業(yè)專(zhuān)場(chǎng)招聘考試真題
- 2025年蘭州糧油集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 語(yǔ)文新課標(biāo)“整本書(shū)閱讀”深度解讀及案例
- GB 21258-2024燃煤發(fā)電機(jī)組單位產(chǎn)品能源消耗限額
- 口腔醫(yī)學(xué)數(shù)字技術(shù)
- 全國(guó)高中語(yǔ)文優(yōu)質(zhì)課一等獎(jiǎng)《雷雨》 課件
評(píng)論
0/150
提交評(píng)論