sql连接查询

sql 连接查询

连接查询是在关系型数据库中使用的一种操作,它允许将两个或多个表中的数据根据特定的条件关联起来,从而生成一个新的结果集。这个操作在SQL中通过使用不同类型的连接操作符来实现。以下是几种常见的连接查询类型:

  1. 内连接(INNER JOIN):

image.png

内连接返回两个表中满足连接条件的匹配行。如果两个表中的某行与另一个表中的行没有匹配,那么这些行将不会出现在结果集中。

SELECT *
FROM table1
INNER JOIN table2
ON table1.column = table2.column;
  1. 左外连接(LEFT JOIN):

image.png

左外连接返回左表中的所有行,以及与右表满足连接条件的匹配行。如果某行在右表中没有匹配,那么在结果集中将会有NULL值。

SELECT *
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;
  1. 右外连接(RIGHT JOIN):

image.png

右外连接返回右表中的所有行,以及与左表满足连接条件的匹配行。如果某行在左表中没有匹配,那么在结果集中将会有NULL值。

SELECT *
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;
  1. 全外连接(FULL JOIN):

image.png

全外连接返回左表和右表中的所有行,以及满足连接条件的匹配行。如果某行在左表或右表中没有匹配,那么在结果集中将会有NULL值。

SELECT *
FROM table1
FULL JOIN table2
ON table1.column = table2.column;

这些连接查询操作允许您根据需要将表中的数据联合起来,以便进行更复杂的查询和分析。根据连接条件和查询需求,您可以选择适当的连接类型来获取所需的数据。

sql连接查询在数学里叫什么名字

在数学中,SQL连接查询类似于集合论中的“笛卡尔积”操作。在集合论中,给定两个集合A和B,它们的笛卡尔积是一个集合,其中的每个元素是由一个来自A的元素和一个来自B的元素组成的有序对。在SQL连接查询中,将两个表根据特定的条件(例如列值相等)进行连接,产生的结果类似于笛卡尔积中的元素对,但会根据连接条件进行筛选。

两个集合都包含,只有左边集合包含,只有右边集合包含:在数学里分表叫什么名字

在数学中,描述两个集合之间的关系时,常常使用以下术语:

  1. 交集:指的是两个集合中共同存在的元素的集合。在SQL中,这类似于内连接(INNER JOIN)操作,只返回满足连接条件的行。

  2. 左差集:指的是只在左边集合中存在而在右边集合中不存在的元素的集合。在SQL中,这类似于左外连接(LEFT JOIN)操作,返回左表中所有的行以及与右表满足连接条件的行。

  3. 右差集:指的是只在右边集合中存在而在左边集合中不存在的元素的集合。在SQL中,这类似于右外连接(RIGHT JOIN)操作,返回右表中所有的行以及与左表满足连接条件的行。

综合来说,这些数学术语与SQL连接查询的不同类型之间有一定的对应关系,但并非完全一致。

笛卡尔积 详细介绍

当涉及两个集合的组合时,笛卡尔积是一个基本的数学概念。它表示了从两个集合中选择一个元素对的所有可能组合,从而形成一个新的集合。这个概念在数学、计算机科学和数据库中都有重要的应用。

假设有两个集合A和B,它们分别包含元素:

A = {a, b, c} B = {x, y}

它们的笛卡尔积将包含所有可能的元素对:

A × B = {(a, x), (a, y), (b, x), (b, y), (c, x), (c, y)}

每个元素对由一个来自集合A的元素和一个来自集合B的元素组成。

在数据库和SQL查询中,笛卡尔积用于连接两个表的所有行,产生一个临时的结果集,其中包含两个表的每一行组合。然后,可以通过添加条件来筛选和限制这个结果集,以获取想要的数据。

然而,实际上很少在数据库查询中直接使用笛卡尔积,因为它可能会导致结果集非常大。通常会使用连接操作(例如INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN)来限制结果集,只返回满足特定条件的数据行。

总结:笛卡尔积是一个基本的数学概念,表示从两个集合中选择所有可能的元素对。在数据库和SQL中,笛卡尔积用于连接两个表的所有行,但实际应用中会使用连接操作来筛选结果。

举例

1、初始数据

CREATE TABLE student (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(255),
  subject VARCHAR(255),
  score INT
);

INSERT INTO student (name, subject, score) VALUES
  ('John', 'Math', 90),
  ('John', 'Math', 80),
  ('Jane', 'English', 85),
  ('David', 'Science', 92),
  ('Emily', 'History', 88),
  ('Michael', 'Math', 95),
  ('Sophia', 'English', 78),
  ('Daniel', 'Science', 89),
  ('Olivia', 'History', 92),
  ('William', 'Math', 87),
  ('Ava', 'English', 93);

2、需求
查询Math大于80并且English大于80

3、解决方法

SELECT s1.name
FROM student s1
INNER JOIN student s2 ON s1.name = s2.name
WHERE s1.subject = 'Math' AND s1.score > 80
AND s2.subject = 'English' AND s2.score > 80;

4、查询结果

+---------+
|  name   |
+---------+
|   John  |
+---------+

参考

www.liaoxuefeng.com/wiki/117776…

全部评论

相关推荐

04-10 11:02
已编辑
北方民族大学 全栈开发
“无名小卒,还是名扬天下?”我知道很多人都不觉得我能走到今天这一步,当然,也包括我自己。在我的人生里,有两部作品刻下了最深的烙印:《斗破苍穹》与《龙族》。它们总被人拿来对照:一边是萧炎的桀骜轻狂,一边是路明非的怯懦衰颓。有人说,天蚕土豆没见过魂天帝,但江南见过真凯撒。我时常觉得,自己就是那个衰小孩路明非。可路明非可以开挂,我不可以;我也无数次幻想过,能拥有萧炎那般年少轻狂的人生,可我没有他与生俱来的逆天天赋。我只是个平庸的普通人,一个看过《斗破苍穹》却开不了挂的路明非,只能一步一步往上爬。从我下定决心找实习的那一刻起,我就给自己定下了目标:“我一定要为字节跳动卖命.jpg”。萧炎有他的三年之约,我有我的两年半之约(其实是一年半)。2024.11.20,科大讯飞的第一封实习offer落进邮箱,我迈出了这场奔赴的第一步。2025.8.18,放弃百度转正的安稳机会,转身走进前路未卜的不确定里。我很感谢我在百度的mentor,是她从茫茫人海选中了我,给了我大厂实习的机会。即便有段时间我状态差、产出不理想,她依旧愿意认可我、希望我留下转正。2025.11.14,我选择走进字节跳动,以实习生的身份重新出发。2026.3.25 - 3.31,一周速通上海飞书,幸遇赏识我的伯乐,斩获Special Offer。被告知面试通过的那一刻,我的内心无比平静,就像这个offer本就该属于我。不是侥幸,是应得的。这一路,有人看轻过我的出身,不相信我能走到这里;也有人在我看不见前路的时候,替我举过灯。没有他们的鼓励与支撑,就没有今天站在这里的我。我看到了自强不息的激荡,那是一个双非的伟大乐章!我是雨夜迈巴赫,我要开启属于我的新篇章了。
在看牛客的本杰明很勇...:真心祝贺l总 我永远的偶像 我滴神
春招至今,你收到几个面试...
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务