之前所有的内容我们描述的都是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并不关心列名,只关心值的类型。