哇,前面一直在大篇幅了解SELECT,毫无疑问它是SQL圈的大佬了。但是还有其它三种常见的SQL语句要学习,今天就聊一聊 INSERT插入语句。
插入有几种方式:
- 插入完整的行;
- 插入行的一部分;
- 插入多行;
- 插入某些查询的结果。
15.1 插入完整的行
INSERT INTO customers(cust_id, cust_name, cust_address, cust_state, cust_zip, cust_country, cust_contact, cust_email) VALUES ('10006', 'Toy', '123 Any Street', 'New York', 'NY', '111', 'USA' NULL, NULL);
其实,列名可以省略,但尽量不要这样做,因为可能会导致次序错误。并且这里的列名顺序可以更改,只要保证列名和它的值一一对应就好了。
15.2 插入多个行
- 可以对个INSERT语句之间用引号(;)隔开;
- 可以只有一个INSERT,但是有多个VALUES语句,VALUES语句之间用逗号(,)隔开。
15.3 插入检索出的数据
INSERT 可以将一条SELECT语句的结果插入表中。 即INSERT SELECT 。
举一个例子来看一下:
INSERT INTO customers(cust_id,
cust_name,
cust_address,
cust_state,
cust_zip,
cust_country)
SELECT cust_id,
cust_name,
cust_address,
cust_state,
cust_zip,
cust_country
FROM custnew;
这个例子使用INSERT SELECT从custnew中将所有数据导入 customers。
注意:这个例子把一个名为custnew的表中的数据导入customers表中。为了试验这个例子,应该首先创建和填充custnew表。并且两个表的结构一样。在填充custnew时,不应该使用已经在customers
中使用过的cust_id值(防止主键值重复)或仅省略这列值让MySQL在导入数据的过程中产生新值。
事实上, MySQL甚至不关心SELECT返回的列名。它使用的是列的位置,因此SELECT中的第一列(不管其列名)将用来填充表列中指定的第一个列,第二列将用来填充表列中指定的第二个列,如此等等。