插入記錄
插入記錄
插入記錄有兩個(gè)基本語(yǔ)法
插入基本語(yǔ)法一
插入基本語(yǔ)法二
?
說(shuō)明
基本語(yǔ)法1與基本語(yǔ)法2的差異是:
1.??? 基本語(yǔ)法1的插入語(yǔ)句,表格中有多少個(gè)欄位就必須插入多少個(gè)值。一個(gè)不能多,一個(gè)也不能少。若有預(yù)設(shè)值,不想傳,可以寫(xiě)上null。
2.??? 基本語(yǔ)法2中,除非有必填欄位必須寫(xiě)入值外。如果有預(yù)設(shè)值的不想寫(xiě)可以忽略不寫(xiě)。 mysql會(huì)自動(dòng)補(bǔ)全預(yù)設(shè)值。
3.??? 基本語(yǔ)法2中,以u(píng)ser(id,username,sex)欄位順序?yàn)橹档捻樞颉?
假設(shè)有一張表為user表,我們將欄位、欄位說(shuō)明、型別和欄位選填和必須狀態(tài)進(jìn)行說(shuō)明,表結(jié)構(gòu)如下:
依照基本語(yǔ)法一寫(xiě)上表中的插入語(yǔ)句:
insert into user values(null,'王開(kāi) ','php@163.com',null ,1);
注意
1.??? 可以不指定欄位名稱(chēng),但是values 後面的順序應(yīng)該和表格欄位的排序一致。
2.??? 有預(yù)設(shè)值的欄位可以不寫(xiě),則為預(yù)設(shè)值。
3.??? 若有預(yù)設(shè)值或可空白欄位不想傳入特定值,則可寫(xiě)入null。
4.??? 資料格式必須與表格規(guī)定的資料格式一致。
依照基本語(yǔ)法二寫(xiě)上表中的插入語(yǔ)句:
insert into user(username,sex) values('王開(kāi)',1);
注意
#1.??? ID為自增的欄位可以不用傳入值,每插入一次這個(gè)欄位的值會(huì)自動(dòng)向上加1。
2.??? 有預(yù)設(shè)值且可為空的欄位可不傳
3.??? 以表user(username,sex)的插入順序?yàn)闇?zhǔn)
4.??? 基本語(yǔ)法二為更常用的用法
基本語(yǔ)法變形:一次插入多筆記錄
insert into user(username,password,sex) values('黃曉明', 'abcdef', 1), ( 'angelababy', 'bcdeef', 0), ( '陳赫', '123456', 1), ('王寶強(qiáng)', '987654', 1);
插入記錄後返回該記錄ID
Mysql提供了一個(gè)LAST_INSERT_ID()的函數(shù)。 mysql> SELECT LAST_INSERT_ID(); -> 195
簡(jiǎn)單說(shuō)來(lái),就是這個(gè)函數(shù)將傳回插入的那筆記錄在表格中自增的那個(gè)欄位的值,一般我們都會(huì)給那個(gè)自增欄位命名為ID。這樣就可以傳回剛插入的記錄的ID值了。
mysql 記錄不存在時(shí)插入記錄存在則更新的實(shí)作方法
mysql> truncate `200702`; Query OK, 0 rows affected (0.01 sec) mysql> select * from `200702`; Empty set (0.01 sec) mysql> insert into `200702` (`domain`, `2nd_domain`, `tld`, `query_ns1`, `query_ns2`, `report_date`) values ('dnspod.com', 'dnspod', 'com', 1000, 2000, '2007-02-04') ON DUPLICATE KEY UPDATE `query_ns1` = `query_ns1` + 1000, `query_ns2` = `query_ns2` + 2000; Query OK, 1 row affected (0.00 sec)
當(dāng)然,建表的時(shí)候,千萬(wàn)別忘了給domain做一個(gè)unique
UNIQUE KEY `domain` (`domain`,`report_date`)