UPDATE和DELETE語(yǔ)句。
更新數(shù)據(jù)
UPDATE語(yǔ)句由3部分組成:
- 要更新的表;
- 列名和他們的新值;
- 確定要更新行的過(guò)濾條件。
例:客戶10005現(xiàn)在有了電子郵件地址,更新記錄:
UPDATE customers
SET cust_email = 'elmer@fudd.com'
WHERE cust_id = 10005;
UPDATE語(yǔ)句以WHERE子句結(jié)束,如果沒(méi)有會(huì)更新所有行。
更新多個(gè)行:
UPDATE customers
SET cust_name = 'The Fudds',
cust_email = 'elmer@fudd.com'
WHERE cust_id = 10005;
- UPDATE語(yǔ)句可以使用子查詢;
- IGNORE關(guān)鍵字:如果更新多條時(shí)一條出錯(cuò)操作會(huì)整個(gè)被取消;為即使發(fā)生錯(cuò)誤也繼續(xù)進(jìn)行更新:
UPDATE IGNORE customers...。
如果要?jiǎng)h除某列,可設(shè)置其為NULL:
UPDATE customers
SET cust_email = NULL
WHERE cust_id = 10005;
刪除數(shù)據(jù)
例:從customers表中刪除一行:
DELETE FROM customers
WHERE cust_id = 10006;
DELETE不需要列名或通配符。刪除整行而不是整列。
更新和刪除的指導(dǎo)原則
- 除非確實(shí)打算更細(xì)和刪除每一行,否則絕對(duì)不要使用不帶WHERE子句的UPDATE和DELETE語(yǔ)句;
- 保證每個(gè)表都有主鍵;
- 在對(duì)UPDATE或DELETE語(yǔ)句使用WHERE子句前,應(yīng)該先用SELECT進(jìn)行測(cè)試,保證它過(guò)濾的是正確的記錄;
- 使用強(qiáng)制實(shí)施引用完整性的數(shù)據(jù)庫(kù)(見(jiàn)chapter15),這樣MySQL將不允許刪除具有與其他表相關(guān)聯(lián)的數(shù)據(jù)的行。