MogDB/opengauss 中的连接操作-1
如果 FROM 关键字后由超过 2 个及以上(含 2 个)的表参与连接操作,则该查询可以成为连接查询,也可以叫作多表查询。
连接查询是 SQL 种最基本的操作,它的本质是多个表之间做笛卡尔积,借由这个思想又衍生出自然连接、θ 连接等。
以下以 t1、t2、t3 几个基本表作为示例。
t1:
C1 | C2 |
---|---|
1 | 2 |
1 | NULL |
2 | 2 |
t2:
C1 | C2 |
---|---|
1 | 2 |
1 | 1 |
NULL | 2 |
t3:
C1 | C2 |
---|---|
1 | 1 |
1 | 2 |
具体语句如下:
MogDB=#create table t1 (c1 int, c2 int);
CREATE TABLE
MogDB=#create table t2 (c1 int, c2 int);
CREATE TABLE
MogDB=#create table t3 (c1 int, c2 int);
CREATE TABLE
MogDB=#insert into t1 values (1,2);
INSERT 0 1
MogDB=#insert into t1 values (1);
INSERT 0 1
MogDB=#insert into t1 values (2,2);
INSERT 0 1
MogDB=#select * from t1;
c1 | c2
----+----
1 | 2
1 |
2 | 2
(3 rows)
MogDB=#insert into t2 values (1,2);
INSERT 0 1
MogDB=#insert into t2 values (1,1);
INSERT 0 1
MogDB=#insert into t2 values (null,2);
INSERT 0 1
MogDB=#select * from t2;
c1 | c2
----+----
1 | 2
1 | 1
| 2
(3 rows)
MogDB=#insert into t3 values (1,1);
INSERT 0 1
MogDB=#insert into t3 values (1,2);
INSERT 0 1
MogDB=#select * from t3;
c1 | c2
----+----
1 | 1
1 | 2
(2 rows)
通常的多表连接可以通过如下形式来实现,具体语句如下:
SELECT projection FROM t1, t2, t3 WHERE selection;
对这三个表做连接操作,通过“,”间隔,位于 FROM 关键字的后面,表示需要将这 3 个表做连接操作。具体语句如下:
MogDB=# SELECT * FROM t1, t2, t3 WHERE t1.c1 = 1;
c1 | c2 | c1 | c2 | c1 | c2
----+----+----+----+----+----
1 | 2 | 1 | 2 | 1 | 1
1 | 2 | 1 | 2 | 1 | 2
1 | | 1 | 2 | 1 | 1
1 | | 1 | 2 | 1 | 2
1 | 2 | 1 | 1 | 1 | 1
1 | 2 | 1 | 1 | 1 | 2
1 | | 1 | 1 | 1 | 1
1 | | 1 | 1 | 1 | 2
1 | 2 | | 2 | 1 | 1
1 | 2 | | 2 | 1 | 2
1 | | | 2 | 1 | 1
1 | | | 2 | 1 | 2
(12 rows)
如果 2 个基本表确定做笛卡尔积操作,则可以在 SQL 中显式地指定做笛卡尔积的关键字。具体语句如下:
MogDB=# SELECT * FROM t1 CROSS JOIN t2;
c1 | c2 | c1 | c2
----+----+----+----
1 | 2 | 1 | 2
1 | 2 | 1 | 1
1 | 2 | | 2
1 | | 1 | 2
1 | | 1 | 1
1 | | | 2
2 | 2 | 1 | 2
2 | 2 | 1 | 1
2 | 2 | | 2
(9 rows)
连接操作还能指定连接条件,如果连接条件中是等值条件,那么这种连接可以称为等值连接。对表 t1、t2 做等值内连接,具体语句如下:
MogDB=# SELECT * FROM t1 INNER JOIN t2 ON t1.c1 = t2.c1;
c1 | c2 | c1 | c2
----+----+----+----
1 | 2 | 1 | 1
1 | 2 | 1 | 2
1 | | 1 | 1
1 | | 1 | 2
(4 rows)
标签:t2,MogDB,t1,c2,opengauss,c1,连接
From: https://www.cnblogs.com/renxyz/p/18075455