1. 程式人生 > 實用技巧 >MySQL基礎之MySQL必知必會(二十)更新和刪除資料

MySQL基礎之MySQL必知必會(二十)更新和刪除資料

更新資料

為了更新(修改)表中的資料, 可使用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將不允許刪除具有與其他表相關聯的資料的行