首页 > 其他分享 >MogDB-opengauss中的连接操作-1

MogDB-opengauss中的连接操作-1

时间:2024-03-15 15:26:48浏览次数:23  
标签:t2 MogDB t1 c2 opengauss c1 连接

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

相关文章

  • MogDB-openGauss事务处理语句
    MogDB/openGauss事务处理语句事务是由一组SQL语句序列构成的原子操作集合,它具有原子性、一致性、隔离性和持久性的特点。用户在开始执行一个SQL语句时,实际上就已经开始了一个隐式的事务,而SQL语句执行结束,隐式的事务也会根据SQL语句的执行成功与否分別进行提交(Commit)......
  • MogDB-openGauss视图与物化视图
    MogDB/openGauss视图与物化视图一个数据库通常分成外模式、模式和内模式三种模式:外模式:也叫用户模式,是用户所能访问的一组数据视图,和某一应用的逻辑结构有关,是从模式中导出的一个子集,针对某一具体应用控制访问的可见性。模式:数据库内所包含的逻辑结构,包括基本表的定义等。内......
  • MogDB-openGauss中的集合操作
    MogDB/opengauss中的集合操作UNION:并操作,将UNION关键字两段的结果集做并集操作。EXCEPT:差操作,从左侧的结果集中排除掉右侧的结果集。INTERSECT:交集,对两个结果集做取交集操作。对表t1、t2做UNION操作,具体语句如下:MogDB=#SELECT*FROMt1UNIONSELECT*FROMt2;c1......
  • MogDB-opengauss存储过程的修改
    MogDB/openGauss存储过程的修改SQL中没有提供显式的存储过程修改命令,通常需要通过REPLACE关键字来指定使用当前的存储过程替代之前的同名存储过程。将前文定义的存储过程替换为按照地区分组的数量统计,具体语句如下:MogDB=#CREATEORREPLACEPROCEDUREwarehouse_count()L......
  • MogDB-openGauss访问控制简介
    MogDB/openGauss访问控制简介SQL可以针对不同的数据库对象赋予不同的权限,这样就可以限制用户对数据的不必要访问,提高数据访问的安全性。常见的SQL权限如下:SELECT/UPDATE/DELETE/INSERT:访问、修改基本表或视图的权限REFERENCES:在基本表上创建外键约束的权限TRIGGER:在基本......
  • MogDB-openGauss触发器简介(1)
    MogDB/opengauss触发器简介(1)触发器是对应用动作的响应机制,当应用对一个对象发起DML操作时,就会产生一个触发事件(Event)。如果该对象上拥有该事件对应的触发器,那么就会检查触发器的触发条件(Condition)是否满足,如果满足触发条件,那么就会执行触发动作(Action)。事件:触发器的触发事......
  • MogDB-openGauss存储过程的声明
    MogDB/openGauss存储过程的声明存储过程是一组SQL语句和逻辑控制的集合。数据库系统需要支持创建、删除和修改存储过程的语法。存储过程相比普通的SQL命令,具有如下优点:创建的存储过程保存在数据库系统中,在使用时被调出并且在数据库系统本地进行编译执行,一次编译,多次执行,......
  • MogDB openGauss如何实现事务的rollback
    MogDB/openGauss如何实现事务的rollback本文出处:https://www.modb.pro/db/113262数据库最主要的功能就是存储数据,然而我们在进行数据库操作时,却很容易发生误操作数据的情况,那么在MogDB中该如何实现误操作数据恢复呢?本文通过具体示例简要介绍如何通过回滚还原到误操作前的状......
  • MogDB openGauss数据完整性约束简介
    MogDB/openGauss数据完整性约束简介本文出处:https://www.modb.pro/db/124910创建基本表的同时,还可以指定表中数据完整性约束,例如在创建warehouse基本表时,通过分析可以得到如下结论:不同仓库必须有不同的w_id,且w_id不能为NULL。仓库必须有具体的名称,不能为NULL。仓库......
  • MogDB-openGauss触发器简介(2)
    MogDB/opengauss触发器简介(2)针对触发对象的触发事件一旦发生,就会激活触发器,触发器首先会检查触发条件,只有在满足触发条件的情况下,才会被真正地执行。其中元组级的触发器可以将更新前后的值嵌入到触发器的触发条件中。NEW.column_name:UPDATE或INSERT事件对应“新”元组,colu......