MySQL學習系列之十五——MySQL插入數據

之前所有的內容我們描述的都是select語句。但是,除了select語句外,還有其他的語句需要我們瞭解一下,這一篇會介紹如何使用insert語句。

大家可以先去以下鏈接複製創建表以及給表中插入數據的語句

insert語句是用來給數據庫中插入數據的,可以在以下幾種情況下使用insert語句:

(1)插入完整的行

(2)插入行的一部分

(3)插入多行

(4)插入某些查詢的結果

這一篇的內容將分別介紹這四種情況。

1.插入完整的行

插入完整的行是insert語句的基本用法,要求指定表名和被插入到新行中的值。

例如:給customers表中插入一行數據

insert into customers

values(NULL,

'Pep E. LaPew',

'100 Main Street',

'Los Angeles',

'CA',

'90046',

'USA',

NULL,

NULL);

在customers表中每一列在insert語句中都必須有一個對應的值,如果這一列沒有值,有NULL代替。各個列必須以它們在表中定義的次序出現。第一列cust_id也是NULL,這是因為每插入一個新行時,該列由MySQL自動填充。這種語法雖然簡單,但是不安全,應該儘量避免使用。

2.插入行的一部分

insert into customers(cust_name,

cust_address,

cust_state,

cust_zip,

cust_country,

cust_contact,

cust_email

)

values(NULL,

'Pep E. LaPew',

'100 Main Street',

'Los Angeles',

'CA',

'90046',

'USA',

NULL,

NULL);

上面這個語句也是在customers表中插入一行數據,但是,在表名後面的括號中明確給出了列名。

總是使用指定的列名有以下優點:

(1)在表結構發生變化後,依然可以發揮作用。

(2)可以提升整體性能,因為索引的時候可以精確到列,而不是查出所有列,再進行篩選。

3.插入多行

如果每條insert語句中的列名和次序相同,可以使用如下組合各語句

insert into customers(cust_name,

cust_address,

cust_state,

cust_zip,

cust_country,

cust_contact,

cust_email

)

values(NULL,

'Pep E. LaPew',

'100 Main Street',

'Los Angeles',

'CA',

'90046',

'USA',

NULL,

NULL),

(

NULL,

'M. Martian',

'42 Galaxy Way',

'New York',

'NY',

'11213',

'USA'

NULL,

NULL

);

每組值用圓括號括起來,用逗號分隔。

4.插入某些查詢的結果

insert into customers(cust_name,

cust_address,

cust_state,

cust_zip,

cust_country,

cust_contact,

cust_email

)

select cust_name,

cust_address,

cust_state,

cust_zip,

cust_country,

cust_contact,

cust_email

from custnew;

上述語句把custnew中的數據全都插入到custmers表中,在例子中,兩張表中的列名完全相同,其實,沒有必要,因為MySQL並不關心列名,只關心值的類型。


分享到:


相關文章: