1. 程式人生 > >插入數據:insert,replace

插入數據:insert,replace

ace error 語句 語法 from 逗號 ont 例子 update

*insert高級用法*

1、語法:insert into tbname(字段列表) values 值列表;


  1.1可以不將所有的字段都插入數據。如果說需要完成部分字段的插入,需要必須存在字段列表。
沒有插入的字段,使用默認值填充。
  insert into a_table (name) values (‘jack‘);

  1.2如果插入部分字段,可以使用下面的set語句,不同字段用逗號隔開:
  insert into a_table set a_id=7,a_name=‘rose‘;


  1.3值列表的語法,可以一次性插入多條數據,每條數據采用記錄構造符 “括號”完成即可。


  insert into a_table (a_name,a_part) values (‘老劉‘,‘設計部‘),(‘老鐵‘,‘財務部‘);


【問題】插入數據時,如果主鍵沖突會如何?

答:默認有主鍵約束,不會插入成功,但是可以在insert語法內,控制在主鍵沖突時,改成執行 更新 操作。
相當於,更新所沖突主鍵字段相對應的更新值。update 後不跟set

例子:
MariaDB [test]> insert into a_table (a_id,a_name) values (13,‘aly‘);
ERROR 1062 (23000): Duplicate entry ‘13‘ for key ‘PRIMARY‘ #a_id為主鍵。

MariaDB [test]> insert into a_table (a_id,a_name) values (13,‘aly‘)
-> on duplicate key update a_name=‘bob‘; #把a_id=13中的a_name字段更新成bob。

【插入數據失敗流程】
判斷是否插入數據成功--->>失敗(主鍵沖突|唯一索引沖突)--->>更新


2、插入的數據源:

  2.1除了使用自定義數據外,還可以是使用select語句查詢到的數據,作為插入的數據源。
  insert into a_table (a_name,a_part) select b_name,b_part from b_table;



  2.2數據可以來源於其它數據表,要求:字段數量和類型一致即可。
  insert into a_table (a_name,a_part) select name,sex from stu_info;

3、通過強制使用default關鍵字,或者default()函數,使用默認值:
insert into teacher values
(13,‘alex‘,‘male‘,default),
(14,‘bob‘,‘male‘,default(days));


*replace替換高級用法*

1、語法:replace into,與on duplicate key update,非常相似,只要主鍵沖突就替換,不沖突就直接插入數據。
    例子:replace into b_table values (2,‘laowang‘,‘mishubu‘);

插入數據:insert,replace