返回首页

gbase数据、南大通用产品文档:GBase8a检查操作系统版本

更新日期:2024年09月11日


RHEL6.X
# lsb_release -a
LSB
Version:
:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-n
oarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description:
Red Hat Enterprise Linux Server release 6.2 (Santiago)
Release:

在编译时刻不知道的 SQL 语句通常是用户在交互式应用程序中输入的语句。

当您编写像 DB-Access 一样的交互式数据库查询应用程序时,您提前不知道用户想
要访问哪些数据库、表或列,或不知道用户可能在 WHERE 子句中应用什么条件。如果
GBase 8s ESQL/C 应用程序翻译并运行用户输入的 SQL 语句,则直到在运行时刻用户输
入该语句之后,此应用程序才知道在主变量中要存储什么类型的信息。

例如,如果程序包含下列 DELETE 语句,则基于受影响的列,您知道接收的值的数
目及数据类型:
DELETE FROM customer WHERE city = ? AND lname > ?

您可定义其数据类型与它们接收的数据类型相兼容的主变量。然而,假设您的程序为
用户提供提示,诸如:
对于 stores7 数据库,请输入 DELETE 语句:

在此情况下,
直到运行时刻,
您才知道 DELETE 在其上发生的表名称,
或在 WHERE

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 464 -
子句中罗列的列名称。因此,您不可声明必要的主变量。

您可动态地确定准备好的 SQL 语句以及关于它以 DESCRIBE 语句和动态管理结果
访问的表和列的信息。

GBase 8s 在您创建数据库时自动生成系统目录表。可以如同查询数据库中的任何其他

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 7 -
表那样查询系统目录表。新创建的数据库的系统目录表位于称为数据库空间的公共磁盘区
域中。
每个数据库都有它自己的系统目录表。
系统目录中的所有表和视图都有前缀 sys
(例
如:系统目录表 systables)。
并非所有具有前缀 sys 的表都是系统目录表。
例如:
数据库 syscdr 支持 Enterprise
Replication 功能部件。但是,非目录表具有大于等于 100 的 tabid。系统目录表都具有
小于 100 的 tabid。有关数据库服务器指定给表、视图、同义词和(GBase 8s 中)序列
对象的 tabid 号码的更多信息,请参阅本节后面部分和 SYSTABLES。

提示: 不要混淆数据库的系统目录表与 sysmaster、sysutils、syscdr 或(用于 GBase
8s)sysadmin 和 sysuser 数据库中的表。这些数据库中的表的名称也具有 sys 前缀,但
这些表包含有关整个数据库服务器的信息,数据库服务器可管理多个数据库。sysadmin、
sysmaster、sysutils、syscdr 和 sysuser 表中的信息主要对数据库服务器管理员 (DBSA) 有
帮助。另请参阅《GBase 8s 管理员指南》和《GBase 8s 管理员参考》。
数据库服务器经常访问系统目录。每次处理 SQL 语句时,数据库服务器都会访问系统
目录来确定系统特权、添加或验证表或列名等等。
例如:以下 CREATE SCHEMA 块将 customer 表及其索引和特权添加至 stores_demo 数
据库中。此块还添加了一个视图 california,它将 customer 表的数据限制为仅住在
California 的所有客户的客户姓名、公司名称和电话号码。
CREATE SCHEMA AUTHORIZATION maryl
CREATE TABLE customer (customer_num SERIAL(101), fname CHAR(15),
lname CHAR(15), company CHAR(20), address1 CHAR(20), address2
CHAR(20),
city CHAR(15), state CHAR(2), zipcode CHAR(5), phone CHAR(18))
GRANT ALTER, ALL ON customer TO cathl WITH GRANT OPTION AS maryl
GRANT SELECT ON customer TO public
GRANT UPDATE (fname, lname, phone) ON customer TO nhowe
CREATE VIEW california AS
SELECT fname, lname, company, phone FROM customer WHERE state =
'CA'
CREATE UNIQUE INDEX c_num_ix ON customer (customer_num)
CREATE INDEX state_ix ON customer (state)
要处理此 CREATE SCHEMA 块,数据库服务器首先访问系统目录来验证以下信息:
新表和视图名在数据库中尚未存在。(如果数据库符合 ANSI 标准,那么数据库服务
器将验证指定所有者的新名称是否尚不存在。)
用户具有创建表和授予用户特权的许可权。

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 8 -
CREATE VIEW 和 CREATE INDEX 语句中的列名在 customer 表中存在。
除了验证此信息和创建两个新表之外,
数据库服务器还将新行添加至下列系统目录表:

systables
syscolumns
syscolumnsext
sysviews
systabauth
syscolauth
sysindexes
sysindices