返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

gbase_init
.................................. 22

SELECT 语句不同于 INSERT 、UPDATE 和 DELETE 语句,它不修改数据库中的数据。
一次只能有一个用户修改数据,而多个用户可同时查询或选择数据。有关修改数据的语句
的更多信息,请参阅修改数据。INSERT 、UPDATE 和 DELETE 语句的语法描述位于
《GBase 8s SQL 指南:语法》中。
在关系数据库中,列是包含出现在表中的每一行中的特定信息类型的数据元素。行是在数
据库表中的所有列上有关单个实体的信息的一组相关项。

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

可以从数据库表、系统目录表(包含有关数据库的信息的特殊表)、或视图(创建来包含
一组定制数据的虚拟表)中选择列和行。有关系统目录表的信息在 GBase 8s SQL 参考指
南中有所描述。在 GBase 8s 数据库设计和实现指南中讨论了视图。

特权
在查询数据之前,
确保您对数据库具有 Connect 特权和表的 Select 特权。
通常这些特权授
予所有用户。
在 GBase 8s 数据库设计和实现指南和 GBase 8s SQL 指南:
语法的 GRANT
和 REVOKE 语句中描述了数据库访问权。

关系操作
关系操作涉及处理一个或多个表或者关系以产生另一个表,三种关系操作为选择、投影和
连接。本章包括选择、投影和连接操作的一些示例。

选择和投影
在关系术语中,选择被定义为取得满足特定条件的单个表的行的水平子集。此类 SELECT
语句返回表中的某些行和所有列。选择是通过 SELECT 语句的 WHERE 子句实现的,如
下图所示:
图: 查询
SELECT * FROM customer WHERE state = 'NJ';
该结果包含的列数与 customer 表相同,
但只是后者的行的子集。
在此示例中,
DB-Access 显
示单独行上来自每列的数据。
图: 查询结果
customer_num 119
fname Bob
lname Shorter
company The Triathletes Club
address1 2405 Kings Highway
address2
city Cherry Hill
state NJ
zipcode 08002
phone 609-663-6079

customer_num 122

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

fname Cathy
lname O'Brian
company The Sporting Life
address1 543d Nassau
address2
city Princeton
state NJ
zipcode 08540
phone 609-342-0054
在关系术语中,
投影被定义为从保留唯一行的单个表的列中获取垂直子集。
此类SELECT 语
句返回表中的某些行和某些列。
投影是通过 SELECT 语句的 Projection 子句中的投影列表实现的。如下图所示。
图: 查询
SELECT city, state, zipcode FROM customer;
此结果包含的列数与 customer 表相同,但只是投影表中列的子集。因为只从每行中选择一
小部分的数据,所以 DB-Access 能够在一行上显示行的所有数据。
图: 查询结果
city state zipcode

Sunnyvale CA 94086
San Francisco CA 94117
Palo Alto CA 94303
Redwood City CA 94026
Los Altos CA 94022
Mountain View CA 94063
Palo Alto CA 94304
Redwood City CA 94063
Sunnyvale CA 94086
Redwood City CA 94062
Sunnyvale CA 94085

Oakland CA 94609
Cherry Hill NJ 08002
Phoenix AZ 85016
Wilmington DE 19898

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

Princeton NJ 08540
Jacksonville FL 32256
Bartlesville OK 74006
最常见的 SELECT 语句都同时使用选择和投影。
此类查询返回表的某些行和某些列。
如下
图所示。
图: 查询
SELECT UNIQUE city, state, zipcode
FROM customer
WHERE state = 'NJ';
图 6包含 customer 表的列的子集和行的子集。
图: 查询结果
city state zipcode

Cherry Hill NJ 08002
Princeton NJ 08540

连接
当两个或多个表被同一列或多个列连接时发生连接,它创建新的结果表。下图显示了一个
查询,该查询使用 items 和 stock 表的子集来说明连接的概念。
图: 两个表之间的连接



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


下列查询将 customer 和 state 表连接起来。
图: 查询
SELECT UNIQUE city, state, zipcode, sname
FROM customer, state
WHERE customer.state = state.code;
该结果包含 customer 和 state 表的指定行和列。
图: 查询结果
city state zipcode sname

Bartlesville OK 74006 Oklahoma
Blue Island NY 60406 New York
Brighton MA 02135 Massachusetts
Cherry Hill NJ 08002 New Jersey
Denver CO 80219 Colorado
Jacksonville FL 32256 Florida
Los Altos CA 94022 California
Menlo Park CA 94025 California
Mountain View CA 94040 California
Mountain View CA 94063 California
Oakland CA 94609 California
Palo Alto CA 94303 California
Palo Alto CA 94304 California
Phoenix AZ 85008 Arizona
Phoenix AZ 85016 Arizona
Princeton NJ 08540 New Jersey
Redwood City CA 94026 California
Redwood City CA 94062 California
Redwood City CA 94063 California
San Francisco CA 94117 California
Sunnyvale CA 94085 California
Sunnyvale CA 94086 California
Wilmington DE 19898 Delaware


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

ifx_getcur_conn_name() 函数返回当前连接的名称。
语法
char *ifx_getcur_conn_name(void);

用法
当前的连接是活动的数据库服务器连接,当前,其正在将 SQL 请求发送至数据库服
务器,并可能正在从数据库服务器接收数据。在 callback 函数中,当前的连接是当随同对
sqlbreakcallback() 函数的调用注册了 callback 的那个时刻的当前连接。当前连接的名称是
当前连接的显式的名称。如果建立连接的 CONNECT 语句未包括 AS 子句,则该连接没

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 712 -

有显式的名称。

返回代码
当前连接的名称
成功地取得当前连接名称
空指针
不能取得当前连接名称,或当前连接没有显式的名称