数据库-基础篇-6-多表查询(内连接、外连接、自连接)

news2025/7/13 5:27:00

一、多表关系

1.概述:项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构也存在着各种联系,基本上分为三种:

·一对多(多对一)

·多对多

·一对一

·一对多(多对一)

  案例:部门与员工之间的关系

  关系:一个部门对应着多个员工,一个员工对应一个部门

  实现:在多的一方建立外键,指向一的一方的主键

·多对多

  案例:学生与课程的关系

  关系:一个学生可以选秀多门课程,一门课程也可以供多个学生选择

  实现:建立第三张中间表,中间至少包含两个外键,分别关联两方主键

·一对一

  案例:用户与用户详情的关系

  关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其它详情字段放在另一张表中,以提升操作效率

  实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(unique) 

二、多表查询概述

1.概述:指从多张表中查询数据

2.笛卡尔积:笛卡尔乘积是指在数学中,两个集合A集合和B集合的所有组合情况。(多表查询时,需要消除无效的笛卡尔积)

例如:

而我只想要金庸总经办那条出现就可以了该怎么办?加条件where

改为select * from emp,dept where emp.dept_id=dept.id;即可

多表查询分类  

三、内连接

内连接查询的是两张表交集的部分

内连接查询语法:

·隐式内连接:select 字段列表 from 表1,表2 where 条件;

·显式内连接:select 字段列表 from 表1[inner] join 表2 on 连接条件...;

四、外连接

外连接查询语法:

·左外连接:select 字段列表 from 表1 left [outer] join 表2 on 条件...;

相当于查询表1(左表)的所有数据包含表1和表2交集部分的数据

·右外连接:select 字段列表 from 表1 right [outer] join 表2 on 条件...;

相当于查询表2(右表)的所有数据包含表1和表2交集部分的数据

 

六、自连接

语法:select 字段列表 from 表A 别名A join 表A 别名B on 条件...;

自连接查询,是自己连接自己进行查询,可以是内连接查询,也可以是外连接查询。

七、联合查询-union,union all

对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集 

 语法:

select 字段列表 from 表A...

union[all]

select 字段列表 from 表B...;

注意事项:

①对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。

②union all会将全部的数据直接合并在一起,union会对合并后的数据去重。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/396131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea中 使用git实现远程仓库master分支和dev分支互相合并

一 新建dev分支 1.在右下角当前分支下,选择创建分支选项 2.给分支起名字 3.创建后,自动切换成新分支 4.将dev分支内容提交到远程dev仓库 进行add,commit,pull,push操作。 1commit操作 2.进行pull操作,远…

浅析CSRF跨域读取型漏洞之CORS

目录 前提知识 CORS介绍 跨域访问的一些场景 跨域请求方式 漏洞原理 非简单请求的预检过程 安全隐患 漏洞复现 挖掘技巧 防御 前提知识 CORS介绍 H5提供的一种机制,WEB应用程序可以通过在HTTP增加字段来告诉浏览器,哪些不同来源的服务器是有权…

7天收割10个offer,软件测试面试题 (项目经验问题+回答)(超级全细)

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 1、简单介绍下最近做…

Android Vsync原理简析

屏幕渲染原理"现代计算机之父"冯诺依曼提出了计算机的体系结构: 计算机由运算器,存储器,控制器,输入设备和输出设备构成,每部分各司其职,它们之间通过控制信号进行交互。计算机发展到现在,已经出…

E90-DTU系列无线数传电台网关与节点4gDTU通信教程

以E90-DTU(400SL22-ETH)与E90-DTU(400SL22)为例实现网关与节点进行数据交换,其它频段或功率的网关/节点,其操作方式与该视频教程一致。 第一步【安装网关】 为网关安装天线电源模块。 第二步【调试网关】(根据连接方式不同,配置方…

【java】Java 重写(Override)与重载(Overload)

文章目录重写(Override)方法的重写规则Super 关键字的使用重载(Overload)重载规则实例重写与重载之间的区别总结重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于…

城市通电(prim算法)

acwing3728 蓝桥杯集训每日一题 平面上遍布着 n 座城市,编号 1∼n。 第 i 座城市的位置坐标为 (xi,yi) 不同城市的位置有可能重合。 现在要通过建立发电站和搭建电线的方式给每座城市都通电。 一个城市如果建有发电站,或者通过电线直接或间接的与建…

重温数据结构与算法之深度优先搜索

文章目录前言一、实现1.1 递归实现1.2 栈实现1.3 两者区别二、LeetCode 实战2.1 二叉树的前序遍历2.2 岛屿数量2.3 统计封闭岛屿的数目2.4 从先序遍历还原二叉树参考前言 深度优先搜索(Depth First Search,DFS)是一种遍历或搜索树或图数据结…

数据结构(七)优先级队列——堆

一、优先级队列概念队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该中场景下,使用队列显然不合适,比如&#xff1…

前端秘籍之=>八股文经卷=>(原生Js篇)【持续更新中...】

大家好,最近想了想,打算总结归纳一版前端八股文经卷,给大家提供学习参考,如果帮助到大家,请大家,一键三连支持一下,你们的支持会激励我更加努力的更新更多有用的知识,博主先在这里谢…

ONLYOFFICE中利用chatGPT帮助我们策划一场生日派对

近日,人工智能chatGPT聊天机器人爆火,在去年年底发布后,仅仅两个月就吸引了全球近一亿的用户,成为史上最快的应用消费程序,chatGPT拥有强大的学习和交互能力 可以被学生,教师,上班族各种职业运…

C++复习笔记1

字符串 字符串的输入 面向行输入:getline() 通过回车键来确定输入结尾,调用方法为cin.getline() 面向行的输入:get() 处理换行符方法: cin.get(name,20); cin.get(); cin.get(nn,20); 或者将两个类成员函数拼接起来 混合输入…

超赞,用python实现流媒体服务器功能,寥寥几句搞定。

步骤: 要使用Python将实时摄像机传送流写入H5页面,可以使用以下步骤。 1、安装必要的软件包。您需要安装OpenCV和Flask以及gunicorn 与 gevent 。您可以通过在终端中运行以下命令来执行此操作。 pip install opencv-python pip install Flask pip ins…

buu [HDCTF2019]together 1

题目描述: 给了4个文件 pubkey2.pem:-----BEGIN PUBLIC KEY----- MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQB1qLiqKtKVDprtSNGGN q7jLqDJoXMlPRRczMBAGJIRsz5Dzwtt1ulr0s5yu8RdaufiYeU6sYIKk92b3yygL FvaYCzjdqBF2EyTWGVE7PL5lh3rPUfxwQFqDR8EhIH5xOb8rjlkftI…

SQL的优化思路和使用规范

1、索引优化 1.1 建表或加索引时,保证表里互相不存在冗余索引。 对于MySQL来说,如果表里已经存在key(a,b),则key(a)为冗余索引,需要删除。 1.2 复合索引 建立索引时,多考虑建立复合索引,并把区分度最高…

基于Django4.1.4的入门学习记录

基于Django4.1.4的入门学习记录Django创建Django项目创建工程工程目录说明运行开发服务器settings.py配置文件应用的创建创建应用模块应用模块文件说明App应用配置注册安装子应用数据模型ORM概述定义模型类生成数据库表查看数据库文件Admin管理工具管理界面本地化创建管理员注册…

STM32CubeMX使用说明

目录1 软件安装1.1 软件&环境下载1.1.1 STM32CubeMX软件下载1.1.2 Java环境下载1.2 安装1.2.1 Java环境安装1.2.2 STM32CubeMX软件安装2 软件启动与安装库文件2.1 软件界面2.2 修改默认库文件路径2.3 在线安装固件库3 新建第一个工程3.1 新建工程3.2 选择MCU型号3.3 设置De…

30min入手正则表达式

限定符a* a出现任意次a a出现次数不为0a?a出现(1)或不出现a{n}a出现n次a{n,nx}a出现在n——nx次a{2,}a至少出现2次或运算符(a|b)a或者b中选一个(ab)|(cd)ab或…

安卓反编译入门04-对反编译重新打包的APK进行重新签名

重签的前提需要安装java环境,我电脑安装的地址:C:\Program Files\Java\.重签的文件目录地址要在jdk的bin目录.进入命令行,执行 cd/d C:\Program Files\Java\jdk1.8.0_181\bin(注意,由于这个文件C:\Program Files要用管理员权限才能…

HBaseAPI——IDEA操作HBase数据库HBase与Hive的集成

目录 一、IDEA操作HBase数据库 (一)添加依赖 (二)配置log4j (三)IDEA连接HBase并插入数据 1.代码实现 2.查看命名空间的表 (四)java操作HBase数据库——单元测试 1.导包 2.初始化 3.关闭连接 4.创建命名空间 5.创建表 6.删除命名空间下的指定表 7.查看所有的命…