person,共有三個欄位,其中 last_name, first_name 組合成主鍵。
[root@kvm8 ~]# mysql -s -uroot -p123qwe
mysql> use dyw;
mysql> CREATE TABLE person
-> (
-> first_name CHAR(20) NOT NULL,
-> last_name CHAR(20) NOT NULL,
-> gender CHAR(10),
-> PRIMARY KEY (last_name, first_name)
-> );
mysql>
INSERT IGNORE 語法於資料表 person 新增一筆紀錄並查詢。
mysql> INSERT IGNORE INTO person (last_name, first_name)
-> values('Wang', 'De-Yu');
mysql> select * from person;
first_name last_name gender
De-Yu Wang NULL
mysql>
INSERT 語法新增紀錄時,若此紀錄已存在,因為有設定主鍵,其具不重複性,所以出現紀錄重複的錯誤訊息。
mysql> INSERT INTO person (last_name, first_name)
-> values('Wang', 'De-Yu');
ERROR 1062 (23000): Duplicate entry 'Wang-De-Yu' for key 'PRIMARY'
INSERT IGNORE 語法新增紀錄時,若此紀錄已存在,則忽略不動作。因此,再執行一次沒有出現錯誤訊息,但查詢結果還是只有一筆。
mysql> INSERT IGNORE INTO person (last_name, first_name)
-> values('Wang', 'De-Yu');
mysql> select * from person;
first_name last_name gender
De-Yu Wang NULL
mysql>
REPLACE 語法新增紀錄時,若此紀錄已存在,則取代原紀錄。
mysql> REPLACE INTO person (last_name, first_name)
-> values('Lin','Linda');
mysql> select * from person;
first_name last_name gender
Linda Lin NULL
De-Yu Wang NULL
mysql>
INSERT IGNORE 語法新增紀錄,此紀錄已存在,但要新增的非主鍵紀錄資料不同,還是忽略不新增。
mysql> INSERT IGNORE INTO person (last_name, first_name, gender)
-> values('Lin','Linda','F');
mysql> select * from person;
first_name last_name gender
Linda Lin NULL
De-Yu Wang NULL
mysql>
REPLACE 語法新增紀錄,此紀錄已存在,但要新增的非主鍵紀錄資料不同,會以新的資料取代舊紀錄。
mysql> REPLACE INTO person (last_name, first_name,gender)
-> values('Lin','Linda','F');
mysql> select * from person;
first_name last_name gender
Linda Lin F
De-Yu Wang NULL
mysql>