MySQL學(xué)習(xí)之?dāng)?shù)據(jù)更新操作詳解
UPDATE 語句
UPDATE 語句用于修改表的記錄,語法如下
UPDATE IGNORE 表名 SET 字段1=值1, 字段2=值2, 字段3=值3, ...... WHERE 條件1 ...... ORDER BY ...... LIMIT ......; -- 注意:IGNORE - 是可選條件,使用后,會(huì)針對(duì)有沖突的修改記錄忽略 -- 注意:WHERE - 也是可選條件,使用了就是有條件的修改記錄;不使用就是無條件的修改記錄,也就是針對(duì)全表范圍進(jìn)行記錄的修改 -- 注意:ORDER BY - 之所以使用排序主要是針對(duì)類似多條記錄,批量遞增的形式去修改(比如說員工工資的統(tǒng)一普調(diào),員工工號(hào)的遞增加1)。 -- 注意:LIMIT - UPDATE 語句中的 LIMIT 子句只能寫一個(gè)參數(shù),不能像之前那樣寫兩個(gè)參數(shù)。
UPDATE 語句的執(zhí)行順序:UPDATE ---> WHERE ---> ORDER BY ---> LIMIT ---> SET
UPDATE 語句練習(xí)①
把每個(gè)員工的編號(hào)和上司的編號(hào) +1 ,利用 “ORDER BY” 子句完成。
“UPDATE” - SQL語句演示案例①:
UPDATE t_emp SET empno = empno + 1, mgr = mgr + 1 ORDER BY empno DESC; -- 這里解釋一下,為什么會(huì)這樣。 -- 當(dāng)我們更新第一個(gè)員工的工號(hào) +1 的時(shí)候,實(shí)際上他的下一位員工編號(hào)是與當(dāng)前員工編號(hào) +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 語句的表連接
因?yàn)橄嚓P(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”。
這個(gè)需求的 SQL 語句牽扯到兩張表,這里呢我們可以通過子查詢的方式來實(shí)現(xiàn)。但是 UPDATE 語句中的子查詢?yōu)橄嚓P(guān)子查詢,所以并不建議使用。比較合適的方式就是實(shí)用 “表連接” 的方式來實(shí)現(xiàn),具體參考 “UPDATE 語句的表連接” 語法。
通過練習(xí)題的方式更鼓 “UPDATE” 的語法還是挺有意思的,可以開闊思路,有助于我們鞏固 “UPDATE” 的語法。
到此這篇關(guān)于MySQL學(xué)習(xí)之?dāng)?shù)據(jù)更新操作詳解的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)更新內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MYSQL數(shù)據(jù)庫數(shù)據(jù)拆分之分庫分表總結(jié)
這篇文章主要介紹了MYSQL數(shù)據(jù)庫數(shù)據(jù)拆分之分庫分表總結(jié),需要的朋友可以參考下2016-07-07mysql Out of memory (Needed 16777224 bytes)的錯(cuò)誤解決
至于我改的這幾個(gè)值是不是正確的解決方法,目前還不知道。先貼出來2012-07-07MySql樹形結(jié)構(gòu)(多級(jí)菜單)查詢?cè)O(shè)計(jì)方案
本文主要介紹了MySql樹形結(jié)構(gòu)(多級(jí)菜單)查詢?cè)O(shè)計(jì)方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03mysql中批量插入數(shù)據(jù)(1萬、10萬、100萬、1000萬、1億級(jí)別)
本文主要介紹了mysql中批量插入數(shù)據(jù)(1萬、10萬、100萬、1000萬、1億級(jí)別),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08