当前位置: 首页 > news >正文

SQL 中如何实现多表关联查询?

       阅读本文之前请参阅----MySQL 数据库安装教程详解(linux系统和windows系统)

               在SQL中,多表关联查询是通过使用`JOIN`操作来实现的,它允许你从两个或多个表中根据相关列的值来检索数据。以下是几种常见的`JOIN`类型:
        1. **INNER JOIN**:只返回两个表中都有匹配的行。

 SELECT column1, column2, ...FROM table1INNER JOIN table2ON table1.common_column = table2.common_column;


        2. **LEFT JOIN(或LEFT OUTER JOIN)**:返回左表(table1)的所有行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果集中右表的部分返回NULL。

SELECT column1, column2, ...FROM table1LEFT JOIN table2ON table1.common_column = table2.common_column;


        3. **RIGHT JOIN(或RIGHT OUTER JOIN)**:与LEFT JOIN相反,返回右表的所有行,即使左表中没有匹配。如果左表中没有匹配,则结果集中左表的部分返回NULL。

SELECT column1, column2, ...FROM table1RIGHT JOIN table2ON table1.common_column = table2.common_column;


        4. **FULL JOIN(或FULL OUTER JOIN)**:返回两个表中所有的行。当某行在另一个表中没有匹配时,则结果集中该表的部分返回NULL。需要注意的是,并非所有的数据库系统都支持FULL JOIN。

SELECT column1, column2, ...FROM table1FULL JOIN table2ON table1.common_column = table2.common_column;


        5. **CROSS JOIN**:返回两个表的笛卡尔积,即每个表中的每行与另一个表中的每行组合。如果没有WHERE子句或者ON子句来过滤结果,CROSS JOIN将返回两个表的行数的乘积。

  SELECT column1, column2, ...FROM table1CROSS JOIN table2;


        在执行多表关联查询时,你还可以使用`WHERE`子句来添加额外的过滤条件,以及使用`GROUP BY`、`HAVING`和`ORDER BY`子句来对结果进行分组、过滤和排序。
示例:假设有两个表,一个是`employees`表,包含员工信息,另一个是`departments`表,包含部门信息。我们可以使用INNER JOIN来获取每个员工的部门信息。


SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.id;


        在这个例子中,`employees.department_id`和`departments.id`是两个表之间的共同列,用于关联两个表的数据。

http://www.lryc.cn/news/305431.html

相关文章:

  • oracle 设置权限 禁止删除用户
  • 港科夜闻|香港科大计划建立北部都会区卫星校园完善科大创新带,发展未来创新科技 未来医药发展及跨学科教育...
  • linux反弹shell简单使用
  • 前后端分离Vue+nodejs校园论坛bbs系统x450z
  • ChatGPT的能力边界在哪?
  • Sentinel微服务流量治理组件实战下
  • vue+node.js美食分享推荐管理系统 io551
  • 云原生超融合八大核心能力|ZStack Edge云原生超融合产品技术解读
  • 认识K8S
  • K8S-001-Virtual box - Network Config
  • ShardingSphere5.x 分库分表
  • cmake 项目。qt5升级 qt6 报错 error: “Qt requires a C++17 compiler 已解决
  • Flutter Engine 编译
  • 数据可视化在商业领域有哪些重要性?
  • UI风格汇:扁平化风格来龙去脉,特征与未来趋势
  • 【雷达指标】MTI/MTD性能
  • 暴雨服务器:科技创新构建高效、高质、可持续的新质生产力
  • 在 where子句中使用子查询(一)
  • kafka为什么性能这么高?
  • 安卓OpenGL添加水印并录制(二)---抖音录制原理
  • 动态绑定样式,uniapp,用三元运算动态绑定多个class类样式,动态绑定的样式可以和原始样式共存
  • 神经网络基础——激活函数的选择、参数初始化
  • ElasticSearch之聚合aggs
  • Android 系统定位和高德定位
  • Day20_网络编程(软件结构,网络编程三要素,UDP网络编程,TCP网络编程)
  • https://registry.npm.taobao.org淘宝npm镜像仓库地址更新
  • 离散数学(一) 集合
  • IOS不使用默认的mainStroryboard作为首个controller的方法
  • Qt(C++)面试题 | 精选25项常问
  • 个人博客系列-环境配置-gitee(2)