返回首页

gbase数据、南大通用产品文档:GBase8s如何输入 SQL 语句

更新日期:2024年09月11日

SQL 语言是自由格式的(如同 C 或 PASCAL),通常忽略空格字符(例如
TAB 、LINEFEED 和各语句或语句元素之间额外的空格)。然而,必须至少有
一个空白字符或其它定界符将关键字和标识与其它语法标记分开。
除了在带引号字符串中以外,SQL 是不区分大小写的;另见 标识符。在符合
ANSI 的数据库中,如果没有用双引号 ( " ) 定界对象的 owner ,而且当初始化
数据库服务器时没有将 ANSIOWNER 环境变量设置为 1 ,则数据库服务器会
以大写字母存储 owner 名称。
在本手册中提供了语句描述以帮助您成功输入 SQL 语句。语句描述包括以下信
息:

用来说明语句作用的简短介绍

用来显示如何正确输入语句的语法图

用来说明语法图中的每个输入参数的语法表

用法规则,通常带有说明这些规则的示例

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 9
对于某些语句,只为单独的子句提供了这些信息。
大多数语句描述的最后都带有本手册和其它手册中的相关信息的引用。
SQL 语句 提供了每个 SQL 语句的描述,是以字母顺序排列的。SPL 语句 使用
相同格式描述了每个 SPL 语句。
输入 SQL 语句的主要帮助包括:

语法图和语法表的组合

出现在用法规则中的语法示例

对相关信息的引用
使用语法图和语法表
在您尝试使用本章中的语法图之前,先阅读介绍中的语法图一节会有所帮助。本
节是理解语法图的关键,并说明了可出现在语法图中的元素和这些元素互连的路
径。本节还包括说明典型语法图元素的示例。示例图后面的叙述显示了如何阅读
该图以便成功输入语句。
语法图可以参考其他的语法部分或可以指定不同的限制。如果您正在使用应用程
序接口(例如:ESQL/C),那么只有客户端应用和数据库服务器都支持的 SQL
语法规则是有效的。
当语法图包括输入规范(如标识、表达式、文件名、主机变量或其它项)时,语
法图后跟着一个表,该表描述如何输入该项而不生成错误。每个语法表包含四
列:

Element 列列出了语法图中的每个变量项。

Description 列简述了该项并标识缺省值(如果该项有缺省值的话)。

Restrictions 列总结了该项的限制,例如值的可接受范围。(对于某些语
法图,无法概括总结的限制显示在 Usage 注解中而不是在此列中。)

Syntax 列指向给出该项的详细语法的 SQL 段。对于某些项(如主变量名
称、路径名或文字字符),未提供页码索引。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 10
这些图表通常提供给定的 SQL 语句中有效内容的直观注解,但对于某些语句,
语法元素之间的相关性或限制仅在用法部分中的文本中作出标识。
使用示例
要理解某个语句的主要语法图和子图,请研究在每个语句的用法规则中显示的语
法示例。这些示例有两个作用:

显示如何使用语句或子句完成特定任务

显示如何以具体的方法使用语句或其子句的语法
提示: 理解语法图的一个有效方法是,查找语法示例并将其与语法图中的关键字
和参数作比较。通过将示例的具体元素映射到语法图的抽象元素,可以有效地理
解和使用语法图。
对于在本手册示例中使用的约定的说明,请参阅介绍中的语法图的章节。
这些代码示例是用以说明有效语法的程序分段,而不是完整的 SQL 程序。在一
些示例代码中,省略号( . . . )表示剩下的代码已省略。但为了节省空间,在程
序分段的开头和结尾不显示省略号。
使用相关信息
为了帮助理解 SQL 语句描述中的概念和项,请查看每个语句结尾处的“相关信
息”部分。
本部分指向本手册和其它手册中的相关信息,以帮助您理解讨论中的语句。本部
分提供以下某些或全部信息。

相关语句的名称,这些相关语句可能包含词语中主题的更完整讨论

提供此语句中主题的展开讨论的其它手册的标题
提示: 如果您对 SQL 没有广泛的知识和经验,GBase 8s SQL 教程指南会给予您
所需的基本 SQL 知识,供您理解并使用本手册中的语句描述。

onconfig 文件中的某些配置参数用于指定与连通性相关的信息。
重新启动数据库服务器时,重新启动过程使用在这些配置参数中设置的值。
以下配置参数与连通性相关:

DBSERVERNAME

DBSERVERALIASES

LIMITNUMSESSIONS

NETTYPE

NS_CACHE

NUMFDSERVER

HA_ALIAS
DBSERVERNAME 配置参数中设置的连接信息
客户机应用程序连接到数据库服务器时,必须指定该数据库服务器的名称。与指定的数据
库服务器名称关联的 sqlhosts 信息描述了应用程序和数据库服务器之间的连接类型。
例如,要为数据库服务器指定名称 nyc_research,请在 onconfig文件设置 DBSERVERNAME
值:
DBSERVERNAME nyc_research

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 58 -
客户机应用程序将在下列某个地方指定数据库服务器的名称:

GBASEDBTSERVER 环境变量中

在用于指定数据库环境的 SQL 语句(例如,CONNECT、DATABASE、
CREATE TABLE 和 ALTER TABLE)中

在 DBPATH 环境变量中
DBSERVERNAME 必须指定数据库服务器名称或某个数据库服务器别名。
该名称必须以小写字
母开头并且可以包含其他小写字母、数字和下划线。该名称不得包含大写字符、字段定界
符(空格或制表符)或换行符。基本 ASCII 代码集的其他字符未必可靠。例如,连接符或
减号可能产生问题并且冒号可能不能可靠地使用。@ 字符是保留字符,用以从服务器分隔
数据库(例如,dbase@server)。
对于 onimcsoc 或 onsoctcp 协议,
可更新 DBSERVERNAME 配置参数,
以便在 sqlhosts 信
息中包含数据库服务器别名的多个侦听线程的数量,如下所示:
DBSERVERNAME name-number_of_multiple_listen_threads
您可以将 DBSERVERALIASES 连接配置为 SSL 连接,而且也可以组合使用 SSL 和非 SSL
连接。
DBSERVERALIASES 配置参数中设置的连接信息
通过 DBSERVERALIASES 配置参数,
您可以为同一数据库服务器指定额外的数据库服务器名
称。
最大的别名数为 32。以下示例显示 onconfig 配置文件中的条目,这些条目将三个数据库
服务器名称指定给同一个数据库服务器实例。
DBSERVERNAME sockets_srvr
DBSERVERALIASES ipx_srvr,shm_srvr
因为每个数据库服务器名称具有对应的 sqlhosts 条目,您可以将多个连接类型与一个数
据库服务器相关联。
shm_srvr onipcshm my_host my_shm
sockets_srvr onsoctcp my_host port1
ipx_srvr ontlispx nw_file_server ipx_srvr
通过使用上一个示例中所示的 sqlhosts 文件,客户机应用程序可以使用以下语句连接到
使用共享内存通信的数据库服务器:
CONNECT TO '@shm_srvr'
客户机应用程序可使用以下语句初始化与同一数据库服务器的 TCP/IP 套接字连接:
CONNECT TO '@sockets_srvr'

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 59 -
DBSERVERALIASES 必须以小写字母开头并且可以包含其他小写字母、数字和下划线。
DBSERVERALIASES 不得包含大写字符、
字段定界符
(空格或制表符)
或换行符。
基本 ASCII
代码集的其他字符未必可靠。例如,连接符或减号可能产生问题并且冒号可能不能可靠地
使用。@ 字符是保留字符,用以从服务器分隔数据库(例如,dbase@server)。
在前面的示例中,@shm_srvr 语句连接到该服务器上未识别的数据库;或者,也可以连接
到 dbase1@shm_srvr。
对于 onimcsoc 或 onsoctcp 协议,
可更新 DBSERVERALIASES 配置参数,
以便在 sqlhosts
信息中包含数据库服务器别名的多个侦听线程的数量,如下所示:
DBSERVERALIASESname-number,name-number
您可以将 DBSERVERALIASES 连接配置为 SSL 连接,而且也可以组合使用 SSL 和非 SSL
连接。
LIMITNUMSESSIONS 配置参数中设置的连接信息
LIMITNUMSESSIONS 配置参数是一个可选参数,用于指定希望连接到 GBase
8s 的最大会话
数。 如果指定了最大数,那么也可以指定在会话数接近最大数时是否要让 GBase 8s 向
online.log 文件打印消息。
针对服务器进行的分布式查询计数可能达到限制。
可能需要动态增加或临时关闭 LIMITNUMSESSIONS 配置参数,以便在数据库服务器即将达
到限制时,允许管理实用程序运行。可么使用 onmode -wf 或 onmode -wm 来动态增加或
关闭 LIMITNUMSESSIONS。
如果启用了 LIMITNUMSESSIONS 配置参数,但是由于此限制导致会话受限,那么连接到任
何数据库的普通用户线程计数和 DBSA 用户线程计数都可能达到该限制。但是,即使达到
了该限制之后,也允许 DBSA 用户连接到服务器。
LIMITNUMSESSIONS 配置参数不应用作遵守许可协议的方法。
示例
以下示例指定您希望连接到数据库服务器的最大会话数是 100,并且在连接的会话数接近
100 时显示警告消息:
LIMITNUMSESSIONS 100,1

NETTYPE 配置参数中设置的连接信息
NETTYPE 配置参数使您调整数据库服务器用于通信的虚拟处理器的数量和类型。
每种类型
的网络连接(例如,ipcshm 或 soctcp)可以在配置文件中具有单独的 NETTYPE 条目。
建议: 尽管 NETTYPE 参数不是必需参数,但是如果使用两个或更多连接类型,那么必须
设置 NETTYPE。当数据库服务器持续运行了一段时间后,您可以使用 NETTYPE 配置参数来
调整数据库服务器以获得更好的性能。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 60 -
有关 NETTYPE 的更多信息,请参阅网络虚拟处理器。有关 NETTYPE 配置参数的信息,请
参阅《GBase 8s 管理员参考》。

NS_CACHE 配置参数中设置的名称服务最大保留时间
NS_CACHE 配置参数定义以下对象中单个条目的最大保留时间:主机名/IP 地址高速缓存、
服务高速缓存、用户高速缓存和组高速缓存。如果指定最大保留时间,数据库服务器可从
高速缓存获取主机、服务、用户和组数据库服务器的信息。
在为特定高速缓存配置的时间之后或者重新配置该时间时,每个高速缓存条目都将到期。
网络名服务提供者(如 DNS)通常位于远程计算机上。要避免花费时间从网络名服务提供
者返回信息,可使用 NS_CACHE 配置参数来指定最大保留时间,用于从某一个内部高速缓
存中获取信息。GBase
8s 将在高速缓存中查找信息。如果该处没有此类信息,数据库服务
器将查询操作系统以获取这些信息。
使用 GBase 8s 名称服务高速缓存机制可避免许多在操作系统中进行的查找,从而在可配
置的时间内保留并复用检索到的每个信息段。
服务器从高速缓存获取信息的速度比查询操作系统更快。但是,如果将保留时间设置为 0
来禁用一个或多个这类高速缓存,那么数据库服务器将查询操作系统以获取主机、服务、
用户或组信息。
作为 DBA,您可能希望在以下情况下修改 NS_CACHE 配置参数的设置:网络名服务提供程
序在远程计算机上运行,或 MSC VP 在运行时的处理器使用量很大。
例如,可运行 onstat -g glo 命令,以在输出的 Individual virtual processors 部分
中检查 msc
VP 的使用情况。在以下输出样本中,usercpu 和 syscpu 列中显示的 msc 处
理器使用量非常高。如果怀疑使用量高是因为 DNS 调用花费了过多时间,那么可使用操作
系统命令来确定高使用量,然后修改 NS_CACHE 配置参数的设置。
Individual virtual processors:
vp pid class usercpu syscpu total Thread Eff
1 2036 cpu 76.95 7.14 84.09 99.08 84%
2 2149 adm 0.00 0.00 0.00 0.00 0%
3 2151 LIC 0.00 0.00 0.00 0.00 0%
4 2260 lio 0.00 0.00 0.00 0.03 0%
5 2442 pio 0.00 0.00 0.00 0.00 0%
6 2443 aio 0.00 0.01 0.01 0.11 8%
7 2444 msc 14.18 14.64 28.82 199.91 14%
8 2446 fifo 0.00 0.00 0.00 0.00 0%

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 61 -
您还可能希望在以下情况下指定 NS_CACHE 信息:
操作系统没有名称服务 (NS) 高速缓存,
或禁用了操作系统 NS 高速缓存。
示例
要将主机和服务连接的最大保留时间定义为 600 秒,
并对用户和组数据库服务器连接禁用
最大保留限制,请指定:
NS_CACHE host=600,service=600,user=0,group=0

NUMFDSERVERS 配置参数中设置的连接信息
对于 UNIX™ 上的网络连接,可以使用 NUMFDSERVERS 配置参数指定处理在 GBase
8s 虚拟
处理器 (VP) 之间迁移的网络连接所需的最大轮询线程数。
如果 GBase
8s 的新连接和断开连接请求的比率极高,或者发现了网络共享文件 (NSF) 锁
定之间存在大量争用,那么指定 NUMFDSERVERS 信息非常有用。

HA_ALIAS 配置参数中设置的连接信息
HA_ALIAS 配置参数是一个可选参数,用于定义辅助服务器的网络别名。在 onmode -d 命
令中指定了辅助服务器时,将使用 HA_ALIAS 配置参数指定的网络别名。
设置数据库服务器的 HA_ALIAS 配置参数后,与其他高可用性集群节点的所有服务器间通
信均通过指定的网络别名来进行。
如果高可用性集群中的主服务器发生故障,连接管理器将确定要提升为主服务器的辅助服
务器。如果设置了辅助服务器的 HA_ALIAS 配置参数,那么 HA_ALIAS 网络别名用于识别
新的主服务器。HA_ALIAS 配置参数只影响 RS 辅助服务器和 SD 辅助服务器类型。
HA_ALIAS 配置参数的值必须是 DBSERVERNAME 或 DBSERVERALIASES 配置参数中指定的其
中一个名称值。 网络别名的连接类型必须是 TCP 网络协议。

子查询(内部 SELECT 语句,其中一个 SELECT 语句嵌套在另一个 SELECT 语句中)
可以返回多行或多个表达式,也可以不返回任何结果。每个子查询必须用括号分隔,并且
都必须包含一个 Projection 子句和一个 FROM 子句,子查询本身可以包含其它子查询。
数据库服务器支持下列上下文中的子查询:

嵌套在另一个 SELECT 语句的 Projection 子句中的 SELECT 语句

嵌套在另一个 SELECT 语句中的 WHERE 子句中的 SELECT 语句

嵌套在另一个 SELECT 语句的 FROM 子句中的 SELECT 语句
还可以在 INSERT 、DELETE 、MERGE 或 UPDATE 语句(子查询有效)的各种子句中
指定子查询。
Projection 子句或 WHERE 子句中的子查询可以是相关的或是不相关的。当子查询产生的
值取决于包含它的外部 SELECT 语句产生的值时,该子查询是相关的。有关更多信息,请
参阅相关子查询。
任何其它类型的子查询都被认为是不相关的。在 SELECT 语句的 FROM 子句中,只有不
相关的子查询才是有效的。