MySQL學(xué)習(xí)之數(shù)據(jù)更新操作詳解
UPDATE 語句
UPDATE 語句用于修改表的記錄,語法如下
UPDATE IGNORE 表名 SET 字段1=值1, 字段2=值2, 字段3=值3, ...... WHERE 條件1 ...... ORDER BY ...... LIMIT ......; -- 注意:IGNORE - 是可選條件,使用后,會針對有沖突的修改記錄忽略 -- 注意:WHERE - 也是可選條件,使用了就是有條件的修改記錄;不使用就是無條件的修改記錄,也就是針對全表范圍進行記錄的修改 -- 注意:ORDER BY - 之所以使用排序主要是針對類似多條記錄,批量遞增的形式去修改(比如說員工工資的統(tǒng)一普調(diào),員工工號的遞增加1)。 -- 注意:LIMIT - UPDATE 語句中的 LIMIT 子句只能寫一個參數(shù),不能像之前那樣寫兩個參數(shù)。
UPDATE 語句的執(zhí)行順序:UPDATE ---> WHERE ---> ORDER BY ---> LIMIT ---> SET
UPDATE 語句練習(xí)①
把每個員工的編號和上司的編號 +1 ,利用 “ORDER BY” 子句完成。
“UPDATE” - SQL語句演示案例①:
UPDATE t_emp SET empno = empno + 1, mgr = mgr + 1 ORDER BY empno DESC; -- 這里解釋一下,為什么會這樣。 -- 當我們更新第一個員工的工號 +1 的時候,實際上他的下一位員工編號是與當前員工編號 +1 的結(jié)果是沖突的,這就是我們使用 ORDER BY 的原因

UPDATE 語句練習(xí)②
將月收入前3名的員工月薪減 100 ,使用 LIMIT 子句完成。
“UPDATE” - SQL語句演示案例②:(首先按照月收入排成降序,然后取前3條記錄,然后再執(zhí)行 "UPDATE" 的操作)
UPDATE t_emp SET sal = sal - 100 ORDER BY sal + IFNULL(comm,0) DESC LIMIT 3;

UPDATE 語句練習(xí)③
將 10 部門中,工齡超過 20 年的員工,底薪增加 200 。
“UPDATE” - SQL語句演示案例③:(篩選 10 部門與工齡超過20年的員工寫在 "WHERE" 子句即可,底薪增加 200 寫在SET子句)
UPDATE t_emp SET sal = sal + 200 WHERE deptno=10 AND DATEDIFF(NOW(),hiredate)/365 >= 20;

UPDATE 語句的表連接
因為相關(guān)子查詢的效率非常低,所以我可以利用表連接的方式來改造 “UPDATE” 語句。
表連接的 “UPDATE” 語句可以修改多張表的記錄。
UPDATE 語句的表連接的語法如下:(內(nèi)連接方式)
UPDATE 表1 JOIN 表2 ON 條件 SET 字段1=值1, 字段2=值2, ......; -- 這里的字段是比較有意思的,不是說 SET 關(guān)鍵字修改的字段只能來自一張表,它可以來自 被關(guān)聯(lián)的任意一張表。
UPDATE 語句的表連接的語法如下:(內(nèi)連接變種方式)
UPDATE 表1, 表2 SET 字段1=值1, 字段2=值2, ...... WHERE 連接條件;
UPDATE 語句練習(xí)④
把 ALLEN 調(diào)往 “RESEARCH” 部門,職務(wù)調(diào)整為 “ANALYST”。
這個需求的 SQL 語句牽扯到兩張表,這里呢我們可以通過子查詢的方式來實現(xiàn)。但是 UPDATE 語句中的子查詢?yōu)橄嚓P(guān)子查詢,所以并不建議使用。比較合適的方式就是實用 “表連接” 的方式來實現(xiàn),具體參考 “UPDATE 語句的表連接” 語法。
通過練習(xí)題的方式更鼓 “UPDATE” 的語法還是挺有意思的,可以開闊思路,有助于我們鞏固 “UPDATE” 的語法。
到此這篇關(guān)于MySQL學(xué)習(xí)之數(shù)據(jù)更新操作詳解的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)更新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL如何運行sql文件圖文詳解(以Navicat做演示)
Navicat是MySQL非常好用的可視化管理工具,功能非常強大,能滿足我們?nèi)粘?shù)據(jù)庫開發(fā)的所有需求,這篇文章主要給大家介紹了關(guān)于MySQL如何運行sql文件(以Navicat做演示)的相關(guān)資料,需要的朋友可以參考下2024-08-08
mysql日志系統(tǒng)redo log和bin log介紹
這篇文章主要介紹了mysql日志系統(tǒng)redo log和bin log介紹,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08
完美解決MySQL數(shù)據(jù)庫服務(wù)器CPU飆升問題
這篇文章主要介紹了解決 MySQL 數(shù)據(jù)庫服務(wù)器 CPU 飆升的方法,包括定位問題(如使用工具監(jiān)控、查看慢查詢?nèi)罩荆?yōu)化 SQL 查詢、調(diào)整配置參數(shù)、優(yōu)化數(shù)據(jù)庫架構(gòu)、檢查硬件資源、處理鎖競爭問題等,還通過電商業(yè)務(wù)系統(tǒng)的案例進行了詳細分析及給出解決方法,最終優(yōu)化效果顯著2025-02-02
mysql如何創(chuàng)建數(shù)據(jù)庫并指定字符集
這篇文章主要介紹了mysql如何創(chuàng)建數(shù)據(jù)庫并指定字符集問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
MySQL數(shù)據(jù)庫索引order?by排序精講
我們今天說的并不是大數(shù)據(jù)下該如何優(yōu)雅的排序,如何提升排序性能的問題,我們來仔細分析說一說MySQL中的排序問題,希望可以對正在閱讀的同學(xué)們有所啟迪幫助2021-11-11
MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解
這篇文章主要介紹了MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解,THREAD_CACHE是Mysql的連接池,table_cache指定表高速緩存的大小,需要的朋友可以參考下2014-07-07

