返回首页

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

更新日期:2024年09月11日

函数原型:

sword
GCIDirPathFinish(







GCIDirPathCtx *dpctx,







GCIError *errhp









功能描述:

用于与Oracle 程序保持兼容。

功能说明
JOIN 是在两个或多个表中查询数据。
GBase 8a MPP Cluster 支持的JOIN 功能大概分为如下几类:

INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
在缺乏连接条件时,INNER JOIN 和,(逗号)在语义上是等价的:都是在
指定的两个表之间生成一个笛卡尔乘积(也就是,第一个表中的每一行都与
第二个表中的所有行连接起来)。

LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
如果在LEFT JOIN 的ON 或USING 部分的右表中没有匹配的记录,那么该
右表一行中的所有列都设置为NULL。可以用这种方法找出一个表和另一个
表之间不匹配的记录。

RIGHT JOIN(右连接):与LEFT JOIN 相反,用于获取右表所有记录,
即使左表没有对应匹配的记录。

FULL JOIN/FULL OUTER JOIN(全连接):可以看成是LEFT JOIN(左连
接)和RIGHT JOIN(右连接)结果的合集。但是FULL JOIN 跟LEFT
JOIN...UNION RIGHT JOIN...并不完全等价,因为UNION 会去除重复记录。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1076
说明

当进行简单等值关联(简单等值关联需要同时满足等值JOIN 和等
值JOIN 条件两边都是物理列不是表达式两个条件。)时,且JOIN
涉及分布式Hash JOIN,则需要受如下限制约束:

JOIN 两边的数据类型必须相同;

进行CHAR JOIN CHAR 时,精度必须相同;

JOIN 两边数据类型不同时,
仅支持CHAR 与VARCHAR,
INT

(包括INT,
BIGINT,
SMALLINT,
TINYINT)
与VARCHAR
之间做关联查询。
语法格式
GBase 8a MPP GCluster SQL 支持下面的JOIN 语法:
table_references:
table_reference [, table_reference] …
table_reference:
table_factor
| join_table
table_factor:
[vc_name.][database_name.]table_name [[AS] alias]
| ( table_references )
join_table:
table_reference [INNER | CROSS] JOIN table_factor [join_condition]
| table_reference LEFT [OUTER] JOIN table_reference join_condition
| table_reference RIGHT [OUTER] JOIN table_reference join_condition
| table_reference FULL [OUTER] JOIN table_reference join_condition
join_condition:
ON conditional_expr
| USING (column_list)
表5- 98 参数说明
参数名称


USING(column_list)
用于为一系列的列进行命名。这些列必须同时在两个表中存
在。如果表a 和表b 都包含列c1、c2 和c3,则以下联合会包
含来自两个表的对应的列:
1)a LEFT JOIN b USING (c1,c2,c3)

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1077
参数名称


2)a LEFT JOIN b ON a.c1 = b.c1 AND a.c2 = b.c2 AND a.c3 =
b.c3
Vc_name
vc 命,可选项。
database_name
数据库名,可选项。
table_name
表名
示例
示例1:join 语法示例。
示例中所用的表及数据:
CREATE TABLE t1(id INT,name VARCHAR(30));
CREATE TABLE t2(id INT,title VARCHAR(20),name VARCHAR(30));
INSERT INTO t1 VALUES(1,'name1'),(2,'name2'),(3,'name3');
INSERT INTO t2 VALUES(1,'t1','name1'),(3,'t3','name3'),(4,'t4','name4');
gbase> SELECT * FROM t1;
+------+-------+
| id
| name
|
+------+-------+
|
1 | name1 |
|
2 | name2 |
|
3 | name3 |
+------+-------+
3 rows in set (Elapsed: 00:00:00.07)
gbase> SELECT * FROM t2;
+------+-------+-------+
| id
| title | name
|
+------+-------+-------+
|
1 | t1
| name1 |
|
3 | t3
| name3 |
|
4 | t4
| name4 |
+------+-------+-------+
3 rows in set (Elapsed: 00:00:00.03)
INNER JOIN:
gbase> SELECT a.id,a.name,b.name,b.title FROM t1 a INNER JOIN t2 b ON

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1078
a.id=b.id;
+------+-------+-------+-------+
| id
| name
| name
| title |
+------+-------+-------+-------+
|
1 | name1 | name1 | t1
|
|
3 | name3 | name3 | t3
|
+------+-------+-------+-------+
2 rows in set (Elapsed: 00:00:00.15)
WHERE 子句方式,等价于上面的INNER JON:
gbase> SELECT a.id,a.name,b.name,b.title FROM t1 a,t2 b
WHERE
a.id=b.id;
+------+-------+-------+-------+
| id
| name
| name
| title |
+------+-------+-------+-------+
|
1 | name1 | name1 | t1
|
|
3 | name3 | name3 | t3
|
+------+-------+-------+-------+
2 rows in set (Elapsed: 00:00:00.12)
LEFT JOIN:
gbase> SELECT a.id,a.name,b.name,b.title FROM t1 a LEFT JOIN t2 b ON
a.id=b.id;
+------+-------+-------+-------+
| id
| name
| name
| title |
+------+-------+-------+-------+
|
2 | name2 | NULL
| NULL
|
|
1 | name1 | name1 | t1
|
|
3 | name3 | name3 | t3
|
+------+-------+-------+-------+
3 rows in set (Elapsed: 00:00:00.13)
RHGHT JOIN:
gbase> SELECT a.id,a.name,b.name,b.title FROM t1 a RIGHT JOIN t2 b ON
a.id=b.id;
+------+-------+-------+-------+
| id
| name
| name
| title |
+------+-------+-------+-------+
| NULL | NULL
| name4 | t4
|
|
1 | name1 | name1 | t1
|
|
3 | name3 | name3 | t3
|
+------+-------+-------+-------+
3 rows in set (Elapsed: 00:00:00.16)

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1079
FULL JOIN:
gbase> SELECT a.id,a.name,b.name,b.title FROM t1 a FULL JOIN t2 b ON
a.id=b.id;
+------+-------+-------+-------+
| id
| name
| name
| title |
+------+-------+-------+-------+
|
2 | name2 | NULL
| NULL
|
| NULL | NULL
| name4 | t4
|
|
1 | name1 | name1 | t1
|
|
3 | name3 | name3 | t3
|
+------+-------+-------+-------+
4 rows in set (Elapsed: 00:00:00.17)
示例2:char JOIN char(相同精度)示例。
示例中所用的表及数据:
CREATE TABLE t3(a CHAR(5), b CHAR(10));
CREATE TABLE t4(a CHAR(10));
INSERT INTO t3 VALUES('abcde', 'abcde');
INSERT INTO t4 VALUES('abcde');
gbase> SELECT * FROM t3;
+-------+------------+
| a
| b
|
+-------+------------+
| abcde | abcde
|
+-------+------------+
1 row in set (Elapsed: 00:00:00.03)
gbase> SELECT * FROM t4;
+------------+
| a
|
+------------+
| abcde
|
+------------+
1 row in set (Elapsed: 00:00:00.02)
t3.b 与t4.a 类型均为char(10),因此可以建立等值JOIN 关系:
gbase>
SELECT * FROM t3 JOIN t4 ON t3.b = t4.a;
+-------+------------+------------+
| a
| b
| a
|
+-------+------------+------------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1080
| abcde | abcde
| abcde
|
+-------+------------+------------+
1 row in set (Elapsed: 00:00:00.06)
t3.a 类型为char(5),t4.a 类型为char(10),不同精度的char 类型间
禁止建立等值JOIN 关系:
gbase> SELECT * FROM t3 JOIN t4 ON t3.a = t4.a;
ERROR 1149 (42000): (GBA-02SC-1001) Data types of equivalence join relation
((`vc1.demo.t3`.`a` = `vc1.demo.t4`.`a`)) are not supported , data types: left is
CHAR(5), right is CHAR(10)
示例3:char JOIN varchar 示例。
示例中所用的表及数据:
CREATE TABLE t1(a CHAR(5), b CHAR(10));
CREATE TABLE t2(a varchar(10));
INSERT INTO t1 VALUES('abcde', 'abcde');
INSERT INTO t2 VALUES('abcde');
T1.a 类型时char(5),
‘abcde’
不需要补充空格,
与varchar 的'abcde'
相等:
gbase> SELECT * FROM t1 JOIN t2 ON t1.a = t2.a;
+-------+------------+-------+
| a
| b
| a
|
+-------+------------+-------+
| abcde | abcde
| abcde |
+-------+------------+-------+
1 row in set
t1.b 类型是char(10),补齐空格后为'abcde
',与varchar 的'abcde'
不等,以下面结果集为空:
gbase> SELECT * FROM t1 JOIN t2 ON t1.b = t2.a;
Empty set
示例4:int JOIN varchar 示例。
示例中所用的表及数据:
CREATE TABLE t5(a INT);
CREATE TABLE t6(a VARCHAR(10));
INSERT INTO t5 VALUES(179);
INSERT INTO t6 VALUES('179');

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1081
int 和varchar 间可以建立等值JOIN 关系:
gbase> SELECT * FROM t5 JOIN t6 ON t5.a = t6.a;
+------+------+
| a
| a
|
+------+------+
|
179 | 179
|
+------+------+
1 row in set

在浏览器中输入统一监控网站地址,
如:
http://[ip]:[port]/gcmonitor,
进入用户登录界面,如下图所示:

统一数据平台监控与运维系统用户手册
- 28 -
南大通用数据技术股份有限公司
图3.1-1 登录
输入用户名、密码后(默认admin:admin@2011),单击回车或者点击“登
录”按钮,系统将进行用户校验,如果用户名和密码校验正确,则进入统一监
控主界面;否则提示错误信息:登录失败,请检查用户名和密码。
admin 用户是超级用户,默认绑定“平台管理员”与“集群监管员”角色,
拥有对统一监控的最高管理权限。该用户不可禁用或删除,也不能修改权限,
初次登录后请进行密码修改。