回覆列表
  • 1 # 使用者2458114238191884

    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。

  • 中秋節和大豐收的關聯?
  • 新鮮竹蓀魚乾竹蓀的區別?