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

【MySQL】学习多表查询和笛卡尔积

](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)

🌈个人主页: Aileen_0v0
🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
💫个人格言:“没有罗马,那就自己创造罗马~”

at one time '曾经,一度,同时'

文章目录

  • `多表查询`
  • `多表查询分类`
    • `连接查询`
      • <font face="小四" color="black" size=5>内连接:
      • <font face="小四" color="black" size=5>外连接:
      • <font face="小四" color="black" size=5>自连接:
    • `字查询`
  • `总结`

多表查询

指的是从多张表中查询数据

  • 首先准备好需要查询的数据表 - dept表 和 emp表
-- 准备数据
create table dept(id int auto_increment comment 'ID' primary key ,name varchar(50) not null comment '部门名称'
)comment '部门表';
insert into  dept(id, name) VALUES (1,'研发部'),(2,'市场部'),(3,'财务部'),(4,'销售部'),(5,'总经办'),(6,'人事部');create table emp(id int auto_increment comment 'ID' primary key ,name varchar(50) not null comment '姓名',age int comment '年龄',job varchar(20) comment '职位',salary int comment '薪资',entrydate date comment '入职时间',managerid int comment '直属领导ID',dept_id int comment '部门ID'
)comment '员工表';insert into emp (id, name, age, job, salary, entrydate, managerid, dept_id) VALUES(1,'金庸',66,'总裁',2000,'2000-01-01',null,5),(2,'张无忌',20,'项目经理',12500,'2005-12-05',1,1),(3,'杨逍',33,'开发',8400,'2000-11-03',2,1),(4,'韦一笑',48,'开发',11000,'2002-02-05',2,1),(5,'常遇春',43,'开发',10500,'2004-09-07',3,1),(6,'小昭',19,'程序员鼓励师',6600,'2004-10-12',2,1),(7,'灭绝',60,'财务总监',8500,'2002-09-12',1,3),(8,'周芷若',19,'会计',48000,'2006-06-02',7,3),(9,'丁敏君',23,'出纳',5250,'2009-05-13',7,3),(10,'赵敏',20,'市场部总监',12500,'2004-10-12',1,2),(11,'鹿杖客',56,'职员',3750,'2006-10-03',10,2),(12,'鹤笔翁',19,'职员',3750,'2007-05-09',10,2),(13,'方东白',19,'职员',5500,'2009-02-12',10,2),(14,'张三丰',88,'销售总监',14000,'2004-10-12',14,4),(15,'俞莲舟',38,'销售',4600,'2004-10-12',14,4),(16,'宋远桥',40,'销售',4600,'2004-10-12',14,4),(17,'陈友谅',42,null,2000,'2011-10-12',1,null);-- 添加外键将两张表进行关联
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);

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

-- 多表查询 - 笛卡尔积
select * from emp , dept ;

在这里插入图片描述

  • 笛卡尔积:笛卡尔乘积是指在数学中,两个集合 A 集合和 B集合的所有组合情况。(在多表查询时,需要消除无效的笛卡尔积)—>17*6 = 102 所以我们可以看到102条记录
    在这里插入图片描述
如何消除无效的笛卡尔积?
我们可以通过emp表中的外键和dept的id建立连接,我们只需要在原来基础上加上条件即可
-- 多表查询 - 通过where添加条件,消除无效的笛卡尔积
select * from emp , dept where emp.dept_id = dept.id ;

在这里插入图片描述

通过控制台运行结果我们可以发现我们明明有17个员工而查询到的结果只有16条,这是为什么呢? 这是因为我们的陈友谅这个员工是刚来的员工还没有给他分配部门。👇

在这里插入图片描述

多表查询分类

连接查询

内连接:

相当于查询A、B交集部分数据

外连接:

左外连接:查询 左表 所有数据,以及两张表交集部分数据
右外连接:查询 右表 所有数据,以及两张表交集部分数据

自连接:

当前表与自身的连接查询,自连接必须使用表别名。

字查询

在这里插入图片描述

总结

在这里插入图片描述
](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)

](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)

相关文章:

  • 2402C++,C++26包索引
  • C#,数值计算,矩阵的行列式(Determinant)、伴随矩阵(Adjoint)与逆矩阵(Inverse)的算法与源代码
  • ES实战--wildcard正则匹配exists过滤字段是否存在
  • JavaScript:JSON、三种包装类
  • 在SpringBoot中@PathVariable与@RequestParam的区别
  • IO线程-day1
  • compile error ESP32cam.h no such file or directory
  • sql常用语句小结
  • 服务器防火墙设置教程
  • SQL查询数据是否存在
  • 5G网络eMBB、uRLLC、mMTC
  • 【手写数据库toadb】数据字典缓存的实现方法和接口分享,面向对象设计思想,接口单一化
  • Sentinel注解@SentinelResource详解
  • springboot197基于springboot的毕业设计系统的开发
  • LeetCode 0429.N 叉树的层序遍历:广度优先搜索(BFS)
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • CSS 三角实现
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaScript 一些 DOM 的知识点
  • Laravel5.4 Queues队列学习
  • magento 货币换算
  • Python3爬取英雄联盟英雄皮肤大图
  • SQLServer之创建数据库快照
  • Travix是如何部署应用程序到Kubernetes上的
  • 半理解系列--Promise的进化史
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 微信小程序设置上一页数据
  • const的用法,特别是用在函数前面与后面的区别
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #HarmonyOS:Web组件的使用
  • #WEB前端(HTML属性)
  • $$$$GB2312-80区位编码表$$$$
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (C语言)共用体union的用法举例
  • (libusb) usb口自动刷新
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (ZT)出版业改革:该死的死,该生的生
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (一)Linux+Windows下安装ffmpeg
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)iOS字体
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET连接MongoDB数据库实例教程
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [C++基础]-初识模板
  • [CentOs7]图形界面
  • [Java][算法 双指针]Day 02---LeetCode 热题 100---04~07
  • [LeetCode] Merge Two Sorted Lists
  • [linux学习]apt-get参数解析
  • [Lua实战]整理Lua中忽略的问题