MySQL 必知必会
朱晓峰
前摩根大通银行技术部副总裁、系统架构师
立即订阅
1040 人已学习
课程目录
已更新 8 讲 / 共 34 讲
0/4登录后,你可以任选4讲全文学习。
课前准备 (2讲)
开篇词 | 在实战中学习,是解锁MySQL技能的最佳方法
免费
环境准备 | 带你安装MySQL和图形化管理工具Workbench
实践篇 (6讲)
01 | 存储:一个完整的数据存储过程是怎样的?
02 | 字段:这么多字段类型,该怎么定义?
03 | 表:怎么创建和修改表?
04 | 增删改查:如何操作表中的数据?
05 | 主键:如何正确设置主键?
06 | 外键和连接:如何做关联查询?
MySQL 必知必会
15
15
1.0x
00:00/00:00
登录|注册

06 | 外键和连接:如何做关联查询?

朱晓峰 2021-03-20
你好,我是朱晓峰。今天我来和你聊一聊关联查询的问题。
在实际的数据库应用开发过程中,我们经常需要把 2 个或 2 个以上的表进行关联,以获取需要的数据。这是因为,为了提高存取效率,我们会把不同业务模块的信息分别存放在不同的表里面。但是,从业务层面上看,我们需要完整全面的信息为经营决策提供数据支撑。
就拿咱们的超市项目来说,数据库里面的销售流水表一般只保存销售必需的信息(比如商品编号、数量、价格、金额和会员卡号等)。但是,在呈现给超市经营者的统计报表里面,只包括这些信息是不够的,比如商品编号、会员卡号,这些数字经营者就看不懂。因此,必须要从商品信息表提取出商品信息,从会员表中提取出会员的相关信息,这样才能形成一个完整的报表。这种把分散在多个不同的表里的数据查询出来的操作,就是多表查询
不过,这种查询可不简单,我们需要建立起多个表之间的关联,然后才能去查询,同时还需要规避关联表查询中的常见错误。具体怎么做呢?我来借助实际的项目给你讲一讲。
在我们项目的进货模块,有这样 2 个数据表,分别是进货单头表(importhead)和进货单明细表(importdetails),我们每天都要对这两个表进行增删改查的操作。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《MySQL 必知必会》,如需阅读全部文章,
请订阅文章所属专栏
立即订阅
登录 后留言

精选留言(7)

  • lesserror
    外键约束,可以简单有效的保证数据的可靠性。适合内部管理系统使用,因为访问量不会太大。如果是面向外界用户使用的应用,外键所带来的性能损耗,可能无法支撑大批用户的同时访问。

    但是,数据的可靠性和唯一性才是最重要的,在保证一次对多张表操作的过程中,可以使用事务来确保操作的一致性。

    作者回复: 在系统开销和使用的功能之间需要做好平衡,既要确保数据可靠性和唯一性,又要确保系统可用

    2021-03-20
    2
  • ple
    回答问题觉得可以不在数据库里做,使用事物让操作变成原子操作。
    2021-03-20
    2
  • 右耳朵猫咪
    文中说“左连接,一般简写成 LEFT JOIN,返回左边表中的所有记录,以及右表中符合连接条件的记录。”感觉不太准确,应该是不管连接条件是否满足,都会返回,如果符合连接条件,就返回右表对应的记录,如果不符合连接条件,就标注为null。

    作者回复: 这里的意思是指返回的数据记录,返回左表的全部记录,以及右表中符合连接条件的记录,如果不符合连接条件,MySQL会返回NULL

    2021-03-22
    1
  • peter
    不考虑应用层面,只考虑数据库层面,没有外键能进行关联查询吗?(或者这样说: 没有外键,在数据库层面用SQL语句能进行关联查询吗?

    作者回复: 可以,请看06篇。考虑到数据一致性,在数据表比较多时尽量还是设置外键,查询更方便。

    2021-03-20
    1
  • Harry

    交作业:

    1、用一张宽表来记录主表和从表(不存在连接查询)
    2、删除主表数据前检查从表(效率低)
    2021-03-22
  • Harry

    “连接可以通过相同意义的字段把 2 个表连接起来”
    这里是指外键字段和主键字段的名称、类型必须完全一致吗?

    随着表中数据日益剧增,最好不要在数据库层面创建关联关系,因为连接查询会产生巨大的系统开销。那么如何在应用层面实现外键约束的功能呢?

    此外,如果不使用外键,那么在使用一些 ORM 框架进行连接查询时也不太方便,无法完全发挥出这些框架的威力。
    2021-03-22
  • 陈启年
    老师,在进行多表关联查询时,我有几个问题:
    - join关键字可以叠加多次使用吗?
    - left join和right join可以叠加多次使用吗?如果可以的话,那怎么理解他们的含义呢(因为两者是相斥的关系)?

    谢谢
    2021-03-22
收起评论
7
返回
顶部