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并不关心列名,只关心值的类型。


分享到:


相關文章: