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

这篇具有很好参考价值的文章主要介绍了【MySQL】学习多表查询和笛卡尔积。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【MySQL】学习多表查询和笛卡尔积,MySQL自学篇,mysql,学习,数据库,android,性能优化

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

多表查询

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

  • 首先准备好需要查询的数据表 - 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);

【MySQL】学习多表查询和笛卡尔积,MySQL自学篇,mysql,学习,数据库,android,性能优化
【MySQL】学习多表查询和笛卡尔积,MySQL自学篇,mysql,学习,数据库,android,性能优化

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

【MySQL】学习多表查询和笛卡尔积,MySQL自学篇,mysql,学习,数据库,android,性能优化

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

【MySQL】学习多表查询和笛卡尔积,MySQL自学篇,mysql,学习,数据库,android,性能优化

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

【MySQL】学习多表查询和笛卡尔积,MySQL自学篇,mysql,学习,数据库,android,性能优化

多表查询分类

连接查询

内连接:

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

外连接:

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

自连接:

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

字查询

【MySQL】学习多表查询和笛卡尔积,MySQL自学篇,mysql,学习,数据库,android,性能优化

总结

【MySQL】学习多表查询和笛卡尔积,MySQL自学篇,mysql,学习,数据库,android,性能优化
【MySQL】学习多表查询和笛卡尔积,MySQL自学篇,mysql,学习,数据库,android,性能优化

【MySQL】学习多表查询和笛卡尔积,MySQL自学篇,mysql,学习,数据库,android,性能优化文章来源地址https://www.toymoban.com/news/detail-825432.html

到了这里,关于【MySQL】学习多表查询和笛卡尔积的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Frenet坐标系及其与笛卡尔坐标的转换(2)——原理

    4.1.3 推导 s ˙ dot{s} s ˙ 由公式 (21) text{(21)} (21) 与公式 (28) text{(28)} (28) 可知: l ′ = ( 1 − κ r l ) ⋅ t a n ( Δ θ ) = v e s i n ( Δ θ ) s ˙ (29) l\\\' = (1-kappa_{r} l) cdot tan(Deltatheta) = frac {v_{e}sin(Deltatheta)}{dot{s}}tag{29} l ′ = ( 1 − κ r ​ l ) ⋅ t a n ( Δ θ ) = s ˙ v e ​ s i n ( Δ θ ) ​

    2024年02月03日
    浏览(84)
  • 大数据开发之Hive案例篇10-大表笛卡尔积优化

    需求描述: 表概述: 需要实现的需求 SQL代码: 运行日志: 从日志可以看到,数据倾斜了,redcue一直卡在99%不动,过一段时间就被断开了。 web页面日志: 从web页面可以看到,reduce被kill的原因是Container被ApplicationMaster给kill掉了 过一段时间整个Job都被kill掉了 因为reduce卡在了99%,所以

    2024年02月09日
    浏览(83)
  • 【Python】实战:生成多层嵌套笛卡尔积组合问卷 csv《感知觉与沟通评估表》

    目录 一、适用场景 二、业务需求  (1)原产品需求  (2)需求分析 

    2024年02月02日
    浏览(40)
  • 机器人在笛卡尔空间和关节空间的多项式轨迹规划以及matlab代码(三次、五次、七次)

    三次多项式轨迹规划就是s(t)相对于时间t的变化满足三次多项式变化,其表达式如下:                      如前文所述:t的取值范围是[0,T],s(t)的取值范围是[0,1], 又因为初始速度和末速度都为0,所以: S(t)的一阶导数表达式为: 从而可以计算出对应的系数: 将

    2024年01月17日
    浏览(41)
  • 体验文心一言AI大模型生成天津师范大学、中国科学技术大学、中北大学、伊利诺伊大学厄巴纳-香槟分校和巴黎笛卡尔大学报告

    天津师范大学是天津市属重点大学,位于天津市西青区宾水西道393号,简称“天师大”。天津师范大学入选教育部“卓越教师培养计划”、国家“特色重点学科项目”、”国家建设高水平大学公派研究生项目“、首批“新工科研究与实践项目”、“国家级大学生创新创业训练

    2024年02月16日
    浏览(35)
  • Cesium:CGCS2000坐标系的xyz坐标转换成WGS84坐标系的经纬高度,再转换到笛卡尔坐标系的xyz坐标

    作者:CSDN @ _乐多_ 本文将介绍使用 Vue 、cesium、proj4 框架,实现将CGCS2000坐标系的xyz坐标转换成WGS84坐标系的经纬高度,再将WGS84坐标系的经纬高度转换到笛卡尔坐标系的xyz坐标的代码。并将输入和输出使用 Vue 前端框架展示了出来。代码即插即用。 网页效果如下图所示, 一、

    2024年02月06日
    浏览(43)
  • 【MySQL系列】MySQL复合查询的学习 _ 多表查询 | 自连接 | 子查询 | 合并查询

    「前言」文章内容大致是对MySQL复合查询的学习。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 前面篇章讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够,下面将讲解复合查询,首先回顾一下基本的查询。 使用的数据库是之前篇章的雇

    2024年02月11日
    浏览(48)
  • [MySQL] MySQL复合查询(多表查询、子查询)

      前面我们学习了MySQL简单的单表查询。但是我们发现,在很多情况下单表查询并不能很好的满足我们的查询需求。 本篇文章会重点讲解MySQL中的 多表查询 、 子查询 和 一些复杂查询 。希望本篇文章会对你有所帮助。 文章目录 一、基本查询回顾 二、多表查询 2、1 笛卡尔积

    2024年02月04日
    浏览(35)
  • 连接查询(多表查询)——MySQL

    又称多表查询,当 查询的字段涉及多个表 的时候,就要用到连接查询 分类: 为表起别名: 提高语句的简洁度 区分多个重名字段 注意 :如果为表起了别名,则查询的字段就 不能使用原来的别名去限定 查询A、B 交集部分数据 语法: 隐式内连接 select 字段列表 from 表1,表

    2024年02月04日
    浏览(45)
  • MySQL表单查询以及多表查询

    1.单表查询 CREATE TABLE `emp`  (   `empno` int(4) NOT NULL,   `ename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,   `job` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,   `mgr` int(4) NULL DEFAULT NULL,   `hiredate` date NOT NULL,   `sai` int(255) NOT NULL,   `comm` int(255) NULL DEFAULT

    2024年02月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包