INSERT时用来插入(或添加)行到表的,插入的方式有一下几种:
- 插入完整的行
- 插入行的一部分
- 插入多行
- 插入某些查询的结果
19.1 插入完整的行
一般而言INSERT语句需要搭配INTO和VALUES关键字来使用:
INSERT INTO customers
VALUES(NULL,
'Pep E. LaPew',
'100 Main Street',
'Los Angeles',
'CA',
'90046',
'USA',
NULL,
NULL);
- INTO用于指定表名
- VALUES用于插入新值,但是需要注意的是,新值的顺序与每个字段的顺序一一对应;因此这种方式并不安全,应尽量避免使用,因为会不能确保插入字段顺序而产生错误
在INTO后面指定列名可以避免出错:
INSERT INTO customers(cust_name,
cust_address,
cust_city,
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值
- 定义列有给出默认值
19.2 插入多个行
类似于UNION联合查询语句一样,可以分别使用单个INSERT语句,并用逗号隔开;当然也可以省略掉重复指定列这一步,直接通过逗号来分隔插入的新值即可:
INSERT INTO customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
VALUES(
'Pep E. LaPew',
'100 Main Street',
'Los Angeles',
'CA',
'90046',
'USA'),
(
'M. Martian',
'42 Galaxy Way',
'New York',
'NY',
'11213',
'USA');
19.3 插入检索出的数据
除了直接INSERT来插入键入的值外,还可以使用SELECT检索结果后插入表中:
INSERT INTO table1(col1,
col2,
col3,
col4,
....
)
SELECT co1,
col2,
col3,
col4,
...
FROM table2;