返回首页

gbase数据、南大通用产品文档:GBase8s总结

更新日期:2024年09月11日

通过数据库所有者授予您的权限来控制数据库访问。通常自动地授予您查询数据的权限,
但通过特定的 Insert、
Delete 和 Update 权限来控制修改数据的能力,
以逐个表的方式授予
这些权限。
如果对数据库施加数据完整性约束,则您的修改数据的能力受到那些约束的限制。您的数
据库级别权限和表级别权限以及任何数据约束控制您可如何以及何时修改数据。此外,数
据库的对象模式和违反检测特性也影响您可修改数据的方式,并有助于保持您的数据的完
整性。
您可使用 DELETE 语句从表删除一行或多行。它的 WHERE 子句选择这些行;使用带有
相同子句的 SELECT 语句来预览这些删除。
TRUNCATE 语句删除表的所有行。
使用 INSERT 语句将行添加到表。
您可插入包含特定的列值的单个行,
或可插入 SELECT
语句生成的一批行。
使用 UPDATE 语句来修改现有的行的内容。您使用可包括子查询的表达式来指定新的内
容,以便您可使用基于其他表或更新了的表自身的数据。该语句有两种形式。在第一种形
式中,您逐列地指定新值。在第二种形式中,SELECT 语句或记录变量生成一组新值。
使用 CREATE TABLE 和 ALTER TABLE 语句的 REFERENCES 子句来创建表之间的
关系。REFERENCES 子句的 ON DELETE CASCADE 选项允许您使用一个 DELETE 语
句来从父表和相关联的子表删除行。
使用事务来防止在修改过程中不可预测的中断,防止数据库处于不确定的状态。当在一事
务内执行修改时,会在发生错误之后回滚它们。事务日志还扩展数据库的定期制作的备份
副本。如果必须恢复数据库,则它可将数据库返回到最近的状态。

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

对用户为透明的数据复制提供另一种针对灾难性故障的保护。

8 在外部数据库中访问和修改数据
本部分总结访问不在当前数据库中的表和例程。

VARCHAR 数据类型存储包含单字节和(如果语言环境支持)多字节字符的可变长度字
符串,其中 m 是列的最大大小(以字节计),r 是为该列保留的最小字节数。
声明为 VARCHAR 的列(无圆括号或参数)具有一个字节的最大大小并且保留的大小置
零。
VARCHAR 数据类型是字符可变数据类型的 GBase
8s 实现。
可变长度字符串的 ANSI 标
准数据类型是 CHARACTER VARYING。
VARCHAR 列的最大大小 (m) 参数的大小范围可以从 1 到 32765 个字节。
指定最小保留空间 (r) 参数是可选的。此值可以在从 0 到 32765 个字节的范围内,
但必须小于 VARCHAR 列的最大大小 (m)。如果您未指定任何最小值,缺省值是 0。当起初
打算在列中插入具有短字符串或 NULL 字符串的行,
但后来想要用较长的值更新此数据时,
应指定此参数。
当为 VARCHAR 列设置索引时,其最大长度不能超过 Maxlen 值:
Maxlen =((PAGESIZE-93)/5-1)
其中 PAGESIZE 是数据库服务器的页面大小。
可以使用 onstat
–d 命令查看 dbspace

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 112 -

的 PAGESIZE 值。
同一表上不超过 151 列可以是 VARCHAR 数据类型。
ROWTYPE 类型中包含 VARCHAR 列时其最大长度不能超过 32764 个字节。
将表中的字段修改为 VARCHAR 列或 Alter Type Varchar 列时,此 varchar 列长度
需要小于页面的可用空间。具体最大长度如下表所示:
数据库页面大小
可修改的最大长度
2K
1958
4K
4006
8K
8102
16K
16294

在基于 VARCHAR 列(或 NVARCHAR 列)的索引中,每个索引键都具有基于实际输入的
数据值的长度,而不是声明的列的最大大小。
当您在 VARCHAR 列中存储字符串时,只会存储实际数据字符。数据库服务器不会除去
任何用户输入的结尾空格的 VARCHAR 字符串,
也不会将 VARCHAR 值填充至列的声明长度。
如果指定保留空间 (r),但某些数据字符串比 r 字节要短,那么为行保留的某些空间变得
无用。
用比较 CHAR 值的相同方式将 VARCHAR 值与其他 VARCHAR 值(和其他字符串数据类
型)进行比较。用空格在右边填充较短的值直到这些值具有相同的长度;然后对其比较全
长。
VARCHAR 类型的不可打印字符
用处理 CHAR 值中的不可打印字符的相同方法输入、
显示和处理不可打印 VARCHAR 字
符。有关详细信息,请参阅 CHAR 类型的不可打印字符。
存储 VARCHAR 列中的数字值
当在 VARCHAR 列中插入数字值时,不会用结尾空格将存储的值填充至列的最大长度。
数字 VARCHAR 值中的位数是存储该值所需要的字符数。例如:在下一个示例中,存储在表
mytab 中的值为 1。
create table mytab (col1 varchar(10));
insert into mytab values (1);
技巧: VARCHAR 将 C 语言的null(二进制 0)和字符串终止符看作不可打印字符的
终止字符。
在某些东亚语言环境中,如果数据库语言环境支持多字节代码集,那么 VARCHAR 数据
类型能够存储多字节字符。如果存储多字节字符,务必要计算所需的字节数。有关更多信
息,请参阅《GBase 8s GLS 用户指南》。

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 113 -

VARCHAR 类型的多字节字符
VARCHAR 数据类型声明中的第一个参数可受字符类型声明中的逻辑字符语义一节中描
述的 SQL_LOGICAL_CHAR 功能影响。
整理 VARCHAR 值
NVARCHAR 与 VARCHAR 数据类型之间的主要差别(就如 CHAR 与 NCHAR 之间的差别)
是整理顺序的差别。通常,VARCHAR(与 CHAR 和 LVARCHAR 一样)值是按其在代码集中存
在的字符顺序进行整理的。
例外情况是 MATCHES 运算符,当 DB_LOCALE(或 SET
COLLATION)指定了本地化整理
顺序时,
如果使用方括号 (
[
]
) 符号来定义范围,
那么它会将本地化整理应用于 NVARCHAR
和 VARCHAR 值
(并应用于 CHAR、
LVARCHAR 和 NCHAR 值)

有关更多信息,
请参阅
《GBase
8s GLS 用户指南》。


GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 718 -

跟踪访问时间的 sbspace(SQL 管理 API)
随同 admin() 或 task() 函数,使用 create sbspace with accesstime 参数来创建
sbspace,对存储在该 sbspace 中的所有智能大对象跟踪访问的时间。
语法

元素
描述
关键考虑
initial_chunk_size
新 sbspace 的初始 chunk 的大小,以
KB 为单位。
请参阅 admin() 和
task() 参数大小规范。
offset
磁盘分区内或设备内达到新 sbspace 的
初始 chunk 的偏移量,以 KB 为单位。

path_name
该 sbspace 的初始 chunk 的磁盘分区
或无缓冲的设备。

sbspace
要创建的 sbspace 名。


用法
使用 create with_check sbspace 参数来检查指定的路径名,如果路径不存在,则返回错
误。
这个函数等同于 onspaces -c -S 命令创建 sbspace,且随同 admin() 或 task() 函数,
使用 set sbspace accesstime 参数来启动对存储在该 sbspace 中的所有智能大对象跟踪
访问的时间。
示例
下列示例创建跟踪访问时间的新 sbspace。这个 sbspace 的大小为 20 MB,偏移量为 0:

EXECUTE FUNCTION task ("create sbspace with accesstime","sbspace4",
"$GBS_DATA/WORK/sbspace4","20 M","0");