久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL數據庫的更新語句

168次閱讀
沒有評論

共計 2834 個字符,預計需要花費 8 分鐘才能閱讀完成。

本篇內容主要講解“MySQL 數據庫的更新語句”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“MySQL 數據庫的更新語句”吧!

一、INSERT 和 REPLACE

INSERT 和 REPLACE 語句的功能都是向表中插入新的數據。這兩條語句的語法類似。它們的主要區別是如何處理重復的數據。

1. INSERT 的一般用法

MySQL 中的 INSERT 語句和標準的 INSERT 不太一樣,在標準的 SQL 語句中,一次插入一條記錄的 INSERT 語句只有一種形式。

INSERT INTO tablename(列名 hellip;) VALUES(列值);

而在 MySQL 中還有另外一種形式。

INSERT INTO tablename SET column_name1 = value1, column_name2 = value2,hellip;;

第一種方法將列名和列值分開了,在使用時,列名必須和列值的數一致。如下面的語句向 users 表中插入了一條記錄:

INSERT INTO users(id, name, age) VALUES(123, 姚明, 25);

第二種方法允許列名和列值成對出現和使用,如下面的語句將產生中樣的效果。

INSERT INTO users SET id = 123, name = 姚明, age = 25;

如果使用了 SET 方式,必須至少為一列賦值。如果某一個字段使用了省缺值(如默認或自增值),這兩種方法都可以省略這些字段。如 id 字段上使用了自增值,上面兩條語句可以寫成如下形式:

INSERT INTO users (name, age) VALUES(姚明,25);

INSERT INTO uses SET name = 姚明, age = 25;

MySQL 在 VALUES 上也做了些變化。如果 VALUES 中什么都不寫,那 MySQL 將使用表中每一列的默認值來插入新記錄。

INSERT INTO users () VALUES();

如果表名后什么都不寫,就表示向表中所有的字段賦值。使用這種方式,不僅在 VALUES 中的值要和列數一致,而且順序不能顛倒。INSERT INTO users VALUES(123, 姚明, 25);

如果將 INSERT 語句寫成如下形式 MySQL 將會報錯。

INSERT INTO users VALUES(姚明,25);

2. 使用 INSERT 插入多條記錄

看到這個標題也許大家會問,這有什么好說的,調用多次 INSERT 語句不就可以插入多條記錄了嗎! 但使用這種方法要增加服務器的負荷,因為,執行每一次 SQL 服務器都要同樣對 SQL 進行分析、優化等操作。幸好 MySQL 提供了另一種解決方案,就是使用一條 INSERT 語句來插入多條記錄。這并不是標準的 SQL 語法,因此只能在 MySQL 中使用。

INSERT INTO users(name, age)

VALUES(姚明, 25), (比爾. 蓋茨, 50), (火星人, 600);

上面的 INSERT 語句向 users 表中連續插入了 3 條記錄。值得注意的是,上面的 INSERT 語句中的 VALUES 后必須每一條記錄的值放到一對 (hellip;) 中,中間使用 , 分割。假設有一個表 table1

CREATE TABLE table1(n INT);

如果要向 table1 中插入 5 條記錄,下面寫法是錯誤的:

INSERT INTO table1 (i) VALUES(1,2,3,4,5);

MySQL 將會拋出下面的錯誤

ERROR 1136: Column count doesnt match value count at row 1

而正確的寫法應該是這樣:

INSERT INTO t able1(i) VALUES(1),(2),(3),(4),(5);

當然,這種寫法也可以省略列名,這樣每一對括號里的值的數目必須一致,而且這個數目必須和列數一致。如:

INSERT INTO t able1 VALUES(1),(2),(3),(4),(5);

3. REPLACE 語句

我們在使用數據庫時可能會經常遇到這種情況。如果一個表在一個字段上建立了唯一索引,當我們再向這個表中使用已經存在的鍵值插入一條記錄,那將會拋出一個主鍵沖突的錯誤。當然,我們可能想用新記錄的值來覆蓋原來的記錄值。如果使用傳統的做法,必須先使用 DELETE 語句刪除原先的記錄,然后再使用 INSERT 插入新的記錄。而在 MySQL 中為我們提供了一種新的解決方案,這就是 REPLACE 語句。使用 REPLACE 插入一條記錄時,如果不重復,REPLACE 就和 INSERT 的功能一樣,如果有重復記錄,REPLACE 就使用新記錄的值來替換原來的記錄值。

使用 REPLACE 的最大好處就是可以將 DELETE 和 INSERT 合二為一,形成一個原子操作。這樣就可以不必考慮在同時使用 DELETE 和 INSERT 時添加事務等復雜操作了。

在使用 REPLACE 時,表中必須有唯一索引,而且這個索引所在的字段不能允許空值,否則 REPLACE 就和 INSERT 完全一樣的。

在執行 REPLACE 后,系統返回了所影響的行數,如果返回 1,說明在表中并沒有重復的記錄,如果返回 2,說明有一條重復記錄,系統自動先調用了 DELETE 刪除這條記錄,然后再記錄用 INSERT 來插入這條記錄。如果返回的值大于 2,那說明有多個唯一索引,有多條記錄被刪除和插入。

REPLACE 的語法和 INSERT 非常的相似,如下面的 REPLACE 語句是插入或更新一條記錄。

REPLACE INTO users (id,name,age) VALUES(123, 趙本山, 50);

插入多條記錄:

REPLACE INTO users(id, name, age)

VALUES(123, 趙本山, 50), (134,Mary,15);

REPLACE 也可以使用 SET 語句

REPLACE INTO users SET id = 123, name = 趙本山, age = 50;

上面曾提到 REPLACE 可能影響 3 條以上的記錄,這是因為在表中有超過一個的唯一索引。在這種情況下,REPLACE 將考慮每一個唯一索引,并對 每一個索引對應的重復記錄都刪除,然后插入這條新記錄。假設有一個 table1 表,有 3 個字段 a, b, c。它們都有一個唯一索引。

CREATE TABLE table1(a INT NOT NULL UNIQUE,b INT NOT NULL UNIQUE,c INT NOT NULL UNIQUE);

假設 table1 中已經有了 3 條記錄

a b c

1 1 1

2 2 2

3 3 3

下面我們使用 REPLACE 語句向 table1 中插入一條記錄。

REPLACE INTO table1(a, b, c) VALUES(1,2,3);

返回的結果如下

Query OK, 4 rows affected (0.00 sec)

在 table1 中的記錄如下

a b c

1 2 3

我們可以看到,REPLACE 將原先的 3 條記錄都刪除了,然后將 (1, 2, 3) 插入。

到此,相信大家對“MySQL 數據庫的更新語句”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-01發表,共計2834字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 普兰店市| 天门市| 武义县| 南充市| 桑植县| 章丘市| 贵阳市| 陆良县| 格尔木市| 遂宁市| 轮台县| 禄劝| 丰都县| 襄樊市| 克什克腾旗| 苍梧县| 阳曲县| 理塘县| 阿城市| 易门县| 葫芦岛市| 青龙| 台安县| 宾阳县| 阿城市| 内江市| 张掖市| 长治市| 三明市| 昭平县| 洱源县| 麻江县| 阿拉尔市| 吉木乃县| 酉阳| 永登县| 弥勒县| 易门县| 卫辉市| 逊克县| 鲜城|