首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL INSERT/REPLACE/UPDATE語法全解析(一):兩種插入寫法、批量插入、REPLACE原子替換

     編輯:MySQL 資料庫相關知識

INSERT兩種語法風格

標準風格(列名值分離)

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

列名與值一一對應,順序固定。

SET風格(列值成對)

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

可讀性強,易維護,**推薦生產環境使用**。

自增/默認值省略寫法

-- id自增時
INSERT INTO users (name, age) VALUES('姚明', 25);
INSERT INTO users SET name='姚明', age=25;

特殊空值插入

INSERT INTO users () VALUES();  -- 全默認值
INSERT INTO users VALUES(123, '姚明', 25);  -- 省略列名=全列按順序賦值

⚠️ INSERT INTO users VALUES('姚明',25);會報錯(列數不匹配)。

單條INSERT插入多行(MySQL專有,極速)

INSERT INTO users(name, age) VALUES('姚明',25), ('比爾·蓋茨',50), ('火星人',600);

每行值用()包裹,逗號分隔。**比循環單條INSERT快數倍**,隨行數增長優勢擴大。

REPLACE:主鍵衝突時原子「刪舊插新」

  • 表**必須有唯一索引且列非NULL**,否則退化為INSERT
  • 語法同INSERT(支援VALUES/SET/多行)
  • 返回影響行數:1=純插入,2=1刪1插,>2=多唯一索引觸發多行刪插

多唯一索引REPLACE連鎖效應示例

CREATE TABLE t(a INT UNIQUE, b INT UNIQUE, c INT UNIQUE);
INSERT INTO t VALUES(1,1,1),(2,2,2),(3,3,3);
REPLACE INTO t(a,b,c) VALUES(1,2,3);  -- 衝突a=1、b=2、c=3三個唯一索引
-- 返回 4 rows affected:刪除3舊行 + 插入1新行
-- 表中僅剩 (1,2,3)

UPDATE基礎語法

UPDATE users SET age=24 WHERE id=123;
UPDATE users SET age=24, name='Mike' WHERE id=123;

同SET風格,可多列並行更新。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved