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>