MySQL必知應會-第20章-更新和刪除資料

來源:互聯網
上載者:User

標籤:過濾   工作   where   關鍵字   學習   強制   資料   刪除行   customers   

第20章-更新和刪除資料

本章介紹如何利用UPDATE和DELETE語句進一步操縱表資料。

20.1 更新資料

為了更新(修改)表中的資料,可使用UPDATE語句。可採用兩種方式使用UPDATE;

  • 更新表中特定行;
  • 更新表中所有行。
    下面分別對它們進行介紹。
    不要省略WHERE子句 在使用UPDATE時一定要注意細心。因為稍不注意,就會更新表中所有行。在使用這條語句前,請完整地閱讀本節。
    UPDATE與安全 可以限制和控制UPDATE語句的使用,更多內容請參見第28章。

UPDATE語句非常容易使用,甚至可以說是太容易使用了。基本的UPDATE語句由3部分組成,分別是;

  • 要更新的表;
  • 列名和它們的新值;140 更新和刪除資料
  • 確定要更新行的過濾條件。

舉一個簡單例子。客戶10005現在有了電子郵件地址,因此他的記錄需要更新,語句如下

UPDATE語句總是以要更新的表的名字開始。在此例子中,要更新的表的名字為customers。 SET命令用來將新值賦給被更新的列。如這裡所示, SET子句設定cust_email列為指定的值
: set cust_email=’[email protected]@com’

UPDATE語句以WHERE子句結束,它告訴MySQL更新哪一行。沒有WHERE子句, MySQL將會用這個電子郵件地址更新customers表中所有行,這不是我們所希望的。
更新多個列的文法稍有不同;

在更新多個列時,只需要使用單個SET命令,每個“列=值”對之間用逗號分隔(最後一列之後不用逗號)。在此例子中,更新客戶10005的cust_name和cust_email列。

在UPDATE語句中使用子查詢 UPDATE語句中可以使用子查詢,使得能用SELECT語句檢索出的資料更新列資料。關於子查詢及使用的更多內容,請參閱第14章。

IGNORE關鍵字 如果用UPDATE語句更新多行,並且在更新這些行中的一行或多行時出一個現錯誤,則整個UPDATE操作被取消(錯誤發生前更新的所有行被恢複到它們原來的值)。為即使是發生錯誤,也繼續進行更新,可使用IGNORE關鍵字,如下所示;UPDATE IGNORE customers…
為了刪除某個列的值,可設定它為NULL(假如表定義允許NULL值)。如下進行;

其中NULL用來去除cust_email列中的值。

20.2 刪除資料

為了從一個表中刪除(去掉)資料,使用DELETE語句。可以兩種方式使用DELETE;

  • 從表中刪除特定的行;
  • 從表中刪除所有行。
    下面分別對它們進行介紹。
    不要省略WHERE子句 在使用DELETE時一定要注意細心。因為稍不注意,就會錯誤地刪除表中所有行。在使用這條語句前,請完整地閱讀本節。DELETE與安全 可以限制和控制DELETE語句的使用,更多內容請參見第28章。前面說過, UPDATE非常容易使用,而DELETE更容易使用。
    下面的語句從customers表中刪除一行;

這條語句很容易理解。 DELETE FROM要求指定從中刪除資料的表名。WHERE子句過濾要刪除的行。在這個例子中,只刪除客戶10006。如果省略WHERE子句,它將刪除表中每個客戶。DELETE不需要列名或萬用字元。 DELETE刪除整行而不是刪除列。為了刪除指定的列,請使用UPDATE語句。

刪除表的內容而不是表 DELETE語句從表中刪除行,甚至是刪除表中所有行。但是, DELETE不刪除表本身。

更快的刪除 如果想從表中刪除所有行,不要使用DELETE。可使用TRUNCATE TABLE語句,它完成相同的工作,但速度更快( TRUNCATE實際是刪除原來的表並重新建立一個表,而不是逐行刪除表中的資料)。

20.3 更新和刪除的指導原則

前一節中使用的UPDATE和DELETE語句全都具有WHERE子句,這樣做的理由很充分。如果省略了WHERE子句,則UPDATE或DELETE將被應用到表中所有的行。換句話說,如果執行UPDATE而不帶WHERE子句,則表中每個行都將用新值更新。類似地,如果執行DELETE語句而不帶WHERE子句,表的所有資料都將被刪除。下面是許多SQL程式員使用UPDATE或DELETE時所遵循的習慣。

  • 除非確實打算更新和刪除每一行,否則絕對不要使用不帶WHERE子句的UPDATE或DELETE語句。
  • 保證每個表都有主鍵(如果忘記這個內容,請參閱第15章),儘可能像WHERE子句那樣使用它(可以指定各主鍵、多個值或值的範圍)。
  • 在對UPDATE或DELETE語句使用WHERE子句前,應該先用SELECT進行測試,保證它過濾的是正確的記錄,以防編寫的WHERE子句不正確。
  • 使用強制實施參考完整性的資料庫(關於這個內容,請參閱第15章),這樣MySQL將不允許刪除具有與其他表相關聯的資料的行。

小心使用 MySQL沒有撤銷( undo)按鈕。應該非常小心地使用UPDATE和DELETE,否則你會發現自己更新或刪除了錯誤的資料。19020.4 小結 143

20.4 小結

我們在本章中學習了如何使用UPDATE和DELETE語句處理表中的資料。我們學習了這些語句的文法,知道了它們固有的危險性。本章中還講解了為什麼WHERE子句對UPDATE和DELETE語句很重要,並且給出了應該遵循的一些指導原則,以保證資料的安全。

MySQL必知應會-第20章-更新和刪除資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.