1.數據插入
INSERT是用來插入(或添加)行到數據庫表的。插入可以用幾種方式使用:
❑ 插入完整的行;
❑ 插入行的一部分;
❑ 插入多行;
❑ 插入某些查詢的結果。
2.出入完整的行
把數據插入表中的最簡單的方法是使用基本的INSERT語法,它要求指定表名和被插入到新行中的值。
insert into customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email)
values('Pep E. LaPew',
'100 Main Street',
'Los Angeles',
'CA',
'90046',
'USA',
NULL,
NULL);
當知道表中列名的排序時,可以簡單的寫成一下代碼
insert into customers
values('Pep E. LaPew',
'100 Main Street',
'Los Angeles',
'CA',
'90046',
'USA',
NULL,
NULL);
總是使用列的列表 一般不要使用沒有明確給出列的列表的INSERT語句。使用列的列表能使SQL代碼繼續發揮作用,即使表結構發生了變化。
仔細地給出值 不管使用哪種INSERT語法,都必須給出VALUES的正確數目。如果不提供列名,則必須給每個表列提供一個值。如果提供列名,則必須對每個列出的列給出一個值。如果不這樣,將產生一條錯誤消息,相應的行插入不成功。
省略列 如果表的定義允許,則可以在INSERT操作中省略某些列。省略的列必須滿足以下某個條件。
❑ 該列定義爲允許NULL值(無值或空值)。
❑ 在表定義中給出默認值。這表示如果不給出值,將使用默認值。如果對錶中不允許NULL值且沒有默認值的列不給出值,則MySQL將產生一條錯誤消息,並且相應的行插入不成功。
3.插入多個行
方法一:可以使用多條INSERT語句,甚至一次提交它們,每條語句用一個分號結束
方法二:只要每條INSERT語句中的列名(和次序)相同,可以如下組合各語句:
insert into customers(cust_name,
suet_address,
cust_city,
cust_state,
cust_zip,
cust_country)
values('Pep E. LaPew',
'100 Main Street',
'Los Angeles',
'CA',
'90046',
'USA'),
('M.Martrain',
'42 Galaxy Way',
'New York',
'NY',
'11213',
'USA');
4.插入檢索出的數據
insert into customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email)
select cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email
from custnew;
INSERT SELECT中的列名 爲簡單起見,這個例子在INSERT和SELECT語句中使用了相同的列名。但是,不一定要求列名匹配。事實上,MySQL甚至不關心SELECT返回的列名。它使用的是列的位置,因此SELECT中的第一列(不管其列名)將用來填充表列中指定的第一個列,第二列將用來填充表列中指定的第二個列,如此等等。這對於從使用不同列名的表中導入數據是非常有用的。