MySQL之增_insert-replace


MySQL增刪改查之增insert、replace

一、INSERT語句

  帶有values子句的insert語句,用於數據的增加

語法:

INSERT [INTO] tbl_name[(col_name,...)]   {VALUES | VALUE} (expr ,...),(...),...

  ①用來把一個新行插入到表中

  ②為和其它數據庫保持一致,不要省略INTO關鍵字以及使用VALUES而不是value關鍵字

  ③插入一行時,要求必須對該行所有的列賦值。但是賦值方式可以是顯式賦值(直接給出值)隱式賦值(由MySQL自動賦值)

 

基本格式:

  insert into <表名> (列名1,列名2,列名3,......)  values (值1,值2,值3,......);

解析:

  ①(列名1,列名2,列名3,......)稱為 列清單

  ②(值1,值2,值3,......)稱為 值清單

  ③列清單和值清單中的列和值必須相互對應(數據類型)

 

1、在表名后面列出所有的列名

示例:插入一個新的球隊到teams表中

mysql> INSERT INTO teams(teamno,playerno,division) VALUES(3,6,'third');

 

2、在表名后面省略所有的列名

要求:VALUES子句中的值必須按照列在表結構中的順序來一一賦值

mysql> INSERT INTO teams VALUES(4,104,'third');

 

3、在表名后面只列出部分的列名

注意:所有沒有明確賦值的列,將通過隱式賦值自動得到null值

mysql> insert into <表名> (列名1,列名3......)  values (值1,值3,......);

添加一個新行數據,沒有指定賦值的列,結果集改行數據的列名2處隱式賦null值

 

當然,可使用字面量NULL給列賦空值

mysql> insert into <表名> (列名1,列名2,列名3)  values (值1,null,值3);

 

4、VALUES子句中除了字面量,還可以使用函數、計算、標量子查詢

INSERT INTO <表名1>(列1,列2)

  VALUES((SELECT count(*) FROM 表名2),

    (SELECT sum(列名) FROM 表名3));

注意:子查詢必須放在單獨的小括號中

 

一條INSERT語句可以插入多個行:

示例:添加4個新的球隊

INSERT INTO teams(teamno, captainno,division)

  VALUES (6,7,'third'),

            (7,27,'fourth'),

            (8,39,'fourth'),

            (9,112,'sixth');  

注意:這種語法只要有1行出錯,則插入全部取消 

INSERT語句中可以使用IGNORE選項來當INSERT語句出錯時,不顯示錯誤消息:但是INSERT語句不會執行

 

5、從其他表中復制數據:帶子查詢的INSERT語句,實現從其他表中(可按條件)復制數據進入目標表

語法:

INSERT   [INTO]  tbl_name[(col_name,...)]
  SELECT ...

注意:

  ①如果在表名后面列出了列名,那么列的數量和數據類型必須和子查詢的select列表相匹配

  ②如果在表名后面沒有列出了列名,默認就是直接復制

insert....  select.... 語句常在需要進行數據表的備份時使用

 

無條件復制:將一個表中的原始數據記錄,插入到另一個表中

按條件copy:將一個表查詢出來的進行聚合操作之后的記錄,插入到目標表中

 

當然,可以把本表中的行再次添加到本表中,但是必須注意主鍵值不要重復。

 

 

二、REPLACE語句:替代已有的行

  INSERT語句的一個變種

當添加新行時:

  ①如果主鍵值重復,那么就覆蓋表中已有的行

  ②如果沒有主鍵值重復,則插入該行

語法:

REPLACE [INTO] tbl_name [(col_name,...)]
  VALUES (expr,...),(...),...

或者

REPLACE [INTO] tbl_name [(col_name,...)]
  SELECT ...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM