SQL INSERT–将一行或多行数据插入表中。
在本教程中,我们将学习如何使用SQL INSERT语句将数据插入表中。
下面说明插入单个行到现有表中的INSERT语句。
INSERT
INTO
table
(column1, column2,...)
VALUES
(value1, value2,...);
要将行插入表中,需要指定三项内容:首先,是表,要在insert INTO子句中插入新行的表。其次是指定表的列,用逗号分隔并用括号括起来。第三是values子句中的值列表,也使用括号包围且用逗号进行分隔。
数据列列表的元素数必须与值列表的元素数相同,否则数据库引擎将发出错误。
以下INSERT语句将将一个新行插入shippers表:
shippers(companyname, phone)
(
'Alliance Shippers'
,
'1-800-222-0451'
);
VALUES子句中指定了两个常量'Alliance Shippers'和'1-800-222-0451'。数据库引擎将会将它们分别插入companyname和phone列中。
执行语句后,数据库服务器将返回一条消息,显示受影响的行数。在这种情况下,我们会收到一条消息“1 row infected”(受影响的一行)通知您已成功插入新行。
注意,我们没有在列列表中指定shipperID列,因为shipperID列是一个自动递增列,每当向表中插入新行时,数据库引擎就会自动为它生成下一个序列。
为了编写更少的代码,SQL提供了INSERT语句的较短形式,如下所示:
(value1,value2,...)
在这种形式中,值列表的顺序必须与表中所有列的顺序相同。如果使用这种形式的INSERT语句,则必须为除了自动递增列之外的所有列提供值。
不过在INSERT语句中使用列名是一种很好的做法,可以使代码更易于维护。
下面的INSERT语句等同于上面的语句:
shippers
INSERT语句还允许您使用单个语句将多行插入到表中,如下所示:
table_name(column1,column2…)
(value1,value2,…),
…
在这种形式的INSERT语句中,您需要提供多个值列表,每个列表用逗号分隔。
以下INSERT语句将两行插入shippers表:
shippers(companyName,phone)
'UPS'
'1-800-782-7892'
),
'DHL'
'1-800-225-5345'
)
您可以使用SELECT语句从另一个表中选择值并将它们提供给INSERT语句,而不是指定值列表。这样我们就可以从一个表将数据复制到另一个表。
以下语句说明如何将数据从另一个表another_table复制到表table:
SELECT
column1, column2,...
FROM
another_table
WHERE
condition
SELECT子句中的列名列表必须与INSERT in to子句中的列名列表相对应。如果只想复制部分数据,则需要在WHERE子句中指定条件。
假设您有一个名为shippers_tmp的临时表,其结构与shippers表相同。要将数据从shippers表复制到shippers_tmp表,请使用以下语句:
shippers_tmp (shipperid,
name
,phone)
shipperid, companyName, phone
原文链接:https://codingdict.com/