INSERT 语句
使用 INSERT 语句在数据库表中创建记录。您可以指定:
-
一个或多个要作为新记录插入的值列表
-
从要作为一组新记录插入的其他表复制数据的
SELECT语句
INSERT 语句的格式是:
INSERT INTO table_name [(column_name, ...)] VALUES [(expr, ...), ...]
INSERT INTO table_name [(column_name, ...)] SELECT column_name, ... FROM table_name [WHERE expr]
使用 VALUES
column_name 是提供列(其值在 VALUES 子句中指定)的名称和顺序的列名称的可选列表。如果省略 column_name,表达式 (expr) 的列表必须提供在表中定义的所有列的值,并且顺序必须与针对表定义列的顺序相同。
表达式 (expr) 列表提供新记录列的值。要添加多个记录,请为每个记录指定括号中的表达式列表,用逗号分隔。通常,表达式列表由每列的常值组成(但列表也可以是子查询)。必须用一对单引号 (') 将字符串值括起。要在用单引号括起的字符串值中加入单引号,请同时使用两个单引号(例如,'Don''t')。
子查询必须用括号括起。
示例
插入两个表达式列表。
INSERT INTO emp (last_name, first_name, emp_id, salary, hire_date)
VALUES ('Smith', 'John', 'E22345', 27500, DATE '2028-06-05'),
('Marks', 'Alea', 'E24682', 28500, DATE '2029-09-30')
这个 INSERT 语句为每个指定的值列表向数据库表添加一条记录。在这种情况下,两项记录已添加到员工数据库表 emp 中。为五个列指定值。为表中剩余的列分配空白值,表示 Null。
使用 SELECT
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 语句。
注释
-
在容器字段中,只能
INSERT文本,除非您准备参数化语句,并从应用程序中流式传输数据。要使用二进制数据,可以通过用单引号将文件名括起来分配文件名,也可以使用PutAs()函数。指定文件名时,从文件扩展名中推导出文件类型:复制INSERT INTO table_name (container_name) VALUES (? AS 'filename.file extension')不受支持的文件类型将插入为 FILE 类型。
使用
PutAs()函数时,需指定类型:PutAs(col, 'type'),其中类型值需为 检索容器字段的内容:CAST() 函数和 GetAs() 函数中所述的支持的文件类型。 -
column_name也可以指定字段重复 - 例如lastDates[4]。