软件测试|数据库的内连接,左连接,右链接分别是什么
什么是数据库
数据库是一个以某种有组织的方式存储的数据集合,是存储和管理数据的仓库。本质上就是存储数据的文件系统。
用户在使用数据库的时候,不会直接去操作这些文件,而是使用了数据库厂商封装好的数据库软件,也就是数据库管理系统(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)在多个表中间通过一定的连接条件,使表之间发生关联进而能从多个表之间获取数据。
内链接,左连接与右连接
表连接中最常见的类型就是内连接、左连接和右连接。
内连接
获取两个表中字段匹配关系的记录,也就是两张表的交集。可以通过主外键关系做为条件来去除无用信息。
语法:
拿学生表和成绩表来举例。查询有成绩的学生信息。
SQL 语句为
查询结果为
左连接
先查询出左表,以左表为主,然后查询右表,右表中满足条件的显示出来,不满足条件的显示 NULL。
语法:
还是拿学生表和成绩表来举例。查询有信息的学生的成绩。
SQL 语句为
查询结果为
右连接
先把右表中所有记录都查询出来,以右表为主,然后查询左表,左表中满足条件的显示出来,不满足的显示 NULL。
语法:
还是拿学生表和成绩表来举例。查询所有有成绩的学生信息。
SQL 语句为
查询结果为
总结
数据库就是一个以某种有组织的方式存储的数据集合,是存储和管理数据的仓库。本质上就是存储数据的文件系统。
用户使用数据库管理系统(DBMS)对数据库进行统一管理和控制,保证数据库的安全性和完整性。平常说的数据库一般指代的就是数据库管理系统。
关系型数据库,比如使用最广泛的 MySQL,可以使用 SQL 结构化查询语句来进行数据库的操作。
关系型数据库中多表查询中比较常见的表连接形式分别为内连接、左连接和右连接。
内连接:通过关键字 (INNER) JOIN 获取两个表中字段匹配关系的记录。可以通过主外键关系做为条件来去除无用信息。
左连接:通过关键字 LEFT JOIN 获取左表所有记录。也就是先查询出左表,以左表为主,然后查询右表,右表中满足条件的显示出来,不满足条件的显示 NULL。
右连接:通过关键字 RIGHT JOIN 获取右表所有记录。也就是先把右表中所有记录都查询出来,以右表为主,然后查询左表,左表中满足条件的显示出来,不满足的显示 NULL。
评论