返回首页

gbase数据、南大通用产品文档:GBase8s在不使用菜单的情况下以交互方式运行 DBAccess

更新日期:2024年09月11日

如果不希望使用菜单,并且没有预编译的 SQL 文件,请使用键盘或标准输入设备从命令行
输入 SQL 语句。
在不使用菜单自变量并且将连字符作为最后一个自变量的情况下启动 DB-Access 时,
DB-Access 会处理来自标准输入设备(在 UNIX™ 上)的命令。DB-Access 会读取您指示输
入完成之前所输入的内容。然后,DB-Access 会处理您的输入,并将结果写入标准输出设
备(在 UNIX 上)。
DB-Access 以交互方式读取和运行来自终端键盘的 SQL 语句。当 DB-Access 交互式运行
时,大于 (>) 提示符标记可输入下一个 SQL 语句的行。
当输入分号 (;) 以结束单个 SQL 语句时,DB-Access 将处理该语句。当按 CTRL-D 以结
束交互式会话时,
DB-Access 停止运行。
下列示例显示了交互式会话中的用户输入和结果:
dbaccess - -
>database stores_demo;

Database selected.

>select count(*) from systables;

GBase 8s DB-Access 用户指南
南大通用数据技术股份有限公司 - 18 -


(count(*))

21

1 row(s) retrieved.

>^D

dbaccess - -
>database stores_demo;

Database selected.

>select count(*) from systables;

(count(*))

21

1 row(s) retrieved.

>^D
批处理命令输入 (UNIX)
可以使用直接插入 shell 脚本来提供一个或多个 SQL 语句。例如,可以使用具有直接插
入标准输入文件的 UNIX C、Bourne 或 Korn shell:
dbaccess mystores- <select avg(customer_num) from customer
where fname matches '[A-G]*';

GBase 8s DB-Access 用户指南
南大通用数据技术股份有限公司 - 19 -

EOT!
可以使用管道来提供 SQL 语句,如此 UNIX 示例所示:
echo 'select count(*) from systables' | dbaccess mystores
DB-Access 将任何以感叹号
(!)
开始的行解释为 shell 命令。
可以将 shell 转义行与 SQL
语句混合,并将其放入 SQL 语句中,如下所示:
dbaccess mystores -
>select
!echo hello
>hello
count(*) from systables;
>
(count(*))

21

1 row(s) retrieved.
>
以交互方式连接到数据库环境
可以在以交互方式发出的 SQL 语句中使用 CONNECT . . . USER 语法。但是,当连接至缺
省数据库服务器时,DB-Access 不支持 CONNECT 语句的 USER 子句。
当您在交互方式下将 USER ‘user identifier' 子句包括在 CONNECT 语句中时,
DB-Access 会提示您输入密码。
下列两个命令示例显示了如何在交互方式下连接至数据库服务器。第一个示例使用未指定
用户标识的 CONNECT 语句。
dbaccess -nohistory- -

> connect to '@starfish';

Connected.

GBase 8s DB-Access 用户指南
南大通用数据技术股份有限公司 - 20 -

如果在 CONNECT 语句中包括 USER 子句(如第二个示例所示),DB-Access 使用回送禁止
来提示您输入密码:
> connect to '@starfish' user 'marae';

ENTER PASSWORD:

Connected.
限制: 为了安全起见,不要在密码可以被看到的屏幕上输入密码。另外,当交互式使用
DB-Access 时,
不要在 CONNECT 语句中包括 USING
password 子句。
如果处于交互方式下,
并在提示之前尝试输入密码,那么将会显示错误消息。
您可以在包括 USER 子句的 DB-Access 文件中运行 CONNECT 语句的 USER 子句。下列示
例使用包含 CONNECT 语句(具有 USING 子句)的命令文件连接至数据库服务器:
dbaccess - connfile.sql
重要: 包含以下语句的 SQL 命令文件受到保护,除 USER 子句所标识的 user_id 之外的
其他任何人均无法访问。
CONNECT TO '@dbserver' USER 'user_id' USING password
对于 UNIX™,
以下示例使用 shell 文件连接至数据库服务器。
DB-Access 提示您输入密码。

dbaccess - - <<\!
connect to '@starfish' user 'marae';
!

ENTER PASSWORD:
此处,分隔引号保留了数据库服务器名称中和用户授权标识中的字母大小写。

GBase 8s DB-Access 用户指南
南大通用数据技术股份有限公司 - 21 -

3 全屏菜单界面
DB-Access 全屏菜单界面将指导您逐步运行 SQL 语句。
DB-Access 用户界面结合了下列功能部件:
l
菜单的层次结构
l
屏幕,提示您作出简要响应以及从选择列表中作出选择
l
上下文“帮助”屏幕
l
交互式模式编辑器,可帮助您构造表
l
SQL 程序员环境,包括以下功能部件:
n
内置 SQL 编辑器,可在其中输入和修改 SQL 和 SPL 语句
n
一个选项,可用于选择使用所选的另一编辑器
n
数据库服务器语法检查程序和运行时调试器
n
存储、检索和执行 SQL 与 SPL 例程
l
选择数据库查询和报告的输出

COUNT(DISTINCT expr,[expr...])
函数说明
返回不同的非NULL 的值的总数目。
示例
示例1:返回lo_orderkey 列中不同的非NULL 的值的总数目。
gbase> SELECT COUNT(DISTINCT lo_orderkey) FROM ssbm.lineorder;
+-----------------------------+
| COUNT(DISTINCT lo_orderkey) |
+-----------------------------+
|
1500000 |
+-----------------------------+
1 row in set
说明
GBase 8a MPP Cluster 中,用户通过给定一个表达式列表而获取不包
含NULL 不同表达式组合的数目。

功能
这个参数用于设置评估两表join 结果的方式。
参数取值含义说明

参数= 0:按照两表行数相乘进行评估;

参数= 1:按照两表中的大表的行数进行评估。
该参数的默认值是1。
表6- 22 参数值范围说明表
默认值
最小值
最大值
1
0
1