標籤:
1.INSERT INTO
最常用簡單的插入語句,可以有以下兩種用法
1> INSERT INTO tb_user(id, name, age) VALUES (100022, ‘Tom‘, 25); // 只給指定的列賦值
2> INSERT INTO tb_user VALUES (100022, ‘Tom‘, 25); // 必須 給所有列賦值
註: INTO關鍵字可以省略
2. INSERT INTO ... SELECT
可以將查詢結果插入表中
insert into t2same(name,age) select name, age from t2;
insert into t2same select id, name, age from t2;
註:1> 查詢不能包含一個ORDER BY子句
2> INSERT語句的目的表不能出現在SELECT查詢部分的FROM子句
3. INSERT IGNORE INTO
當插入資料時,如出現錯誤時(如重複資料)將不返回錯誤,只以警告形式返回。通常這也是我們使用IGNORE的目的,避免插入重複資料。
但是當有SQL語句語法錯誤時也不返回錯誤,所以使用ignore請確保語句本身沒有問題,否則也會被忽略掉。
重複資料的判斷依據:主鍵列相同或者唯一索引列相同。
例:
CREATE TABLE tb_user ( id int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, id_no VARCHAR(20) NOT NULL UNIQUE, age int(3))INSERT INTO tb_user VALUES(1, ‘Tom‘, 25);
-- 下方兩句既不會插入資料也不會報錯INSERT IGNORE INTO tb_user VALUES(1, ‘Lucy‘, 18);INSERT IGNORE INTO tb_user VALUES(2, ‘Tom‘, 18);
4. REPLACE INTO
表示插入替換資料,目的表中有Primary Key,或者UNIQUE索引,如果表中已經存在資料,則用新資料替換,如果沒有資料則效果同INSERT INTO.
在表中已存在和要插入相同資料時,REPLACE INTO 和 INSERT IGNORE INTO 二者作用正好相反。
5. ON DUPLICATE KEY UPDATE
當PRIMARY或者UNIQUE重複時,則執行UPDATE語句,在原有記錄基礎上,更新指定欄位內容,其它欄位內容保留。如UPDATE後為無用語句,如id=id,則同3功能相同。
例如,為了實現name重複的資料插入不報錯,可使用一下語句:
INSERT INTO tb_user (name) VALUES (‘Tom‘) ON DUPLICATE KEY UPDATE id = id
MySQL插入語句解析