南大通用 GBase8s 常用 SQL 语句(三十七)
兼容 ANSI 的数据库
当在 CREATE DATABASE 语句中使用 LOG MODE ANSI 选项时,您创建的数据库就是兼
容 ANSI 的数据库,且符合 SQL 语言的 ANSI/ISO 标准。
以下示例创建兼容 ANSI 的数据库:
CREATE DATABASE employees WITH LOG MODE ANSI;
兼容 ANSI 的数据库与不兼容 ANSI 的数据库存在几个方面的不同。包括以下特征的不同:
所有 SQL 语句自动包含在事务中。
所有数据库使用未缓冲的日志记录。
实施所有者命名。
除非您是所有者,否则查看任何表、视图、同义词、索引或约束时必须使用所有
者名称。除非您将所有者名称包含在引号中,否则所有者名称中的字母缺省采用
大写字符。(要防止在未分隔所有者名称中小写字母升档,您可以将
ANSIOWNER 环境变量设置为 1。)
此外,UDR 的例行签名包含所有者的名称;在不兼容 ANSI 的数据库中,它只对
sysdbopen( ) 和 sysdbclose( ) 程序为真。
对于会话,缺省隔离级别为 REPEATABLE READ 。
对象上的缺省权限与那些不兼容 ANSI 的数据库不同。当您创建表或同义词时,
缺省情况下其它用户不接收对其存取权限(如果是 PUBLIC 组的成员)。
所有的 DECIMAL 数据类型时定点值。如果您声明列为 DECIMAL(p),则缺省
大小是零,表明只能存储整型值。(在不兼容 ANSI 的数据库中,DECIMAL(p)
是浮点数据类型,它的规模大到足以存储一个值的指数符号。)
兼容与不兼容 ANSI 的数据库之间存在其它小差别。这些差别在此手册中与其它相关 SQL
语句一起记录。关于兼容 ANSI 的数据库和不兼容 ANSI 的数据库之间的差别的详细讨论,
请参阅 GBase 8s
数据库设计和实现指南
。
创建兼容 ANSI 的数据库不意味着当您运行数据库时,自动收到 SQL 语法 ANSI/ISO 标准
的 GBase 8s 警告。还必须使用 -ansi 标记或 DBANSIWARN 环境变量来接收这类警告。
有关 -ansi 和 DBANSIWARN 的其它信息,请参阅 GBase 8s SQL
参考指南
。
指定 NLSCASE 区分大小写
您可以显式地创建区分大小写或不区分大小写的数据库。
缺省情况下,在数据库中的区域设置将代码集的分离子集分类为
大写字母
和
小写字母
,
GBase 8s 数据库创建为区分大小写。数据库语言环境通过设置 DB_LOCALE 环境变量
而定义。语言环境的示例,若其代码集在缺省 US English 语言环境中识别字母大小写,