SQL語句-UPDATE語句


Update語句

  • update語句用於修改表中已經存在的數據
  • 單表修改語句結構
  • 多表修改語句結構
  • update語句的常規用法
update students set sname='abcd',gender='1' where sid=1;

update students,students2 set students.sname=students2.sname,students.gender=students2.gender where students.sid=students2.sid;
  • 單表修改是指修改指定單個表中的已經存在數據的一個或多個列 的數值;set短語后面跟要修改的列和值;
  • where子句表示限定要修改表中的哪些行數據,如果沒有where子 句則表示所有行都要修改;order by子句表示update數據按照指定 的順序進行;limit子句表示限定修改數據的行數
  • 多表修改是指修改table_references指定的多個表中滿足條件的行 數據,多表修改不允許使用order by和limit子句
  • 執行update語句需要修改表的權限
  • Low_priority關鍵詞表示修改語句需要等待其他鏈接的讀此表操作
  • 結束后再執行,只作用在MyISAM, MEMORY, and MERGE存儲引擎
  • Ignore關鍵詞表示當修改語句碰到違反唯一性約束條件等情況是, 語句不會報錯回退而是報警告信息
update students set sname=‘abc’ limit 2;		-- 只修改首先找到的兩行 記錄
Update students set sid=1 where sid=2; 		-- 執行失敗,違反唯一性 約束
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
Update ignore students set sid=1 where sid=2; 	-- 執行成功但數據 不會修改

以下語句的col1只會比原值增加1

UPDATE t1 SET col1 = col1 + 1;

以下語句的col2和col1的結果是一樣的

UPDATE t1 SET col1 = col1 + 1, col2 = col1;

Order by指定update數據的順序

  • 在某些情況下可以避免錯誤的發生,比如t 表中的id字段是有唯一約束的,則以下第一個語句執行會報錯,而第二個語 句執行則正常
UPDATE t SET id = id + 1;

UPDATE t SET id = id + 1 ORDER BY id DESC;

mysql> update students2 set sid=sid+1;
ERROR 1062 (23000): Duplicate entry '2' for key 'PRIMARY'

mysql> update students2 set sid=sid+1 order by sid desc;
Query OK, 2 rows affected (0.04 sec)
Rows matched: 2 Changed: 2 Warnings: 0

多表修改舉例(表之間通過where條件進行join操作)

UPDATE items,month SET items.price=month.price WHERE items.id=month.id;		

練習

  • 將所有學號小於等於100的學生的系改為education系
  • 將姓名為ruth且id在100和200之間的老師的姓名改成carey


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM