sql语句之多表查询

article/2025/9/24 9:01:31

文章目录

  • 一、笛卡尔积(交叉连接) ---->cross join
    • 1、概念
    • 2. 语法
    • 3.示例
  • 二、内连接---->inner join
    • 1、概念
    • 2. 语法
    • 3.示例
  • 三、外链接---->outer join
    • 1、概念
    • 2. 语法
    • 3.示例
  • 四、联合连接---->union
    • 1、概念
    • 2.示例


一、笛卡尔积(交叉连接) ---->cross join

1、概念

 笛卡尔积又称为“交叉连接”,将两个表中所有数据行。返回结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
(相当于合并两张表单为一张,表单中所有字段都保存展示)

例如,A={a,b},B={0,1,2} 则
AxB={<a,o>,<a,1>,<a,2>,<b,0>,<b,1>,<b,2>,}
BxA={<0,a>,<0,b>,<1,a>,<1,b>,<2,a>,<2,b>}

2. 语法

在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用’,’

SELECT * FROM table1 CROSS JOIN table2;

SELECT * FROM table1 JOIN table2;

SELECT * FROM table1 , table2;

3.示例

  1. 示例1、合并两个表内容(纯粹连接查询)
select * from employees,dept_emp;

在这里插入图片描述
在这里插入图片描述

二、内连接---->inner join

1、概念

  在MySQL中把INNER JOIN叫做等值连接,即需要指定等值连接条件INNER JOIN被划分在一起。

(1)、必须有等值条件;
(2)、内连接可能会丢失信息;
(内连接是从结果表中删除与其他被连接表中没有匹配行的所有行)
(3)、重点:内连接,只查匹配行。

2. 语法

第一种:只使用where

SELECT * FROM table1 a,table2 b where a.id=b.id ;

第二种:join…on

SELECT * FROM table1 a JOIN table2 b on a.id=b.id;

第三种:inner join … on

SELECT * FROM table1 a inner join table2 b on a.id=b.id;

3.示例

select * from salaries a,dept_manager b where a.emp_no=b.emp_no;
select * from salaries a join dept_manager b on a.emp_no=b.emp_no;

在这里插入图片描述

三、外链接---->outer join

1、概念

 分为左外连接( LEFT OUTER JON )和右连接(RIGHT OUTER JOIN),即除了返回符合连接条件的结果之外,还要返回左表(左连接)或者右表(右连接)中不符合连接条件的结果,相对应的使用NULL对应。

1、左外连接 left inner join
左边主表,左所有数据都显示,右边显示相关联 ,没有数据显示null
2、右外连接 right inner join
右边主表,右所有数据都显示,左边显示相关联 ,没有数据显示null

2. 语法

SELECT * FROM table1 a left join table2 b on a.id=b.id ;

SELECT * FROM table1 a right join table2 b on a.id=b.id;

3.示例

(1)两张表以左表为准

select * from salaries a left join dept_manager b on a.emp_no=b.emp_no;

在这里插入图片描述
(2)三张表
A left join B on A.id=B.id left join C on B.code=C.code

SELECT last_name, first_name, dept_name
FROM employees a LEFT JOIN dept_emp b ON a.emp_no=b.emp_no
LEFT JOIN departments c ON b.dept_no=c.dept_no;

在这里插入图片描述

四、联合连接---->union

1、概念

 两个sql语句,中间用union连接union all 分别查看&不去重

2.示例

select device_id, gender, age, gpa
from user_profile
where university='山东大学'union allselect device_id, gender, age, gpa
from user_profile
where gender='male'

在这里插入图片描述


http://chatgpt.dhexx.cn/article/JZYUGo1m.shtml

相关文章

连接查询(多表查询)——MySQL

连接查询&#xff08;多表查询&#xff09; 又称多表查询&#xff0c;当查询的字段涉及多个表的时候&#xff0c;就要用到连接查询 分类&#xff1a; 为表起别名&#xff1a; 提高语句的简洁度区分多个重名字段注意&#xff1a;如果为表起了别名&#xff0c;则查询的字段就不…

MySQL-多表查询

一、表架构 student(sid,sname,sage,ssex) 学生表course(cid,cname,tid) 课程表sc(sid,cid,score) 成绩表teacher(tid,tname) 教师表 二 、建表sql语句 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for course -- --…

Java中的XML解析

前言 这几天在手写Spring IOC的时候遇上了xml文件的解析&#xff0c;通过解析Spring.xml配制文件的方式来创建对象。因为之前从来都没遇见过相关的需求&#xff0c;所以对此做一份记录 XML (eXtensible Markup Language) 意为可扩展标记语言&#xff0c;被多数技术人员用以选择…

Java - XML文件解析

Java对XML文件的解析 一、前言二、实例分析 - DOM方式解析XML文件2.1 XMLDomParseUtil - 抽象工具类2.2 待解析xml文件示例2.3 解析xml文件2.3.1 新建一个用于存储xml文件中各节点的属性和属性值的类2.3.2 解析实际节点 2.4 测试 一、前言 1、HTTP网络传输中的数据组织方式有三…

Java解析XML文件的方式

在项目里&#xff0c;我们往往会把一些配置信息放到xml文件里&#xff0c;或者各部门间会通过xml文件来交换业务数据&#xff0c;所以有时候我们会遇到“解析xml文件”的需求。一般来讲&#xff0c;有基于DOM树和SAX的两种解析xml文件的方式&#xff0c;在这部分里&#xff0c;…

java解析xml格式的节点属性值

xml示例&#xff1a; <ResponseContent><Parameter><Document><RecordSet id"1"><Master name"purchase"><Record><Field name"orderNumber" value"1P05-151200172"/><Field name"…

Java解析XML字符串

在网上找了很多Java语言解析XML字符串的资料&#xff0c;很多内容写得很繁复&#xff0c;没有普适性&#xff0c;遂自己动手写了一个用Java解析XML的工具类。话不多说&#xff0c;直接看下面代码&#xff1a; XML解析工具类&#xff1a; import org.dom4j.Document; import o…

JAVA解析xml报文

目录 问题需求 响应报文格式 1&#xff0c;开发导入的依赖 2&#xff0c;开发样例 3&#xff0c;测试结果 问题需求 在工作中此项目请求指定项目之后&#xff0c;项目会返回一个xml报文格式的响应&#xff0c;此时我需要判断返回的报文是否是成功的响应报文&#xff0c;如…

Java解析xml

记录工作中遇到的一些问题和解决方式&#xff0c;自己摘抄整理了一下用来巩固&#xff0c;如有不足或有更好的方式 欢迎交流。 java解析xml的话有四种方式&#xff0c;分别为DOM,SAX,DOM4J,JDOM 转载&#xff1a;Java解析XML(4种方法)_蓝星花的博客-CSDN博客_java解析xml 这里的…

Java解析XML(4种方法)

xml文件 <?xml version"1.0" encoding"utf-8" ?> <class><student><firstname>cxx1</firstname><lastname>Bob1</lastname><nickname>stars1</nickname><marks>85</marks></stud…

混合开发架构|Android工程集成React Native、Flutter、ReactJs

混合开发架构|Android工程集成React Native、Flutter、ReactJs 架构设计说明创建安卓原生工程创建Flutter集成嵌入原生工程 创建React Native解决RN报错问题集成嵌入原生工程RN集成后&#xff0c;启动报错 底部导航栏架构设计原生仿招商银行首页原生Android Socket 即时通讯Rea…

Android MVVM开发框架

MVVM 数据双向绑定&#xff0c;通过数据驱动UI&#xff0c;M提供数据&#xff0c;V视图&#xff0c;VM即数据驱动层 MVP框架图 &#xff08;图片来源于网络&#xff09; 学习MVVM开发框架&#xff0c;要先了解DataBinding&#xff0c;DataBinding 是什么&#xff1f; DataBi…

Android: 开发框架设计

Android 开发框架 Android运用框架的目的不外乎是实现代码的代码解耦、逻辑分类、快速集成 便于维护等目的&#xff1b;Android 开发架构从早期的MVC &#xff0c;到近年到MVP 架构&#xff0c;到最近流行到MVVM 架构。不断到对业务逻辑、代码结构进行分层&#xff0c;便于快速…

安卓框架

http://www.cnblogs.com/jincheng-yangchaofan/articles/7018780.html 框架&#xff1a;提供一定能力的小段程序 一.榜单介绍 排行榜包括四大类&#xff1a; 单一框架&#xff1a;仅提供路由、网络层、UI层、通信层或其他单一功能的框架 混合开发框架&#xff1a;提供开发hy…

安卓应用开发顶级框架大盘点,总有一款适合你

作者 | Slava Vaniukov 译者 | 苏本如&#xff0c;责编 | 夕颜 封图 | CSDN下载自视觉中国 出品 | CSDN&#xff08;ID:CSDNnews&#xff09; 随着软件开发向移动应用的转变&#xff0c;越来越多的企业意识到&#xff0c;移动应用程序对于企业和客户之间建立牢固的联系至关重要…

嵌入式Android底层开发(一)——安卓开发的整体框架与简述

一、Android简介 Android是一种基于Linux内核&#xff08;不包含GUN组件&#xff09;的自由及开放源代码的操作系统&#xff0c;主要使用于移动设备&#xff0c;如智能手机和平板电脑&#xff0c;由美国Google公司和开放手机联盟领导及开发。 主要参数表&#xff1a; 参数上…

Android 框架

背景 我们有一个需求&#xff1a;我们需要查询用户账号信息&#xff0c;用户输入账号&#xff0c;点击按钮可进行查询账号信息&#xff0c;如果查询数据成功&#xff0c;则将数据展示在界面上&#xff1b;如果查询数据失败&#xff0c;则在界面上提升获取数据失败。 假如说我们…

Android - 框架使用

目录 1 Gson解析JSON 1.1 引入依赖 1.2 使用 1.3 安装插件 1.4 Demo 2 下滑刷新&#xff0c;上滑加载新数据 2.1 背景 2.2 引入依赖 2.3 代码实现 3 加载网络图片 3.1 背景 3.2 引入依赖 3.3 代码实现 4 轮播图 4.1 引入依赖 4.2 代码实现 5 网络数据请求 Re…

Android 快速开发框架 集成框架

由于自己经常写项目&#xff0c;没有一个方便开发的一套框架怎么行&#xff0c;所以在日常开发总自己整理了一套&#xff0c;请各位过目&#xff0c;不喜勿喷。一个新项目搭建需要具备的环境:先导入我制作的jar包。添加必要的权限。需要一个Application初始化数据,下面开始调用…

Android应用-开发框架设计

目录 1. &#x1f4c2; 简介 1.1 背景 1.2 专业术语 2. &#x1f531; 总体设计思想 2.1 分层&#xff1a;组件化设计框架 2.2 分类&#xff1a;应用开发架构图 3. ⚛️ 框架详细设计 3.1 组件化框架外形 3.2 业务模块化 3.3 代码编程框架 4. &#x1f4a0; 框架其他…