MySQL基礎之MySQL必知必會(二十)更新和刪除資料
阿新 • • 發佈:2020-07-30
更新資料
為了更新(修改)表中的資料, 可使用UPDATE語句。可採用兩種方式使用UPDATE:
- 更新表中特定的行
- 更新表中的所有行
基本的UPDATE語句由3部分組成, 分別是:
- 要更新的表
- 列名和他們的新值
- 確定要更新行的過濾條件
MariaDB [crashcourse]> UPDATE customers SET cust_email = '[email protected]' WHERE cust_id = 10005; Query OK, 1 row affected (0.013 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB[crashcourse]>
UPDATE語句中可以使用子查詢。使得能用SELECT語句檢索出的資料更新列資料
如果用UPDATE語句更新多行, 並且在更新這些行中的一行或多行出現錯誤的時候, 則整個UPDATE操作被取消。
為即使是傳送錯誤, 也繼續進行更新, 可使用IGIORE關鍵字, 如下所示:
UPDATE IGNORE customers ...
為了刪除某個列, 可以設定它為NULL.
MariaDB [crashcourse]> UPDATE customers SET cust_email = NULL WHERE cust_id = 10005; Query OK,1 row affected (0.002 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [crashcourse]>
刪除資料
從表中刪除資料, 使用DELETE語句。可以兩種方式使用DELETE:
- 從表中刪除特定的行
- 從表中刪除所有的行
MariaDB [crashcourse]> DELETE FROM customers WHERE cust_id = 10006; Query OK, 0 rows affected (0.000 sec) MariaDB [crashcourse]>
DELETE不需要使用列名或萬用字元。DELETE刪除整行而不是刪除列。為了刪除指定的列, 請使用UPDATE語句
DELETE語句從表中刪除行, 甚至是刪除表中所有的行。但是, DELETE不刪除表本身
更新和刪除的指導原則
使用UPDATE和DELETE語句全都具有WHERE子句,如果省略了WHERE子句,則UPDATE或DELETE將被應用到表中所有的行。
下面是許多SQL程式設計師使用UPDATE或DELETE時所遵循的習慣:
- 除非確實打算更新和刪除每一行,否則絕對不要使用不帶WHERE子句的UPDATE或DELETE語句
- 保證每個表都有主鍵,儘可能像WHERE子句那樣使用它(可以指定各主鍵、多個值或值的範圍)
- 在對UPDATE或DELETE語句使用WHERE子句前,應該先用SELECT進行測試,保證它過濾的是正確的記錄,以防編寫的WHERE子句不正確
- 使用強制實施引用完整性的資料庫,這樣MySQL將不允許刪除具有與其他表相關聯的資料的行