15.1 数据插入
INSERT用来将行插入(或添加)到数据库表。插入有几种方式:
- 插入完整的行;
- 插入行的一部分;
- 插入某些查询的结果。
插入完整的行
# 插入完整的行
insert into customers
values(1000000006,
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA',
NULL,
NULL);
存储在values子句中给出,必须给每一列提供一个值,如果某列没有值,则用NULL值。各列必须以他们在表定义中出现的次序填充。所以高度依赖于表中列的定义次序,是很不安全的,因此采用下面的语句更安全:
insert into customers(cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email)
values(1000000007,
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA',
NULL,
NULL);
它在表名后的括号中明确给出了列名,values必须以其指定的次序匹配指定的列名,不一定按各列出现在表中的实际次序。
# 以不同的次序填充
insert into customers(cust_id,
cust_contact,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip
)
values(1000000006,
NULL,
NULL,
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111'
);
插入部分行
使用insert的推荐方法是明确给出表的列名。使用这种语法,还可以省略列,表示可以只给某些列提供值,给其他列不提供值(该列定义为允许NULL值或者在表定义中给出默认值)
# 插入部分行(省略列,表示只给某些列提供值,给其他列不提供值)
insert into customers(cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country
)
values(1000000006,
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA'
);
插入检索出的数据
# 插入检索出的数据
insert into customers(cust_id,
cust_contact,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country
)
select cust_id,
cust_contact,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country
from custNew;
从一个表复制到另一个表
这种数据插入不使用INSERT语句。而是使用create select语句,它可以将数据复制到一个新表。
# 从一个表复制到另一个表
create table custCopy as select * from customers;
若是使用SQL Server,还可以这么写:
# 从一个表复制到另一个表
select * into custCopy from customers;