溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2021-08-19 20:24:44 來源:億速云 閱讀:114 作者:chen 欄目:數(shù)據(jù)庫

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


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

到此,關(guān)于“MySQL中表數(shù)據(jù)的DML操作”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI