写点什么

软件测试|数据库的内连接,左连接,右链接分别是什么

  • 2023-09-15
    北京
  • 本文字数:2092 字

    阅读完需:约 7 分钟

什么是数据库

数据库是一个以某种有组织的方式存储的数据集合,是存储和管理数据的仓库。本质上就是存储数据的文件系统。


用户在使用数据库的时候,不会直接去操作这些文件,而是使用了数据库厂商封装好的数据库软件,也就是数据库管理系统(DBMS)。


数据库管理系统对数据库进行统一管理和控制,保证数据库的安全性和完整性。平常所说的数据库,其实指的就是对应数据库的 DBMS,数据库管理系统。


使用数据库存储数据,用户可以非常方便对数据库中的数据进行增加,删除,修改及查询操作。


数据库可以分为关系型数据库和非关系型数据库。


关系型数据库产品包括 MySQL、Oracle、Postgres、SQLite 和 SQLServer。这几个数据库是目前行业里使用非常广泛的。其中最具有代表性的是 MySQL,它是使用最广泛的数据库。


这些关系型数据库都可以使用 SQL 语句进行操作。


非关系型数据库常见的有 MongoDB、Redis 等等。

什么是 SQL

SQL 是结构化查询语言(Structured Query Language) 的简称,是一种特殊目的的编程语言,用来存取数据以及查询、更新和管理关系数据库系统。


SQL 是所有关系型数据库的统一查询规范,所有的关系型数据库都可以使用 SQL,不过不同数据库之间的 SQL 语法会有一些区别。


SQL 可以分为以下几种类型


  • 数据定义语言:简称 DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。

  • 数据操作语言:简称 DML(Data Manipulation Language),用来对数据库中表的记录进行更新。

  • 数据查询语言:简称 DQL(Data Query Language),用来查询数据库中表的记录。

  • 数据控制语言:简称 DCL(Daat Control Language),用来定义数据库的访问权限和安全级别, 以及创建用户。


在测试的场景中,更多的使用的是数据查询语言 DQL。

什么是表连接

关系型数据库中存放的,是一张一张的表,各个表之间是具有联系的。


数据库中的多个表间是如何建立联系的呢?


拿学生表和成绩表来举例。假设学生表的四列分别代表学号,姓名,出生日期和性别。成绩表的三列分别是学号,课程编号和成绩。


学生表 student



成绩表 score



两个表都有【studentId】,也就是说,它们是可以通过相同的列【studentId】关联起来。


如果要查询学生表中 studentId 为“001”号学生的成绩是多少,就可以在成绩表中查找 studentId 为“001”号的那一行,最后在成绩表里发现有 2 行数据的 studentId 都是“001” ,对应的就找到了该学生的两门课程的成绩。


所以关系型数据库里的【关系】,就是数据能够对应的匹配,它在关系数据库中被称为联结,英文名是 JOIN。


在数据查询的时候,如果要查询的数据分布在多张表中的时候,表连接(JOIN)在多个表中间通过一定的连接条件,使表之间发生关联进而能从多个表之间获取数据。

内链接,左连接与右连接

表连接中最常见的类型就是内连接、左连接和右连接。


内连接

获取两个表中字段匹配关系的记录,也就是两张表的交集。可以通过主外键关系做为条件来去除无用信息。



语法:


SELECT * FROM <表名1> [表别名1] INNER JOIN <表名2> [表别名2]ON <表别名1>.<外键列>=<表别名2>.<主键列>;
复制代码


拿学生表和成绩表来举例。查询有成绩的学生信息。


SQL 语句为


SELECT * FROM student stINNER JOIN score scON st.studentId=sc.studentId;
复制代码


查询结果为


左连接

先查询出左表,以左表为主,然后查询右表,右表中满足条件的显示出来,不满足条件的显示 NULL。



语法:


SELECT * FROM <表名1> [表别名1] LEFT [OUTER] JOIN <表名2> [表别名2]ON <表别名1>.<外键列>=<表别名2>.<主键列>;
复制代码


还是拿学生表和成绩表来举例。查询有信息的学生的成绩。


SQL 语句为


SELECT * FROM student stLEFT JOIN score scON st.studentId=sc.studentId;
复制代码


查询结果为


右连接

先把右表中所有记录都查询出来,以右表为主,然后查询左表,左表中满足条件的显示出来,不满足的显示 NULL。



语法:


SELECT * FROM <表名1> [表别名1] RIGHT [OUTER] JOIN <表名2> [表别名2]ON <表别名1>.<外键列>=<表别名2>.<主键列>;
复制代码


还是拿学生表和成绩表来举例。查询所有有成绩的学生信息。


SQL 语句为


SELECT * FROM student stRIGHT JOIN score scON st.studentId=sc.studentId;
复制代码


查询结果为


总结

数据库就是一个以某种有组织的方式存储的数据集合,是存储和管理数据的仓库。本质上就是存储数据的文件系统。


用户使用数据库管理系统(DBMS)对数据库进行统一管理和控制,保证数据库的安全性和完整性。平常说的数据库一般指代的就是数据库管理系统。


关系型数据库,比如使用最广泛的 MySQL,可以使用 SQL 结构化查询语句来进行数据库的操作。


关系型数据库中多表查询中比较常见的表连接形式分别为内连接、左连接和右连接。


  • 内连接:通过关键字 (INNER) JOIN 获取两个表中字段匹配关系的记录。可以通过主外键关系做为条件来去除无用信息。

  • 左连接:通过关键字 LEFT JOIN 获取左表所有记录。也就是先查询出左表,以左表为主,然后查询右表,右表中满足条件的显示出来,不满足条件的显示 NULL。

  • 右连接:通过关键字 RIGHT JOIN 获取右表所有记录。也就是先把右表中所有记录都查询出来,以右表为主,然后查询左表,左表中满足条件的显示出来,不满足的显示 NULL。


获取更多技术资料,请点击!

用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
软件测试|数据库的内连接,左连接,右链接分别是什么_霍格沃兹测试开发学社_InfoQ写作社区