MySQL中表數(shù)據(jù)的DML操作

這篇文章主要介紹“MySQL中表數(shù)據(jù)的DML操作”,在日常操作中,相信很多人在MySQL中表數(shù)據(jù)的DML操作問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”MySQL中表數(shù)據(jù)的DML操作”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)公司專注于網(wǎng)站建設(shè)|網(wǎng)站維護(hù)公司|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋成都木屋等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身策劃品質(zhì)網(wǎng)站。


(一) DML語(yǔ)句書寫建議
(1). DML語(yǔ)句不允許出現(xiàn)@number方式替代字段名稱
不合理的寫法:
UPDATE table_name SET @1=NOW() WHERE @2=1;
正確的寫法:
UPDATE table_name SET column_name1=NOW() WHERE column_name2=1;
(2). UPDATE OR DELETE 禁用LIMIT子句
不合理的寫法:
UPDATE table_name SET column_name1=NOW() WHERE column_name2=1 LIMIT 1;
正確的寫法:
UPDATE table_name SET column_name1=NOW() WHERE column_name2=1;
(3). INSERT語(yǔ)句需要寫清楚值和字段對(duì)應(yīng)關(guān)系
不合理的寫法:
INSERT INTO table_name VALUES(NOW(),DATE_ADD(NOW(),INTERVAL +1 DAY));
正確的寫法:
INSERT INTO table_name(gmt_create,gmt_modify) VALUES(NOW(),DATE_ADD(NOW(),INTERVAL +1 DAY));
(4). DML語(yǔ)句少用不確定性函數(shù)
常見被大家使用的不確定性函數(shù):UUID()、RAND()、SYSDATE()等函數(shù),若無特殊用處之外,請(qǐng)以確定性函數(shù)替代之。
(二) 大數(shù)據(jù)量的DELETE OR UPDATE
可能出于某些原因和運(yùn)營(yíng)目的,需要對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行大量的清理或更改某字段的值,分別舉 二個(gè)示例:
① 網(wǎng)絡(luò)專項(xiàng)整治的時(shí)期,需要?jiǎng)h除大量含某些關(guān)鍵詞的內(nèi)容;
② 給符合某一條件(例如:等級(jí),在線時(shí)長(zhǎng))的游戲玩家,贈(zèng)送100~1000不等數(shù)量的游戲幣;
給出的2個(gè)數(shù)據(jù)修改需求示例,若是直接根據(jù)相關(guān)要求去做,一個(gè)是需要用到模糊查詢,另一個(gè)數(shù)據(jù)更新條件也沒有合理索引可用,為此可能造成表對(duì)象表級(jí)鎖被長(zhǎng)時(shí)間鎖住,而且阻塞其他更改類型數(shù)據(jù)操作服務(wù),所以我們不得不采用更合理的辦法,建議如下步驟實(shí)施:
① 設(shè)計(jì)并創(chuàng)建一張表tmp_pk_data ,用于記錄將要被修改記錄的主鍵,及需要的相關(guān)信息;
② 優(yōu)先考慮在備庫(kù)上跑一條SQL命令或存儲(chǔ)過程的方式,把主鍵及相關(guān)數(shù)據(jù)寫到表tmp_pk_data中;
③ 編寫一個(gè)存儲(chǔ)過程,使用游標(biāo)循環(huán)控制獲得tmp_pd_data的信息,根據(jù)主鍵更新或刪除目標(biāo)表的數(shù)據(jù),且建議此操作在備庫(kù)上完成(注釋:必須是雙主復(fù)制模式,才可在備庫(kù)上執(zhí)行);
(三) 定期規(guī)律性清理數(shù)據(jù)的DELETE
定期規(guī)律性數(shù)據(jù)的清理,優(yōu)先對(duì)目標(biāo)表的數(shù)據(jù)操縱方式進(jìn)行分類:
① 若是日志類型的數(shù)據(jù),則完全可以改為借助分區(qū)表的方式,比如按日期刪除數(shù)據(jù)的條件,則可以用日期作為數(shù)據(jù)分區(qū)條件,然后增刪分區(qū)的方式實(shí)現(xiàn)數(shù)據(jù)的清理工作;
② 若是數(shù)據(jù)的UPDATE/DELETE/SELECT操縱條件,與定期清理數(shù)據(jù)的規(guī)則一致或被其包含,則可以考慮使用分區(qū)表,然后借助刪除分區(qū)方式達(dá)到數(shù)據(jù)清理的目標(biāo);
③ 若不能使用分區(qū)表解決的,則可以考慮參考上章節(jié)介紹的“大數(shù)據(jù)量的DELETE OR UPDATE”內(nèi)容;
(四) M-M架構(gòu)的大數(shù)據(jù)量DML技巧
定期規(guī)律性數(shù)據(jù)的清理,優(yōu)先對(duì)目標(biāo)表的數(shù)據(jù)操縱方式進(jìn)行分類:
① 若是日志類型的數(shù)據(jù),則完全可以改為借助分區(qū)表的方式,比如按日期刪除數(shù)據(jù)的條件,則可以用日期作為數(shù)據(jù)分區(qū)條件,然后增刪分區(qū)的方式實(shí)現(xiàn)數(shù)據(jù)的清理工作;
② 若是數(shù)據(jù)的UPDATE/DELETE/SELECT操縱條件,與定期清理數(shù)據(jù)的規(guī)則一致或被其包含,則可以考慮使用分區(qū)表,然后借助刪除分區(qū)方式達(dá)到數(shù)據(jù)清理的目標(biāo);
③ 若不能使用分區(qū)表解決的,則可以考慮參考上章節(jié)介紹的“大數(shù)據(jù)量的DELETE OR UPDATE”內(nèi)容;

到此,關(guān)于“MySQL中表數(shù)據(jù)的DML操作”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

本文標(biāo)題:MySQL中表數(shù)據(jù)的DML操作
分享地址:http://bm7419.com/article28/jddijp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)企業(yè)網(wǎng)站制作、網(wǎng)站設(shè)計(jì)公司、品牌網(wǎng)站制作、App設(shè)計(jì)、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司