首页 > 数据库 >GaussDB数据库SQL系列-表连接(JOIN)

GaussDB数据库SQL系列-表连接(JOIN)

时间:2024-11-25 16:44:55浏览次数:7  
标签:JOIN -- sno GaussDB t2 t1 SQL id

一、前言
SQL是用于数据分析和数据处理的最重要的编程语言之一,表连接(JOIN)是数据库中SQL的一种常见操作,在实际应用中,我们需要根据业务需求从两个或多个相关的表中获取信息。

二、GaussDB JOIN
GaussDB是华为推出的企业级分布式关系型数据库。GaussDB JOIN 子句是基于两个或者多个表之间的共同字段把它们进行结合。在GaussDB数据库中,常用的JOIN有如下几种连接及用法:INNER JOIN、LEFT JOIN、RIGHT JOIN、 FULL JOIN、CROSS JOIN。

1、LEFT JOIN
LEFT JOIN 一般称左连接,也写作 LEFT [OUTER] JOIN。左连接查询会返回左表中所有记录,且在右表中找到的关联数据列也会被一起返回。

在这里插入图片描述

--SQL示例
SELECT  t1.column1
       ,…
       ,t2.column1 
	   ,…
FROM table1 t1 
LEFT JOIN table2 t2 
ON t1.id=t2.id ;

2、LEFT JOIN EXCLUDING INNER JOIN
返回左表有但右表没有关联数据的记录集。
在这里插入图片描述

--SQL示例
SELECT  t1.column1
       ,…
       ,t2.column1 
	   ,…
FROM table1 t1 
LEFT JOIN table2 t2 
ON t1.id=t2.id
WHERE t2.id IS NULL ;

3、RIGHT JOIN
RIGHT JOIN 一般称右连接,也写作 RIGHT [OUTER] JOIN。右连接查询会返回右表中所有记录,且在左表中找到的关联数据列也会被一起返回。

在这里插入图片描述

--SQL示例
SELECT  t1.column1
       ,…
       ,t2.column1 
	   ,…
FROM table1 t1 
RIGHT JOIN table2 t2
ON t1.id=t2.id

4、LEFT JOIN EXCLUDING INNER JOIN
返回右表有但左表没有关联数据的记录集。

在这里插入图片描述

--SQL示例
SELECT  t1.column1
       ,…
       ,t2.column1 
	   ,…
FROM table1 t1 
RIGHT JOIN table2 t2
ON t1.id=t2.id
WHERE t1.id IS NULL ;

5、INNER JOIN
INNER JOIN 一般被译作内连接。获取左表和右表中能关联起来的数据。
在这里插入图片描述

--SQL示例
SELECT  t1.column1
       ,…
       ,t2.column1 
	   ,…
FROM table1 t1 
INNER JOIN table2 t2
ON t1.id=t2.id ;

6、FULL OUTER JOIN
FULL [OUTER] JOIN 一般称外连接、全连接,实际查询语句中可以写作FULL JOIN。外连接查询能返回左右表里的所有记录。
在这里插入图片描述

--SQL示例
SELECT  t1.column1
       ,…
       ,t2.column1 
	   ,…
FROM table1 t1 
FULL OUTER JOIN table2 t2
ON t1.id=t2.id ;

7、FULL OUTER JOIN EXCLUDING INNER JOIN
返回左表和右表里没有相互关联的记录集。

在这里插入图片描述

--SQL示例
SELECT  t1.column1
       ,…
       ,t2.column1 
	   ,…
FROM table1 t1 
FULL OUTER JOIN table2 t2
ON t1.id=t2.id 
WHERE t1.id IS NULL 
OR t2.id IS NULL ;

除以上几种外,另有 CROSS JOIN(迪卡尔集),但此用法不常用,可做拓展研究。

三、GaussDB 实验示例
创建两张实验表:Students(学生表)和Score(学生成绩表)。

1、初始化实验表
1)Students(学生表):

--学生表,Students(SNO, SNAME)代表 (学号,姓名)
DROP TABLE students;
CREATE TABLE students(
    sno    INTEGER     NOT NULL,
    sname  varchar(32)
);

--插入数据
INSERT INTO students(sno,sname) VALUES (1001,'张三');
INSERT INTO students(sno,sname) VALUES (1002,'李四');
INSERT INTO students(sno,sname) VALUES (1003,'王五');
INSERT INTO students(sno,sname) VALUES (1004,'赵六');
INSERT INTO students(sno,sname) VALUES (1005,'韩梅');
INSERT INTO students(sno,sname) VALUES (1006,'李雷');

--查看表信息
SELECT * FROM students;

在这里插入图片描述

2)Score(学生成绩表):

--学生成绩表,Score(SNO, SCGRADE) 代表(学号,成绩)
DROP TABLE score;
CREATE TABLE score(
    sno      INTEGER     NOT NULL,
    scgrade  DECIMAL(3,1)
);

--插入数据
INSERT INTO score(sno,scgrade)values(1001,98);
INSERT INTO score(sno,scgrade)values(1002,95);
INSERT INTO score(sno,scgrade)values(1003,97);	
INSERT INTO score(sno,scgrade)values(1004,99);

--查看表信息
SELECT * FROM score;

在这里插入图片描述

2、LEFT JOIN(示例)

--表students为主表
SELECT t1.sno
      ,t1.sname
      ,t2.sno
      ,t2.scgrade
 FROM students t1
LEFT JOIN score t2
ON t1.sno=t2.sno

在这里插入图片描述

3、RIGTH JOIN(示例)

--表score 为主表
SELECT t1.sno
      ,t1.sname
      ,t2.sno
      ,t2.scgrade
 FROM students t1
RIGHT JOIN score t2
ON t1.sno=t2.sno

在这里插入图片描述

4、INNER JOIN(示例)

--根据字段sno获取两个表中都有的数据
SELECT t1.sno
      ,t1.sname
      ,t2.sno
      ,t2.scgrade
 FROM students t1
INNER JOIN score t2
ON t1.sno=t2.sno

在这里插入图片描述

5、FULL JOIN(示例)

--获取左右表里的所有记录。
SELECT t1.sno
      ,t1.sname
      ,t2.sno
      ,t2.scgrade
 FROM students t1
FULL JOIN score t2
ON t1.sno=t2.sno

在这里插入图片描述

四、小结
数据库表连接(Join)是将两个或多个表中的数据根据一定的条件进行组合,在实际应用中,数据库表连接可以帮助我们快速地获取所需的数据信息,提高数据处理效率。需要注意的是,不同的数据库系统对表连接的支持程度可能存在差异,需要根据具体的数据库类型选择合适的连接方式。(本文是以GaussDB云数据库为实验平台)

——结束




详情参考: https://support.huaweicloud.com/gaussdb/index.html

标签:JOIN,--,sno,GaussDB,t2,t1,SQL,id
From: https://www.cnblogs.com/xxxmut/p/18567918

相关文章

  • GaussDB数据库基础函数介绍-上
    ​目录一、函数在数据库中的作用二、GaussDB常用基础函数介绍与示例1、数字操作函数2、时间和日期处理函数3、类型转换函数4、数组函数5、范围函数6、窗口函数7、聚集函数8、安全函数9、系统信息函数10、动态脱敏函数.Tip:由于篇幅缘故,“5.范围函数、6.窗口函数、7.......
  • JDBC连接GaussDB云数据库操作示例
    ​目录一、实验环境二、登录华为云创建测试库表1、登录GaussDB云数据库2、建库、建表,用于测试3、新增普通角色(用户)用于登录及访问测试(可选)4、获取对应的公网IP三、创建java工程1、创建java工程2、添加jar包3、编辑Java代码四、执行并查看测试结果一、实验环境1、本......
  • GaussDB云数据库SQL应用系列-视图管理
    ​一、前言GaussDB是一款基于云计算技术的高性能关系型数据库,支持多种数据模型和分布式架构。在GaussDB中,视图管理是非常重要的一项功能,它可以帮助用户更方便地管理和查询数据。数据库视图管理是指对数据库中的视图进行创建、修改、删除、查询等操作的过程。二、准备条件参考......
  • GaussDB云数据库SQL应用系列—索引管理
    一、前言随着互联网的快速发展,数据量呈现爆炸式增长。如何高效地管理和查询这些数据成为了企业面临的重要问题。而数据库索引作为数据库优化的关键手段之一,对于提高数据库性能和查询效率具有重要作用。本文将介绍GaussDB云数据库的索引创建和管理方法,并结合实际应用场景进行分析......
  • GaussDB整体性能慢分析
    @目录问题描述问题现象告警业务影响原因分析分析步骤分析定位方法步骤一步骤二步骤三步骤四CPU满I/O满或者I/O异常内存满网络异常步骤五并发问题数据库配置问题异常等待事件长时间性能下降短时性能抖动不优SQL问题描述整体性能慢。不满足客户作业对时延要求或者不满足客户预期。......
  • MySQL误删表数据,如何快速恢复丢失的数据?
    第一步:登录数据库cd/www/server/mysql/binmysql-uroot-p第二步:查看binlog日志是否打开showvariableslike'log_%'; 查看下binlog日志列表binlog日志文件目录在/www/server/data目录下showmasterlogs; 下载生成sql文件/www/server/mysql/bin/mysq......
  • GaussDB云数据库SQL应用系列-基础使用
    ​目录一、前言二、前提条件1、连接数据库实例2、GaussDB实例正常运行三、操作示例1、选择实例并进入SQL执行界面2、创建数据库用户3、创建数据库4、创建SCHEMA5、创建表(增删改查)1)创建3张表,并初始化一些数据2)假设查询场景,并通过SQL实现一、前言随着云计算技术的不......
  • GaussDB内存过载分析
    问题现象数据库进程内存占比较高长时间占比较高观察监控平台内存占用的变化曲线,无论当前数据库是否有业务在运行,数据库进程内存占总机器内存的比例长时间处于较高状态,且不下降。执行作业期间占比较高数据库进程在没有业务执行时,内存使用持续处于较低的状态,当有业务执行时,内......
  • GaussDB云数据库SQL应用系列-定时任务管理
    ​前言GaussDB数据库定时任务主要可以用于实现定期的备份、统计信息采集、数据汇总、数据清理与优化等,它是指在指定的时间间隔内自动执行一次或多次SQL语句的程序。一、GaussDB数据库定时任务介绍GaussDB数据库兼容Oracle定时任务功能主要通过DBE_TASK高级功能包提供的二次封......
  • GaussDB SQL调优:建立合适的索引
    ​背景GaussDB是华为公司倾力打造的自研企业级分布式关系型数据库,该产品具备企业级复杂事务混合负载能力,同时支持优异的分布式事务,同城跨AZ部署,数据0丢失,支持1000+扩展能力,PB级海量存储等企业级数据库特性。拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关......