天涯论坛

 找回密码
 立即注册
搜索
查看: 74|回复: 5

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

[复制链接]

3056

主题

155

回帖

9923万

积分

论坛元老

Rank: 8Rank: 8

积分
99238923
发表于 2024-8-4 10:52:46 | 显示全部楼层 |阅读模式

什么是数据库

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

用户在运用数据库的时候,不会直接去操作这些文件,而是运用了数据库厂商封装好的数据库软件,便是数据库管理系统(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

studentId

name

birthDate

sex

001

哈利

1991-01-01

002

赫敏

1991-05-07

003

罗恩

1991-09-11

004

金妮

1996-11-15

成绩表 score

studentId

courseId

score

001

C0001

90

001

C0002

95

002

C0001

100

002

C0003

99

002

C0004

100

005

C0002

92

两个表都有【studentId】,便是说,它们是能够经过相同的列【studentId】相关起来。

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

因此关系型数据库里的【关系】,便是数据能够对应的匹配,它在关系数据库中被叫作为联结,英文名是 JOIN。

在数据查找的时候,倘若查找的数据分布在多张表中的时候,表连接(JOIN)在多个表中间经过必定的连接要求,使表之间出现相关从而能从多个表之间获取数据。

内链接,左连接与右连接

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

连接类型

关键词

定义

内连接

(INNER) JOIN

获取两个表中字段匹配关系的记录

左连接

LEFT (OUTER) JOIN

获取左表所有记录,右表对应匹配的记录时表示为 NULL

右连接

RIGHT (OUTER) JOIN

获取右表所有记录,左表对应匹配的记录时表示为 NULL

内连接

获取两个表中字段匹配关系的记录,便是两张表的交集。能够经过主外键关系做为要求来去除无用信息。

语法:

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

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

SQL 语句为

SELECT * FROM student st INNER JOIN score sc ON st.studentId=sc.studentId;

查找结果为

左连接

查找出左表,以左表为主,而后查找右表,右表中满足要求表示出来,不满足要求表示 NULL。

语法:

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

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

SQL 语句为

SELECT * FROM student st LEFT JOIN score sc ON st.studentId=sc.studentId;

查找结果为

右连接

先把右表中所有记录都查找出来,以右表为主,而后查找左表,左表中满足要求表示出来,不满足的表示 NULL。

语法:

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

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

SQL 语句为

SELECT * FROM student st RIGHT JOIN score sc ON st.studentId=sc.studentId;

查找结果为

总结

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

用户运用数据库管理系统(DBMS)对数据库进行统一管理和掌控保准数据库的安全性和完整性。平常说的数据库通常指代的便是数据库管理系统。

关系型数据库,例如运用最广泛的 MySQL,能够运用 SQL 结构化查找语句来进行数据库的操作。

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

内连接:经过关键字 (INNER) JOIN 获取两个表中字段匹配关系的记录。能够经过主外键关系做为要求来去除无用信息。左连接:经过关键字 LEFT JOIN 获取左表所有记录。便是查找出左表,以左表为主,而后查找右表,右表中满足要求表示出来,不满足要求表示 NULL。右连接:经过关键字 RIGHT JOIN 获取右表所有记录。便是先把右表中所有记录都查找出来,以右表为主,而后查找左表,左表中满足要求表示出来,不满足的表示 NULL。




上一篇:绝了,通俗的给你讲懂MySQL表连接原理
下一篇:28.MySQL中的左(右)外连接 LEFT(RIGHT) [OUTER] JOIN
回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-9-10 15:56:26 | 显示全部楼层
楼主发的这篇帖子,我觉得非常有道理。
回复

使用道具 举报

3061

主题

3万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99139052
发表于 2024-10-12 06:31:11 | 显示全部楼层
一看到楼主的气势,我就觉得楼主同在社区里灌水。
回复

使用道具 举报

3061

主题

3万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99139052
发表于 2024-10-12 19:25:58 | 显示全部楼层
外贸论坛是我们的,责任是我们的,荣誉是我们的,成就是我们的,辉煌是我们的。
回复

使用道具 举报

3070

主题

3万

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99158931
发表于 2024-10-19 18:42:37 | 显示全部楼层
楼主的文章深得我心,表示由衷的感谢!
回复

使用道具 举报

3070

主题

3万

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99158931
发表于 2024-10-19 23:23:19 | 显示全部楼层
百度seo优化论坛 http://www.fok120.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-23 01:31 , Processed in 0.117376 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.