MySQL必知必會 —— 第十九章 插入數據

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中的第一列(不管其列名)將用來填充表列中指定的第一個列,第二列將用來填充表列中指定的第二個列,如此等等。這對於從使用不同列名的表中導入數據是非常有用的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章