INSERT 语句

使用 INSERT 语句在数据库表中创建记录。您可以指定:

  • 要作为新记录插入的值的列表

  • 从要作为一组新记录插入的其他表复制数据的 SELECT 语句

INSERT 语句的格式为:

复制
INSERT INTO table_name [(column_name, ...)] VALUES (expr, ...)

column_name 是提供列(其值在 VALUES 子句中指定)的名称和顺序的列名称的可选列表。如果省略 column_name,值表达式 (expr) 必须提供在表中定义的所有列的值,并且顺序必须与针对表定义列的顺序相同。column_name 也可指定字段描述,例如 lastDates[4]

expr 是为新记录的列提供值的表达式的列表。通常,表达式为列的常量值(但也可以是子查询)。必须用一对单引号 (') 将字符串值括起。要在用单引号括起的字符串值中加入单引号,请同时使用两个单引号(例如,'Don''t')。

子查询必须用括号括起。

示例

插入一个表达式列表。

复制
INSERT INTO emp (last_name, first_name, emp_id, salary, hire_date)
   VALUES ('Smith', 'John', 'E22345', 27500, DATE '2028-06-05')

每个 INSERT 语句将一个记录添加到数据库表。在本例中,一个记录已经被添加到员工数据库表 emp。为五个列指定值。为表中剩余的列分配空白值,表示 Null。

重要事项  

在容器字段中,只能 INSERT 文本,除非您准备参数化语句,并从应用程序中流式传输数据。要使用二进制数据,可以通过用单引号将文件名括起来分配文件名,也可以使用 PutAs() 函数。指定文件名时,从文件扩展名中推导出文件类型:

复制
INSERT INTO table_name (container_name) VALUES(?AS 'filename.file extension')

不受支持的文件类型将插入为 FILE 类型。

在使用 PutAs() 函数时,指定类型:PutAs(col, 'type'),其中类型值是检索容器字段的内容:CAST() 函数和 GetAs() 函数中所述的受支持的文件类型。

SELECT 语句是为在列名称列表中指定的每个 column_name 值返回值的查询。使用 SELECT 语句(而不是值表达式的列表)允许从一个表中选择一组行,并使用单个 INSERT 语句将其插入其他表。

示例

使用 SELECT 语句插入。

复制
INSERT INTO emp1 (first_name, last_name, emp_id, dept, salary)
   SELECT first_name, last_name, emp_id, dept, salary from emp
   WHERE dept = 'D050'

在此类型的 INSERT 语句中,要插入的列的数目必须与 SELECT 语句中列的数目匹配。要插入的列的列表必须与 SELECT 语句中各个列对应,就像与其他类型的 INSERT 语句中值表达式的列表相对应一样。例如,插入的第一个列对应所选的第一个列,插入的第二个列对应所选的第二个列,依次类推。

这些对应列的大小和数据必须兼容。SELECT 列表中的每列都应具有在对 INSERT 列表中的相应列定期进行 INSERT/UPDATE 时 ODBC 或 JDBC 客户端驱动程序接受的数据类型。SELECT 列表列中的值的大小大于对应的 INSERT 列表列的大小时,会截断值。

在插入值之前会先执行 SELECT 语句。