這裏寫目錄標題
1.更新數據
爲了更新(修改)表中的數據,可使用UPDATE語句。
可採用兩種方式更新UPDATE:
- 更新表中特定行
- 更新表中 所有行
不要省略WHERE子句 在使用UPDATE時一定要注意細心。
基本的UPDATE語句由3部分組成,分別是:
- 要更新的表;
- 列名和它們的新值;
- 確定要更新行的過濾條件。
舉一個簡單例子。客戶10005現在有了電子郵件地址,因此他的記錄
需要更新,語句如下:
UPDATE customers
SET cust_email = '[email protected]'
WHERE cust_id = 10005;
分析:UPDATE語句總是以要更新的表的名字開始。在此例子中,要更新的表的名字爲customers。SET命令用來將新值賦給被更新的列。如這裏所示,SET子句設置cust_email列爲指定的值:
SET cust_email = '[email protected]'
UPDATE 語句以WHERE語句結束,告訴MySQL更新哪一行。
更新多個行
UPDATE customers
SET cust_name = 'The Fudds',
cust_email = '[email protected]'
WHERE cust_id = 10005;
在更新多個列時,只需要使用單個SET命令,每個“列=值”對之間用逗號分隔(最後一列之後不用逗號)。
IGNORE關鍵字
如果用UPDATE語句更新多行,並且在更新這些行中的一行或多行時出一個現錯誤,則整個UPDATE操作被取消(錯誤發生前更新的所有行被恢復到它們原來的值)。爲即使是發生錯誤,也繼續進行更新,可使用IGNORE關鍵字,如下所示:
UPDATE IGNORE customers…
爲了刪除某個列的值,可設置它爲NULL(假如表定義允許NULL值)
UPDATE customers
SET cust_email = NULL
WHERE cust_id = 10005;
其中NULL用來去除cust_email列中的值。
2.刪除數據
爲了從一個表中刪除(去掉)數據,使用DELETE語句。可以兩種方式使用DELETE:
- 從表中刪除特定的行
- 從表中刪除所有行
從customers表中刪除一行:
DELETE FROM customers
WHERE cust_id = 10006;
分析:在這個例子中,只刪除客戶10006。如果省略WHERE子句,它將刪除表中每個客戶。
更快的刪除
如果想從表中刪除所有行,不要使用DELETE。可使用TRUNCATE TABLE語句,它完成相同的工作,但速度更快(TRUNCATE實際是刪除原來的表並重新創建一個表,而不是逐行刪除表中的數據)。
3.更新和刪除的指導原則
下面是許多SQL程序員使用UPDATE或DELETE時所遵循的習慣。
- 除非確實打算更新和刪除每一行,否則絕對不要使用不帶WHERE子句的UPDATE或DELETE語句。
- 保證每個表都有主鍵(如果忘記這個內容,請參閱第15章),儘可能像WHERE子句那樣使用它(可以指定各主鍵、多個值或值的範圍)。
- 在對UPDATE或DELETE語句使用WHERE子句前,應該先用SELECT進行測試,保證它過濾的是正確的記錄,以防編寫的WHERE子句不正確。
- 使用強制實施引用完整性的數據庫(關於這個內容,請參閱第15章),這樣MySQL將不允許刪除具有與其他表相關聯的數據的行。