MySQL快速回顧:更新和刪除操做

前提要述:參考書籍《MySQL必知必會》mysql

6.1 更新數據

爲了更新(修改)表中的數據,可以使用UPDATE語句。可採用兩種方式使用UPDATE:程序員

  • 更新表中特定的行;
  • 更新表中全部的行。

UPDATE語法的結構由3部分組成:sql

  • 要更新的表;
  • 列名和它們的新值;
  • 肯定要更新行的過濾條件(WHERE關鍵字)。

格式:數據庫

UPDATE <table_name> SET field1=newValue1, field2=newValue2,...
    WHERE condition;

解釋:測試

  • SET命令用來將新值賦給被更新的列。
  • 使用WHERE子句來告訴MySQL要更新哪一行,通常會選擇一個能夠惟一區別其餘行的字段做爲條件。若是沒有WHERE子句那麼就會更新表中全部的行,這是很是致命的問題。

好比:在學生表中修改李四的性別:code

UPDATE student SET stu_sex='女' WHERE stu_name='李四';

若是爲了刪除某個列的值,則能夠設置爲NULL(假設表定義容許NULL值)it

在UPDATE語句中可使用子查詢的結果來更新數據;若是在更新一行或多行時出現一個錯誤,則整個UPDATE操做都會被取消(錯誤發生前更新的全部列被恢復到它們原來的值)。即便是錯誤,若是要繼續執行更新,則可使用IGNORE關鍵字。io

UPDATE IGNORE <table_name>...;

6.2 刪除數據

爲了將一個表中的某一行刪除,使用DELETE語句。能夠有兩種方式使用DELETE:table

  • 從表中刪除特定的行;
  • 從表中刪除全部行。

格式:class

DELETE FROM <table_name> WHERE condition;

解釋:

  • DELETE不須要列名和通配符。DELETE刪除整行而不是刪除列
    。若是要刪除列,使用UPDATE。
  • DELETE跟UPDATE同樣,都必需要有WHERE,即指定要刪除哪一行,因此必須注意;除非你要刪除表中所有數據,那就不加WHERE。
  • WHERE通常指定的是可以惟一區分行的字段,好比主鍵,名字(假設沒有重名的話)

例如:刪除學生表中名爲李四的學生:

DELETE FROM student WHERE stu_name='李四';

若是想要更快的從表中刪除全部的行,不要使用DELETE,使用TRUNCATE TABLE語句,它完成相同的工做,可是速度更快。由於TRUNCATE實際是刪除原來的表並從新建立一個表,而不是逐行刪除表中的數據。

6.3 更新和刪除的指導原則

SQL程序員使用UPDATE和DELETE必須遵循的習慣:

  • 除非確實打算更新和刪除每一行,不然毫不要使用不帶WHERE子句的UPDATE或DELETE語句。
  • 保證每一個表都是有主鍵的,儘量像WHERE子句那樣使用它(能夠指定各主鍵,多個值或值的範圍)。
  • 在對UPDATE或DELETE語句使用WHERE子句前,應該先用SELECT查詢語句進行測試,保證它過濾的是正確的記錄,以防止編寫WHERE子句不正確。
  • 使用強制實施引用完整性的數據庫,這樣MySQL將不容許刪除具備與其餘表相關聯的數據的行(外鍵)。
  • MySQL沒有撤銷(undo)按鈕,因此應該當心使用UPDATE和DELETE語句。
相關文章
相關標籤/搜索