广告
返回顶部
首页 > 资讯 > 数据库 >SQL联表查询
  • 453
分享到

SQL联表查询

mysql 2023-08-19 14:08:55 453人浏览 安东尼
摘要

表1学生信息表 表二专业信息表 – join on 连接查询 – where 等值查询 1、内连接 分为两种 等值连接: 查找两个表中连接字段相等的记录。 --查询每个学生的(学生表)学号、姓名、籍贯、年龄、(专业表)专业、

表1学生信息表
在这里插入图片描述
表二专业信息表
在这里插入图片描述
– join on 连接查询
– where 等值查询

1、内连接

在这里插入图片描述

分为两种
等值连接: 查找两个表中连接字段相等的记录。

--查询每个学生的(学生表)学号、姓名、籍贯、年龄、(专业表)专业、班级--涉及到student和major两张表,用共有字段“学号”为连接字段--写法1:使用INNER JOINSELECT A.学号, A.姓名, A.籍贯, A.年龄, B.专业, B.班级FROM student AINNER JOIN major B   ON  A.学号=B.学号--写法2:--省去了INNER,直接写JOIN,与INNER JOIN没有区别SELECT A.学号, A.姓名, A.籍贯, A.年龄, B.专业, B.班级FROM student AJOIN major B  ON  A.学号=B.学号--写法3: --使用WHERE,已经逐渐被淘汰SELECT A.学号, A.姓名, A.籍贯, A.年龄, B.专业, B.班级FROM student A, major BWHERE A.学号=B.学号 

自身连接: 就是和自己进行连接查询,给一张表取两个不同的别名,然后附上连接条件。

--要在学生表里查询与 HH 同龄且籍贯也相同的学生信息SELECT B.学号, B.姓名, B.性别, B.籍贯, B.年龄FROM student A JOIN student BON A.年龄=B.年龄 AND A.籍贯=B.籍贯 AND A.姓名='HH'

我自己对于自身连接的理解:首先要查询B表中的数据,将A表的姓名的条件用完,A表只剩下了一HH相关的数据。接着执行AB的等值条件并从B表中筛选出数据。

2、左连接

获取左表中的所有记录,即使在右表没有对应匹配的记录。

--左连接:显示左表student所有记录,如右表中没有与之--匹配的项则以NULL值代替。SELECT A.学号, A.姓名, A.籍贯, A.年龄, B.专业, B.班级FROM student A LEFT JOIN major B  ON  A.学号=B.学号

在这里插入图片描述
左连接(以左边的记录为基准)个人理解:
左表student右表major
上述要查询AB表中的信息,条件为学号
首先先找出AB中学号相同的记录

SELECT A.学号, A.姓名, A.籍贯, A.年龄, B.专业, B.班级FROM student A, `master` B  WHERE  A.学号=B.学号

在这里插入图片描述
由于是左连接,A表中还剩下几条数据,而这几条数据在B表中没有相应的数据,那么补NULL即可

3、右连接

在这里插入图片描述

--右连接:显示右表major所有记录,如左表中没有与之--匹配的项则以NULL值代替。SELECT A.学号, A.姓名, A.籍贯, A.年龄, B.专业, B.班级FROM student A RIGHT JOIN major B  ON  A.学号=B.学号

在这里插入图片描述
个人理解:现根据条件进行等值连接,再右表中的数据补上,没有的值补上NULL

4、完全连接

返回两个表的所有行
在这里插入图片描述

--完全连接:显示两张表的并集,如果其中一张表的记录--在另一张表中没有匹配的行,则对应的数据项填充NULLSELECT A.学号, A.姓名, A.籍贯, A.年龄, B.专业, B.班级FROM student A FULL JOIN major B  ON  A.学号=B.学号

在这里插入图片描述
个人理解:有点像是左右连接的结合体。

5、交叉连接

结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。
在这里插入图片描述

--交叉连接:一张表中的数据依次取出分别与另一张表中的--每条数据挨个组合,最后记录数量为两张表记录数的乘积SELECT * FROM student CROSS JOIN major--本例student和major都为7条记录,所以结果为7*7=49条记录

在这里插入图片描述
个人理解:左表中的每一条数据都和右表中的每一条数据进行匹配
左表7条
右表7条
那么查询出的结果就是49条

6、左表唯一

返回左表有但右表没有关联数据的记录。
在这里插入图片描述

--左表唯一:将右表B以及两张表交集的部分过滤掉,--得到的记录是左表中唯一存在的。SELECT A.学号, A.姓名, A.籍贯, A.年龄, B.专业, B.班级FROM student A LEFT JOIN major B  ON  A.学号=B.学号WHERE B.学号 IS NULL

在这里插入图片描述

7、右表唯一

--右表唯一:将左表A以及两张表交集的部分过滤掉,--得到的记录是右表中唯一存在的。SELECT A.学号, A.姓名, A.籍贯, A.年龄, B.专业, B.班级FROM student A RIGHT JOIN major B  ON  A.学号=B.学号WHERE A.学号 IS NULL

在这里插入图片描述

8、非交集连接

在这里插入图片描述

--非交集连接:查找两张表中没有关联的记录项。SELECT A.学号, A.姓名, A.籍贯, A.年龄, B.专业, B.班级FROM student A FULL JOIN major B  ON  A.学号=B.学号WHERE A.学号 IS NULL OR B.学号 IS NULL

在这里插入图片描述
相当于左右表唯一的结合体

来源地址:https://blog.csdn.net/m0_52784892/article/details/127688559

您可能感兴趣的文档:

--结束END--

本文标题: SQL联表查询

本文链接: https://www.lsjlt.com/news/375615.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL联表查询
    表1学生信息表 表二专业信息表 – join on 连接查询 – where 等值查询 1、内连接 分为两种 等值连接: 查找两个表中连接字段相等的记录。 --查询每个学生的(学生表)学号、姓名、籍贯、年龄、(专业表)专业、...
    99+
    2023-08-19
    mysql
  • sql怎么两个表关联查询
    在 SQL 中,我们可以使用 JOIN 关键字来两个表关联查询。例如,假设有两个表:table1 和 table2,并且它们之间有一个关联字段 field1。你可以使用如下的语句来两个表关联查询: SELECT * FROM t...
    99+
    2023-09-01
    sql 数据库 mysql
  • SQL优化之多表关联查询
    慢SQL日志里看到一个三张表的关联查询,如下: 1 ...
    99+
    2022-10-18
  • SQL 关联子查询
    目录一、普通的子查询和关联子查询的区别二、关联子查询也是用来对集合进行切分的三、结合条件一定要写在子查询中请参阅 学习重点 关联子查询会在细分的组内进行比较时使用。 关联子查询和 GROUP BY 子句一样,也可以对表中的数据进...
    99+
    2016-06-28
    SQL 关联子查询
  • MySQL联合查询(多表查询)
    一、内连接 select *from 表1 [ inner | cross ] join 表2 [ on过滤条件 ] [ where查询条件 ] ; [ inner | cross ]: join 内连接关键字(必须要有...
    99+
    2023-09-14
    mysql 数据库 database
  • 【MySQL】MySQL表之联合查询(多表查询)
    📌前言:本篇博客介绍MySQL数据库的MySQL表之联合查询(多表查询),学习MySQL之前要先安装好MySQL,如果还没有安装的小伙伴可以看看博主前面的博客,里面有详细的安装教程。 那我们废话不多说,直接进入主体!...
    99+
    2023-08-16
    mysql 数据库 java
  • SQL的多表联查
    SQL的多表联查 在奋斗,90在追求。勇往无前,斗志昂扬,激情澎湃。我们在坚定的毅志中一天天的长大,一天天的成熟。岁月蹉跎,只为追求此生无悔! 表关联 association 概念 表table代表了生活中一个主体,如部门表dept,...
    99+
    2022-03-17
    SQL的多表联查
  • Mysql 复杂查询丨联表查询
    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! JOIN(联表查询) 联表查询(Join)是一种在数据库中使用多个表进行关联查询的操...
    99+
    2023-08-16
    mysql 数据库
  • SQL优化之多表关联查询-案例一
    慢SQL日志里看到一个三张表的关联查询,如下: SELECT COUNT(1)  FROM refund_order_item i, artis...
    99+
    2022-10-18
  • sql多表查询
    多表查询概念:从多张表查询数据 分类:连接查询和子查询。 有两张表A、B 连接查询: 内连接      相当于查询A、B交集数据 例1:select * from emp,dept where emp.dep_id=d...
    99+
    2023-09-01
    sql 数据库 vim mysql java
  • SQL 多表联合查询的几种方式详解
    目录前言正文内连接等值连接/相等连接自然连接自连接外连接左外连接右外连接全外连接/完全外连接交叉连接/笛卡尔积总结前言 连接查询是关系数据中最主要的查询,包括内连接、外连接等。通过连接运算符可以实现多个表查询。 正文 连...
    99+
    2023-02-15
    SQL 多表联合查询 SQL 多表查询 SQL 联合查询
  • SQL 多表联合查询的几种方式详解
    目录前言正文内连接等值连接/相等连接自然连接自连接外连接左外连接右外连接全外连接/完全外连接交叉连接/笛卡尔积总结前言 连接查询是关系数据中最主要的查询,包括内连接、外连接等。通过连...
    99+
    2023-02-15
    SQL 多表联合查询 SQL 多表查询 SQL 联合查询
  • MyBatis 多表关联查询
    ✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识...
    99+
    2023-09-01
    mybatis java mysql
  • Mysql 多表关联查询
    文章目录 1. Mysql中表之间的关系1.1 多表关系1.2 外键约束 2. 多表联合查询2.1 交叉连接查询:笛卡尔积2.2 内连接查询:inner join2.3 外连接查询2.3.1 左连接:2.3.2 右连接:2.3....
    99+
    2023-08-21
    mysql 数据库 sql
  • 查询表结构sql
    SELECT     表名       = Case When A.colorder=1 Then D.name Else '' End,...
    99+
    2022-10-18
  • mysql数据库多表关联查询的慢SQL优化
    工作中我们经常用到多个left join去关联其他表查询结果,但是随着数据量的增加,一个表的数据达到百万级别后,这种普通的left join查询将非常的耗时。 举个例子:     现在porder表有 1000W数据,其他关联的表数据都...
    99+
    2017-02-16
    mysql数据库多表关联查询的慢SQL优化
  • SQL关联查询 直接join 和子查询的区别
    运营组的同事最近提出一个需求,希望可以统计出用系统用户及订单情况,于是乎我们很想当然的写出了一个统计SQL,用户表user和行程表直接join,并且针对行程做了group,但SQL执行速度出奇的慢。 exp...
    99+
    2022-10-18
  • MySQL的多表关联查询
    一、多表关联查询 多表关联查询是使用一条SQL语句,将关联的多张表的数据查询出来。 1.1 交叉查询 交叉查询就是将多张表的数据没有条件地连接在一起进行展示。 1.1.1 语法 使用交叉查询类别和商品 -- 目标:查询所有分类,以及每个分类...
    99+
    2023-08-22
    mysql 数据库 java
  • 什么是mysql联表查询
    下文给大家带来有关什么是mysql联表查询内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完什么是mysql联表查询你一定会有所收获。sh_role表结构如下sh_...
    99+
    2022-10-18
  • 【MySQL】聚合查询 + 多表联合查询(重点)
    文章目录 前言一、聚合查询1, 聚合函数2, 聚合函数使用示例3, GROUP BY 子句4, HAVING 子句 二、联合查询(重点)1, 笛卡尔积2, 内连接2.1, 示例12...
    99+
    2023-09-29
    mysql 数据库 聚合查询 联合查询 内连接
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作