INSERT用於向一個已有的表中插入新行。INSERT…VALUES語句根據明確指定的值插入行。讓我們先來看一下insert語句標准的定義,放在[]內的都是可以省略的:
語法
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
實例
create table links (name varchar(255) not null default '', address varchar(255) not null default '');
最簡單的插入方法
代碼如下 復制代碼Mysql>insert into worker values(‘tom’,’[email protected]’),(‘paul’,’[email protected]’);
或
insert into links values('jerichen','gdsz');
批量保存數據
假如我們想一次性的往數據庫裡插入多條數據咋辦?一定要寫多條語句嗎?肯定是不會的,因為MySQL設計的還是很人性的。其提供insert語句的一種非標准格式,即,values(字段值1,字段值2,字段值3),(另一個字段1的值,另一個字段2的值,另一個字段3的值);
# 同時插入兩條數據,看語法說明,那個into被我省略了
代碼如下 復制代碼 insert links (name,url) values('jerichen','gdsz'),('alone','gdgz');
使用INSERT…SELECT語句插入從其他表選擇的行
當我們在上一節學習創建表時,知道可以使用select從其它表來直接創建表,甚至可以同時復制數據記錄。如果你已經擁有了一個表,你同樣可以從select語句的配合中獲益。
從其它表中錄入數據,例如:
代碼如下 復制代碼mysql>insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2;
你也可以略去目的表的列列表,如果你每一列都有數據錄入。
代碼如下 復制代碼mysql>insert into tbl_name1 select col3,col4 from tbl_name2;
INSERT INTO ... SELECT語句滿足下列條件:
查詢不能包含一個ORDER BY子句。
關於insert語句的幾點說明:
其實也不是啥說明了,都是書上面的例子,不過懶的敲了,而且感覺沒有啥太大意義,都是需要大家理解的。給不給例子是一樣的。
1. 因為之前我在日志中介紹創建表結構的時候,字段是可以有默認值的,在MySQL4.0.3及更高版本都支持一個DEFAULT關鍵字,在我們使用 insert 語句的時候,可以使字段的值等於DEFAULT關鍵字,來使其等於數據庫創建的時候的default值。
2. AUTOINCREMENT自增字段,這個我們是不用給出值的,因為系統會自動為該字段來進行自增,但是如果您願意,也是可以傳值的,看您心情。
3. UNIQUE這個我們也說過,就是字段唯一的意思,比如說用戶的id設置UNIQUE,已經存在一條用戶id為1的數據,如果此時您再想插入一條用戶id為1的數據是不會成功的,系統會出錯的。
4. 如果數據庫字段允許存在NULL值的話,我們在insert插入語句中,也是可以將字段值設為NULL的。