返回首页

gbase数据、南大通用产品文档:GBase8s单个行

更新日期:2024年09月11日

在它的最简单形式中,INSERT 语句从一列值的列表创建一个新行,并将其放置在表中。
下列语句展示如何将一行添加到 stock 表:
INSERT INTO stock
VALUES (115, 'PRC', 'tire pump', 108, 'box', '6/box');
stock 表有下列列:
stock_num
标识商品的种类的编号。
manu_code
manufact 表的外键。
description
该商品的描述。
unit_price
该商品的单价。
unit
计量的单位
unit_descr
说明计量单位的特征。
前一示例中 VALUES 子句中罗列的值与 stock 表的列有一一对应关系。要编写 VALUES
子句,您必须知道表的列以及它们的前后次序。

可能的列值
VALUES 子句仅接受常量值,不接受通用的 SQL 表达式。您可提供下列值:

文字数值

文字 DATETIME 值

文字 INTERVAL 值

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 162 -


带引号的字符串

表示 NULL 的关键字 NULL

表示当前日期的关键字 TODAY

表示当前日期和时间的关键字 CURRENT(或 SYSDATE)

表示您的授权标识符的关键字 USER

表示正在运行数据库服务器的计算机名称的关键字 DBSERVERNAME(或
SITENAME)
注: MERGE 语句可以替代 INSERT 语句,可使用与 INSERT 语句一样的 VALUES 子句语法来
将行插入到表内。MERGE 语句执行源表与目标表的外部链接,然后将连接的结果集中的任何行
插入到目标表内,这些行的连接谓词求值为 FALSE。MERGE 语句不更改源表。除了插入行之外,
MERGE 语句可可选地同时组合 DELETE 与 INSERT 操作,或同时组合 UPDATE 与 INSERT
操作。要获取关于 Insert 合并、Delete 合并和 Update 合并的语法与限制的更多信息,请参
阅《GBase 8s SQL 指南:语法》 中 MERGE 语句的描述。

对列值的限制
表的某些列可能不允许空值。如果您尝试向这样的列插入 NULL,则会拒绝该语句。表中
的其他列可能不允许重复的值。如果您指定与这样的列中已经存在的值重复的值,则会拒
绝该语句。有些列甚至可能限制允许的列值。请使用数据完整性约束来限制列。要获取更
多信息,请参阅 数据完整性。
限制: 请不要为包含货币值的列指定币种符号。请仅指定该金额的数值值。
数据库服务器可在数值与字符数据类型之间进行转换。您可将数值字符的字符串(例如,
'-0075.6')作为数值列的值。数据库服务器将数值字符串转换为数值。仅当该字符串不表示
数值时才会发生错误。
您可指定数值或日期作为字符列的值。数据库服务器将那个值转换为字符串。例如,如果
您指定 TODAY 作为字符列的值,则使用表示当前日期的字符串。(DBDATE 环境变量
指定所使用的格式。)

序列数据类型
表仅可有一个 SERIAL 数据类型的列。它还可有 SERIAL8 列或 BIGSERIAL 列。
当您插入值时,请为序列列指定值零。数据库服务器按次序生成下一个实际值。序列列不
允许 NULL 值。
您可为序列列指定非零值(只要它不与那一列中任何现有的值重复),数据库服务器使用
该值。那个非零值可能为数据库服务器生成的值设置新的起始点。(数据库服务器为您生
成的下一个值是比该列中最大值大一的值。)

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 163 -


罗列特定的列名称
您不必为每列都指定值。相反,您可在表名称之后罗列列名称,然后仅为您命名了的那些
列提供值。下列示例展示将新行插入到 stock 表内的语句:
INSERT INTO stock (stock_num, description, unit_price, manu_code)
VALUES (115, 'tyre pump ', 114, 'SHM');
仅提供库存编号、描述、单价和制造商代码的数据。数据库服务器为其余列提供下列值:

它为未列出的序列列生成一个序列数值。

它为与它相关联的有特定缺省值的列生成一个缺省值。

它为任何允许空值的任何列生成 NULL 值,
但它不为指定 NULL 作为缺省值的任
何列指定缺省值。
您必须为未指定缺省值或不允许 NULL 值的所有列罗列并提供值。
您可以任何顺序罗列列,只要这些列的值也以相同的顺序罗列。要获取关于如何为列指定
空值或缺省值的信息,请参阅《GBase 8s 数据库设计和实现指南》。
在执行前一示例中的 INSERT 语句之后,将下列新行插入到 stock 表内:
stock_num manu_code description unit_price unit unit_descr

115 SHM tyre pump 114
unit 和 unit_descr 都为空,表示在那两列中存在 NULL 值。由于 unit 列允许 NULL 值,
因此不知道 114 美元可购买的轮胎充气泵(tire pump)的数目。当然,如果为这一列指定
了 box 缺省值,则计量单位将为 box。在任何情况下,当您将值插入到表的特定的列内时,
请注意那一行需要什么数据。


GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
38


GBase 8c 工具参考手册
南大通用数据技术股份有限公司
XIII