要逐行向表中添加指定值,请使用 INSERT 语句的语法 1。SAP IQ 将您指定的第一个值插入您指定的第一列中,将指定的第二个值插入第二列中,依此类推。
如果省略列名的列表,则按照创建列的顺序(该顺序与 SELECT * 的检索顺序相同)将值插入到表列中。只要有可用空间,SAP IQ 便会将行插入到表中。
值可以是 NULL、任何正数或负数,或文字。
CHAR、VARCHAR、DATE、TIME 和 TIMESTAMP 或 DATETIME 列的值用单引号或双引号引起来。要表示含引号的值,请将一组不同的引号用作外部引号,如“Smith' s”。
DATE、TIME 和 TIMESTAMP 或 DATETIME 列,必须使用特定的格式。 注意 TIMESTAMP 和 DATETIME 数据类型是相同的。
在只为行中的某些列指定值时,如果未指定值的列允许 NULL 值,则会为该列插入 NULL 值。
如果指定 NULL 值,则目标列必须允许 NULL 值,否则将拒绝 INSERT,并会在消息日志中生成一条错误消息。缺省情况下,SAP IQ 列允许 NULL 值,但可以通过在 CREATE TABLE 语句的列定义中指定 NOT NULL 或通过其它方式(例如,使用主键)来变更这种情况。
下面的示例在 lineitem 表中将 1995-06-09 添加到 l_shipdate 列,并将 123 添加到 l_orderkey 列。
INSERT INTO lineitem
(l_shipdate, l_orderkey)
VALUES('1995-06-09', 123)
如果要插入的数据行数量较多,则使用以下方法更加有效:直接从数据库插入所选行,或者使用 LOAD TABLE 语句从平面文件装载数据,而不是逐行插入值。考虑配合使用 select 语句和一些联合而不是为一些行插入值,因为这样做仅需要到服务器的单个行程。
可使用 INSERT VALUES 支持多行。
例如:
INSERT INTO lineitem(l_shipdate, l_orderkey)
VALUES ('1995-06-09', 123),
('2001-03-28', 300),
('2010-04-01', 413);