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
语句。