mysql 插入/更新資料

來源:互聯網
上載者:User

標籤:style   blog   http   color   ar   os   使用   sp   strong   

mysql 插入/更新資料

 

INSERT 語句

1、一次性列出全部欄位的值,例如:

INSERT INTO student VALUES(‘Chenqi‘,‘M‘, 29);INSERT INTO student VALUES(‘Bush‘,‘M‘, 60),(‘Obama‘, ‘M‘, 45);

允許同時插入多個資料行;

 

2、只對部分欄位賦值

INSERT INTO student(name, sex) VALUES (‘Abby‘, ‘F‘),(‘Joseph‘, ‘M‘);

沒有在INSERT語句中出現的欄位將被賦予預設值。允許同時插入多個資料行;

 

3、使用SET子句

INSERT INTO student SET name=‘Stein‘, sex=‘M‘;

沒有在SET子句裡出現的欄位被賦予預設值。這種形式的ISNERT語句不允許一次插入多個資料行。

 

REPLACE 語句

REPLACE語句和INSERT語句用法非常相似,唯一的區別就是,在一個UNIQUE索引或PRIMARY KEY中出現重複值的時候,REPLACE會先刪除舊行後再插入新行,INSERT語句則報錯。
如果資料表沒有使用PRIMARY KEY或UNIQUE索引,則REPLACE與INSERT語句完全一樣。

 

INSERT ... ON DUPLICATE KEY UPDATE Syntax

如果在INSERT語句末尾指定了ON DUPLICATE KEY UPDATE,並且插入行後會導致在一個UNIQUE索引或PRIMARY KEY中出現重複值,則在出現重複值的行執行UPDATE;如果不會導致唯一值列重複的問題,則插入新行。 

 

例如,如果列 a 為擁有UNIQUE索引,並且包含值1,

CREATE TABLE t (id INT AUTO_INCREMENT,a INT, b INT, c INT, PRIMARY KEY(id), UNIQUE KEY(a));INSERT INTO t (a,b,c) VALUES (1,9,11);

則以下兩個語句具有相同的效果:

INSERT INTO t (a, c) VALUES (1, 3) ON DUPLICATE KEY UPDATE c=c+1;
UPDATE table SET c=c+1 WHERE a=1;

如果行作為新記錄被插入,則受影響行(affected-rows)的值顯示1;如果原有的記錄被更新,則受影響行的值顯示2。 

 

 

也可以INSERT多行記錄:

INSERT INTO TABLE (a,c) VALUES (1,3),(1,7) ON DUPLICATE KEY UPDATE c=c+1;

執行後,c 的值會變為 13 (c 在原值上+1).

 

 

 

使用VALUES函數

INSERT INTO  t(a,c) VALUES (1,3),(1,7) ON DUPLICATE KEY UPDATE c=VALUES(c)+1;

執行後,c 的值會變為 8 (c 在插入值上+1).

 

 

 

LOAD DATA LOCAL INFILE file_name INTO TABLE table_name

預設情況下,LOAD DATA語句假設各欄位的值以‘\t‘分隔,資料行以‘\n‘分隔,資料值的排列順序與欄位在資料表裡的先後順序一致。

LOCAL關鍵字可以使客戶程式讀取資料檔案並發送到伺服器以載入,如果省略LOCAL關鍵字,就表示資料檔案是儲存在伺服器主機上的,而你必須擁有相應的FILE伺服器存取權限才能把檔案裡的資料載入到資料表裡去。

 

載入資料檔案的另一種方法是使用mysqlimport工具,例如:

mysqlimport -r -L -u username -p passwd -h hostname -P port db_name file_name

該命令將產生一條把file_name檔案裡的資料值載入到db_name的指定資料表裡去的LOAD DATA語句。

注意:mysqlimport 程式是根據資料檔案的名字來確定與之對應的資料表的,例如:

mysqlimport -L sampdb member.txt

就是將member.txt資料檔案載入到sampdb.member資料表的。

 

mysqlimport 的選項:

-r:--replace,對於unique key上的重複記錄,使用新行取代舊記錄;

-i:--ignore,對於unique key上的重複記錄,忽略不處理;

-L:--local,從用戶端本地主句讀取輸入檔案;

-c,--columns,指定輸入資料檔案中的欄位列表(有序);
-D,--delete,在匯入新資料檔案之前,清空資料表;

 

 

 

參考文檔:

http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html

 

mysql 插入/更新資料

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.