Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询和修改数据 » 添加、更改和删除数据 » 使用 INSERT 添加数据

 

使用 SELECT 添加新行

若要将值从一个或多个表中取出并添加到另一个表中,您可以在 INSERT 语句中使用 SELECT 子句。SELECT 子句可以将值插入一行中的某些列或所有列中。

仅为某些列插入值这种做法在从现有表中取值时会用得上。然后,可以使用 UPDATE 为其它列添加值。

在为表中的某些列(但不是全部列)插入值之前,对于不插入值的那些列,请确保其存在缺省值,或者为这些列指定 NULL 值。否则,将出现错误。

当将一个表的行插入到另一个表时,这两个表的结构必须兼容—也就是说,匹配的列必须是相同的数据类型或者 SQL Anywhere 可以自动转换的数据类型。

示例

如果两个表中列的顺序相同,则不需要在任何一个表中指定列名。例如,假设有一个名为 NewProducts 的表,其模式与 Products 表相同,并且其中包含一些您想要添加到 Products 表的产品信息行。可以执行以下语句:

INSERT Products
SELECT *
FROM NewProducts;
将数据插入某些列中

就像使用 VALUES 子句一样,您可以使用 SELECT 语句将数据添加到行中的某些列(但不是所有列)。只需在 INSERT 子句中指定要向其中添加数据的列即可。

插入同一表中的数据

您可以根据表中的其它数据将数据插入同一表中。这实质上意味着复制全部或部分行。

例如,您可以根据现有产品将新产品插入 Products 表中。以下语句将新的 "Extra Large" T 恤衫(短背心、V 型领和水手领等样式)添加到 Products 表中。标识号比现有大小的衬衫大 30:

INSERT INTO Products
SELECT ID + 30, Name, Description,
    'Extra large', Color, 50, UnitPrice, NULL
FROM Products
WHERE Name = 'Tee Shirt';