下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1. 關(guān)聯(lián)表記錄的刪除操作關(guān)聯(lián)型數(shù)據(jù)表通過外鍵關(guān)系表示相互關(guān)聯(lián),比如會(huì)員等級(jí)和會(huì)員、會(huì)員和會(huì)員積分、積分日志、地區(qū)表(自關(guān)聯(lián))、文章分類和文章、商品分類和商品等,因此在系統(tǒng)中關(guān)聯(lián)型數(shù)據(jù)表是非常常見的形式,掌握好對(duì)關(guān)聯(lián)型數(shù)據(jù)表的處理至關(guān)重要。根據(jù)業(yè)務(wù)需求的不同,對(duì)于關(guān)聯(lián)型數(shù)據(jù)表的數(shù)據(jù)刪除也采用不同的策略,通常有3種方式:級(jí)聯(lián)刪除、限制刪除、置空或重置為缺省值。級(jí)聯(lián)刪除以會(huì)員和會(huì)員積分日志為例,會(huì)員積分日志通常需要選定一個(gè)會(huì)員,查看該會(huì)員的日志信息,當(dāng)該會(huì)員記錄被刪除時(shí),積分日志就沒有查看的入口,稱之為“垃圾”數(shù)據(jù)。因此在刪除會(huì)員時(shí),同時(shí)也把該會(huì)員的積分日志也刪除。限制刪除以會(huì)員等級(jí)和會(huì)員為例,在
2、本系統(tǒng)中,會(huì)員等級(jí)包含了根據(jù)積分自動(dòng)計(jì)算會(huì)員等級(jí)的非特殊會(huì)員組,非特殊會(huì)員組與會(huì)員不是關(guān)聯(lián)關(guān)系,此處會(huì)員等級(jí)僅指代特殊會(huì)員組。當(dāng)會(huì)員等級(jí)被刪除時(shí),可以刪除屬于該會(huì)員等級(jí)的會(huì)員嗎?顯示不能,而且是相當(dāng)危險(xiǎn)的一種行為,會(huì)員信息的丟失,屬于網(wǎng)站的重大工作事故。如何解決會(huì)員等級(jí)的刪除呢?解決思路是:如果沒有屬于此會(huì)員等級(jí)的會(huì)員,那么刪除該會(huì)員等級(jí)對(duì)系統(tǒng)就沒有任何影響了,所以在刪除會(huì)員等級(jí)時(shí),需要檢查會(huì)員表是否有屬于此會(huì)員等級(jí)的數(shù)據(jù),如果沒有,則允許刪除,否則限制刪除。直接提示不能刪除,顯然對(duì)用戶不是很友好,如何能提高友好性呢?做為課外題,大家可以思考一下。置空setnull/重置為缺省值setdefa
3、ult置空是刪除數(shù)據(jù)時(shí),將關(guān)聯(lián)數(shù)據(jù)表的外鍵設(shè)置為null或者為缺省值。置空也是保留關(guān)聯(lián)數(shù)據(jù)的一種方法,通常用于外鍵可以不設(shè)置或者對(duì)于未設(shè)置的數(shù)據(jù)有相關(guān)處理,比如QQ的好友和組,好友可以分配到特定組里,未分組的好友都在“我的好友”里,當(dāng)刪除組時(shí),并不會(huì)刪除組里的好友,好友會(huì)在“我的好友”里顯示。了解了關(guān)聯(lián)數(shù)據(jù)的刪除邏輯后,怎樣實(shí)現(xiàn)呢?方法有很多,這里介紹2種方式:通過外鍵約束和刪除關(guān)聯(lián)表的SQL語句。外鍵約束:大部分DBMS都支持外鍵約束,Mysql中只有Innodb類型的數(shù)據(jù)表才支持,創(chuàng)建表時(shí)通過建立外鍵,并設(shè)置約束方法。MySQL創(chuàng)建關(guān)聯(lián)表可以理解為是兩個(gè)表之間有個(gè)外鍵關(guān)系,但這兩個(gè)表必須滿
4、足三個(gè)條件:1 .兩個(gè)表必須是InnoDB數(shù)據(jù)引擎2 .使用在外鍵關(guān)系的域必須為索引型(Index)3 .使用在外鍵關(guān)系的域必須與數(shù)據(jù)類型相似Mysql創(chuàng)建關(guān)鍵表的示例(圖書館借書和成員):CreateTABLEIFNOTEXISTS'books'('book_id'smallint(6)NOTNULLauto_incrementCOMMENT'書籍編號(hào)','book_name'char(20)NOTNULLCOMMENT'書名','book_borrower'char(7)defaultNULLC
5、OMMENT'借閱者','book_borrower_time'datedefaultNULLCOMMENT'借閱時(shí)間,PRIMARYKEY('book_id'),INDEX(book_borrower)ENGINE=InnoDB;CreateTABLEIFNOTEXISTS'parts'('part_id'smallint(6)NOTNULLCOMMENT'成員編號(hào)','part_name'varchar(6)NOTNULLCOMMENT'成員名','
6、;part_mail'varchar(50)NOTNULLCOMMENT'郵箱','part_pass'varchar(20)NOTNULLCOMMENT'密碼',PRIMARYKEY('part_id'),FOREIGNKEY(part_name)REFERENCES00ks(book_borrower)ondeletecascadeonupdatecascade)ENGINE=InnoDB分析一下books表和parts表,選擇InnoDB為表引擎。而parts表的part_name字段為外鍵,關(guān)聯(lián)到books表的bo
7、ok_borrower字段.注意兩個(gè)字段分別是char和varchar都是字符串類型。ondeletecascade意思為當(dāng)books表有相關(guān)記錄刪除時(shí),那parts表也會(huì)跟著刪除相關(guān)聯(lián)的記錄.理論上parts表的part_name字段也應(yīng)該要?jiǎng)?chuàng)建索引才對(duì),但實(shí)驗(yàn)證創(chuàng)建關(guān)聯(lián)后自動(dòng)索引了.不同DBMS支持的約束不同,Mysql5.0支持cascade(級(jí)聯(lián)操作)、restrict(限制操作),不寫約束條件表示不進(jìn)行任何操作(垃圾數(shù)據(jù))。與ondelete(刪除操作)對(duì)應(yīng)的還有onupdate(當(dāng)關(guān)聯(lián)主表的關(guān)聯(lián)字段內(nèi)容更新時(shí))的處理,請(qǐng)大家思考其中的業(yè)務(wù)邏輯。Sql語句刪除多表數(shù)據(jù)1、通過多條SQ
8、L語句刪除先刪除子表數(shù)據(jù),再刪除主表數(shù)據(jù),為保證數(shù)據(jù)完整性,通常啟動(dòng)事務(wù)來處理,如果要支持事務(wù),也需要InnoDb的數(shù)據(jù)表類型。2、在一條SQL語句中刪除delete語法:DELETELOW_PRIORITYQUICKFROMtable_nameWHEREwhere_definitionORDERBYLIMITrowsorDELETELOW_PRIORITYQUICKtable_name.*,table_name.*FROMtable-referencesWHEREwhere_definitionorDELETELOW_PRIORITYQUICKFROMtable_name.*,table_n
9、ame.*USINGtable-referencesWHEREwhere_definition示例代碼:1 .刪除一個(gè)表中的數(shù)據(jù)deletefromdepartmentwherename='AssetManagement'2 .刪除兩個(gè)表中的數(shù)據(jù)deleteemployee,employeeSkillsfromemployee,employeeSkills,departmentwhereemployee.employeeID=employeeSki11s.employeeIDandemployee.departmentID=department.departmentID='Finance'3 .刪除兩個(gè)表中的數(shù)據(jù),用using語法deletefromemployee,employeeSkillsusingemployee,employeeSkil
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度企業(yè)資產(chǎn)抵押擔(dān)保合同示范文本9篇
- 二零二五年度駕駛員勞動(dòng)合同續(xù)簽及調(diào)整范本3篇
- 國(guó)網(wǎng)2025年高校畢業(yè)生招聘全球能源互聯(lián)網(wǎng)研究院招聘歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 國(guó)家納米科學(xué)中心李紅浪課題組招考聘用高頻重點(diǎn)提升(共500題)附帶答案詳解
- 國(guó)家電網(wǎng)平高集團(tuán)限公司2025年高校畢業(yè)生招聘(第二批)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 二零二五年度國(guó)企傳統(tǒng)工藝大師傅工資支付與技藝保護(hù)協(xié)議3篇
- 四川宜賓學(xué)院(事業(yè)單位)2025年招聘歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 和2025年下半年關(guān)事業(yè)單位招聘歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 南陽市環(huán)境保護(hù)局直屬事業(yè)單位公開招聘工作人員 高頻重點(diǎn)提升(共500題)附帶答案詳解
- 南京工業(yè)大學(xué)公開招聘14名人員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2022年江蘇省南京市中考?xì)v史試題(含答案)
- 商務(wù)溝通第二版第6章管理溝通
- 培訓(xùn)課件-核電質(zhì)保要求
- 過敏原檢測(cè)方法分析
- TSG_R0004-2009固定式壓力容器安全技術(shù)監(jiān)察規(guī)程
- 室外給水排水和燃?xì)鉄崃こ炭拐鹪O(shè)計(jì)規(guī)范
- 【個(gè)人獨(dú)資】企業(yè)有限公司章程(模板)
- 《三國(guó)演義》整本書閱讀任務(wù)單
- 外觀GRR考核表
- 大型平板車安全管理規(guī)定.doc
- 企業(yè)信用管理制度
評(píng)論
0/150
提交評(píng)論