您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

逐行插入指定值

要逐行向表中添加指定值,请使用 INSERT 语句的语法 1。SAP IQ 将您指定的第一个值插入您指定的第一列中,将指定的第二个值插入第二列中,依此类推。

如果省略列名的列表,则按照创建列的顺序(该顺序与 SELECT * 的检索顺序相同)将值插入到表列中。只要有可用空间,SAP IQ 便会将行插入到表中。

值可以是 NULL、任何正数或负数,或文字。

  • CHARVARCHARDATETIMETIMESTAMP 或 DATETIME 列的值用单引号或双引号引起来。要表示含引号的值,请将一组不同的引号用作外部引号,如“Smith' s”。

  • 对于 DATETIMETIMESTAMP 或 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);