mysql 資料庫,更新欄位語句:
一、UPDATE:
UPDATE的功能是更新表中的資料。這的語法和INSERT的第二種用法相似。必須提供表名以及SET表示式,在後面可以加WHERE以限制更新的記錄範圍。
UPDATE table_anem SET column_name1 = value1, column_name2 = value2, ...
WHERE ... 。
如下面的語句將users表中id等於123的記錄的age改為24。
UPDATE users SET age = 24 WHERE id = 123。
同樣,可以使用UPDATE更新多個欄位的值 UPDATE users SET age = 24, name = "Mike" WHERE id = 123。
上面的UPDATE語句透過WHERE指定一個條件,否則,UPDATE將更新表中的所有記錄的值。
在使用UPDATE更新記錄時,如果被更新的欄位的型別和所賦的值不匹配時,MySQL將這個值轉換為相應型別的值。如果這個欄位是數值型別,而且所賦值超過了這個資料型別的最大範圍,那麼MySQL就將這個值轉換為這個範圍最大或最小值。如果字串太長,MySQL就將多餘的字串截去。如果設定非空欄位為空,那麼將這個欄位設定為預設值,數字的預設值是0,字串的預設值是空串(不是null,是"")。
有兩種情況UPDATE不會對影響表中的資料:
1. 當WHERE中的條件在表中沒有記錄和它匹配時。
2. 將同樣的值賦給某個欄位時,如將欄位abc賦為"123",而abc的原值就是"123"。和INSERT、REPLACE一樣,UPDATE也返回所更新的記錄數。但這些記錄數並不包括滿足WHERE條件的,但卻未被更新的記錄。如下同的UPDATE語句就未更新任何記錄。
UPDATE users SET age = 30 WHERE id = 12。
Query OK, 0 rows affected (0.00 sec)。
注意:如果一個欄位的型別是TIMESTAMP,這個欄位在其它欄位更新時自動更新。
在有些時候需要得到UPDATE所選擇的行數,而不是被更新的行數。可透過一些API來達到。如MySQL提供的C API提供了一個選項可以得到想要的記錄數。而MySQL的JDBC驅動得到的預設記錄數也是匹配的記錄數。
UPDATE和REPLACE基本類似,但是之間有兩點不同。
1. UPDATE在沒有匹配記錄時什麼都不做,而REPLACE在有重複記錄時更新,在沒有重複記錄時插入。
二、DELETE和TRUNCATE TABLE:
在MySQL中有兩種方法可以刪除資料,一種是DELETE語句,另一種是TRUNCATE TABLE語句。DELETE語句可以透過WHERE對要刪除的記錄進行選擇。而使用TRUNCATE TABLE將刪除表中的所有記錄。因此,DELETE語句更靈活。
如果要清空表中的所有記錄,可以使用下面的兩種方法:
DELETE FROM table1。
TRUNCATE TABLE table1。
其中第二條記錄中的TABLE是可選的。
DELETE FROM table1 WHERE 1。
上面的語句在執行時將掃描每一條記錄。並不比較,這個WHERE條件永遠為true。這樣做可保持自增的最大值,由於掃描了所有的記錄,執行成本要比沒有WHERE子句的DELETE大得多。
DELETE和TRUNCATE TABLE的區別:DELETE可以透過WHERE語句選擇要刪除的記錄。但執行得速度不快。且還可返回被刪除的記錄數。而TRUNCATE TABLE無法刪除指定的記錄,且不能返回被刪除的記錄。但執行得非常快。和標準的SQL語句不同,DELETE支援ORDER BY和LIMIT子句,透過這兩個子句,可更好地控制要刪除的記錄。如當我們只想刪除WHERE子句過濾出來的記錄的一部分,可以使用LIMIB,如果要刪除後幾條記錄,可透過ORDER BY和LIMIT配合使用。假設要刪除users表中name等於"Mike"的前6條記錄。可使用如下的DELETE語句:
DELETE FROM users WHERE name = "Mike" LIMIT 6。
mysql 資料庫,更新欄位語句:
一、UPDATE:
UPDATE的功能是更新表中的資料。這的語法和INSERT的第二種用法相似。必須提供表名以及SET表示式,在後面可以加WHERE以限制更新的記錄範圍。
UPDATE table_anem SET column_name1 = value1, column_name2 = value2, ...
WHERE ... 。
如下面的語句將users表中id等於123的記錄的age改為24。
UPDATE users SET age = 24 WHERE id = 123。
同樣,可以使用UPDATE更新多個欄位的值 UPDATE users SET age = 24, name = "Mike" WHERE id = 123。
上面的UPDATE語句透過WHERE指定一個條件,否則,UPDATE將更新表中的所有記錄的值。
在使用UPDATE更新記錄時,如果被更新的欄位的型別和所賦的值不匹配時,MySQL將這個值轉換為相應型別的值。如果這個欄位是數值型別,而且所賦值超過了這個資料型別的最大範圍,那麼MySQL就將這個值轉換為這個範圍最大或最小值。如果字串太長,MySQL就將多餘的字串截去。如果設定非空欄位為空,那麼將這個欄位設定為預設值,數字的預設值是0,字串的預設值是空串(不是null,是"")。
有兩種情況UPDATE不會對影響表中的資料:
1. 當WHERE中的條件在表中沒有記錄和它匹配時。
2. 將同樣的值賦給某個欄位時,如將欄位abc賦為"123",而abc的原值就是"123"。和INSERT、REPLACE一樣,UPDATE也返回所更新的記錄數。但這些記錄數並不包括滿足WHERE條件的,但卻未被更新的記錄。如下同的UPDATE語句就未更新任何記錄。
UPDATE users SET age = 30 WHERE id = 12。
Query OK, 0 rows affected (0.00 sec)。
注意:如果一個欄位的型別是TIMESTAMP,這個欄位在其它欄位更新時自動更新。
在有些時候需要得到UPDATE所選擇的行數,而不是被更新的行數。可透過一些API來達到。如MySQL提供的C API提供了一個選項可以得到想要的記錄數。而MySQL的JDBC驅動得到的預設記錄數也是匹配的記錄數。
UPDATE和REPLACE基本類似,但是之間有兩點不同。
1. UPDATE在沒有匹配記錄時什麼都不做,而REPLACE在有重複記錄時更新,在沒有重複記錄時插入。
二、DELETE和TRUNCATE TABLE:
在MySQL中有兩種方法可以刪除資料,一種是DELETE語句,另一種是TRUNCATE TABLE語句。DELETE語句可以透過WHERE對要刪除的記錄進行選擇。而使用TRUNCATE TABLE將刪除表中的所有記錄。因此,DELETE語句更靈活。
如果要清空表中的所有記錄,可以使用下面的兩種方法:
DELETE FROM table1。
TRUNCATE TABLE table1。
其中第二條記錄中的TABLE是可選的。
DELETE FROM table1 WHERE 1。
上面的語句在執行時將掃描每一條記錄。並不比較,這個WHERE條件永遠為true。這樣做可保持自增的最大值,由於掃描了所有的記錄,執行成本要比沒有WHERE子句的DELETE大得多。
DELETE和TRUNCATE TABLE的區別:DELETE可以透過WHERE語句選擇要刪除的記錄。但執行得速度不快。且還可返回被刪除的記錄數。而TRUNCATE TABLE無法刪除指定的記錄,且不能返回被刪除的記錄。但執行得非常快。和標準的SQL語句不同,DELETE支援ORDER BY和LIMIT子句,透過這兩個子句,可更好地控制要刪除的記錄。如當我們只想刪除WHERE子句過濾出來的記錄的一部分,可以使用LIMIB,如果要刪除後幾條記錄,可透過ORDER BY和LIMIT配合使用。假設要刪除users表中name等於"Mike"的前6條記錄。可使用如下的DELETE語句:
DELETE FROM users WHERE name = "Mike" LIMIT 6。