在多表查询中,一些SQL开发人员更喜欢使用WHERE来做join,比如:

SELECT a.ID, b.Name, b.Date FROM Customers a, Sales b WHERE a.ID = b.ID;

缺点:在上面语句中,实际上是创建了两张表的笛卡尔积,所有可能的组合都会被创建出来。在笛卡尔连接中,在上面的例子中,如果有1000顾客和1000条销售记录,这个查询会先产生1000000个结果,然后通过正确的 ID过滤出1000条记录。 这是一种低效利用数据库资源,数据库多做100倍的工作。 在大型数据库中,笛卡尔连接是一个大问题,对两个大表的笛卡尔积会创建数10亿或万亿的记录。

为了避免创建笛卡尔积,应该使用INNER JOIN :

SELECT a.ID, b.Name, b.Date FROM Customers a INNER JOIN Sales b ON a.ID = b.ID;

优点:如上面语句,使用inner join 这样数据库就只产生等于ID 的1000条目标结果。增加了查询效率。

有些数据库系统会识别出 WHERE连接并自动转换为 INNER JOIN。在这些数据库系统中,WHERE 连接与INNER JOIN 就没有性能差异。但是, INNER JOIN 是所有数据库都能识别的,因此DBA会建议在你的环境中使用它。

INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

注意:
1、INNER JOIN 等同于 JOIN;
2、示意图:

数据库多表查询之 where INNER JOIN相关推荐

  1. mysql数据库多表查询(内连接,外连接,自连接,子查询及案例分析)

    mysql数据库多表查询 之前接触的项目或者自己涉及的部分对于多表查询的使用都比较的少,常常是自己更具案例进行学习,最近见到的比较的多,所以今天就好好的总结一下,为下一步学习做准备! 1.多表查询关系 ...

  2. MySQL数据库多表查询

    MySQL数据库多表查询 前言 在之前的文章MySQL数据库之SQL入门中,我们讲到了四类SQL中的DQL(数据库查询语言,用于查询表中数据),但是我仅仅用DQL去查询一张表中数据,而在实际的应用中, ...

  3. Oracle数据库—— 多表查询

    Oracle数据库-- 多表查询 (一)笛卡尔问题 1.笛卡尔积会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 2.为了避免笛卡尔积,可以在WHERE加入有效的连接条件 ( ...

  4. 面向考试数据库—单表查询(包含建表数据)

    面向考试数据库-单表查询(包含建表数据) 引言 ● 建立练习数据库(之后习题亦是基于该库) 建表源码 单表查询知识点汇总 单表查询练习题32道 (1)选取表中的若干列 (2)选择表中若干元祖 (3)o ...

  5. access查询mysql_2017计算机二级Access数据库生成表查询教程

    2017计算机二级Access数据库生成表查询教程 引导语;你知道运用Access数据库如何查询生成表吗,以下是百分网小编分享给大家的2017计算机二级Access数据库生成表查询教程,欢迎阅读! 生 ...

  6. 数据库系统概论 实验报告答案 实验五:数据库单表查询

    实验五:数据库单表查询 一.实验目的 1. 掌握SELECT语句的基本语法和查询条件表示方法: 2. 掌握查询条件表达式和使用方法: 3. 掌握GROUP BY 子句的作用和使用方法: 4. 掌握HA ...

  7. 数据库单表查询 - 简单筛选查询

    写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...

  8. android连接mysql查询表内记录_Android Room数据库多表查询的使用实例

    前言 在SQLite数据库中,我们可以指定对象之间的关系,因此我们可以将一个或多个对象与一个或多个其他对象绑定.这就是所谓的一对多和多对多的关系. 既然要多表查询,所以表之间就得有关联.这时候我们就得 ...

  9. MySQL之数据库多表查询

    ------·今天距2020年41天·------ 这是ITester软件测试小栈第81次推文 SELECT 子查询 子查询( subquery)即嵌套查询 ,嵌套在其他查询中的查询. 查询粉丝数大于 ...

  10. mysql数据库多表查询教程

    SQL会创建多表及多表的关系 需求: 分类表和商品表之间是不是有关系?如果有关系,在数据库中如何表示这种关系 ... 表结构请参考上一章 mysql单表查询. 技术分析: 多表之间的关系如何来维护 外 ...

最新文章

  1. python单词大全-学Python必须背的42个常见单词
  2. Java代码实现执行HTTP请求
  3. Android Studio开发基础之启动Service,并通过从Activity向Service传递数据
  4. 构造函数怎么在主函数调用_C++ 虚基类及其派生类构造函数(学习笔记:第7章 12)...
  5. [Redux/Mobx] Context api可以取代Redux吗?为什么?
  6. cocos creator 方法数组_基于 Cocos 游戏引擎的音视频研发探索
  7. 简约黑板擦表白特效网源码
  8. 通用的实时数仓构建方法与实践
  9. 【转】小屁孩, 懂个啥
  10. 开发是在什么部门办理_房产证办理流程是什么?办理房产证需要缴纳哪些费用?...
  11. rs232接口_、 迪文串口屏TTL与主控板RS232电平信号转换方案
  12. 无需插件利用Chrome将网页储存为mht文件
  13. 卷积的感受野计算及特征图尺寸计算
  14. 素数II题解(素数筛)
  15. Tbase 源码 (五)
  16. 学医后才知道的小知识...
  17. 【JavaSE】Java方法练习题
  18. mysql 导出gtid_mysqldump导出时 --set-gtid-purged=OFF
  19. resnet_unetpp
  20. 大理石在哪儿_创建大理石样式CSS3导航菜单

热门文章

  1. bilibili老版本_哔哩哔哩5.13.0旧版本下载-bilibili5.13.0旧版本下载v5.13.0旧版本-西西软件下载...
  2. Samsung GT-P5100刷andorid 4.3
  3. 制作粉色少女系列❤生日快乐祝福网页❤(HTML+CSS+JS)
  4. 精通JavaScript攻击框架:AttackAPI(上)
  5. Could not mount the media/drive ‘D:\......./VBoxGuestAdditions.iso‘ (VERR_PDM_MEDIA_LOCKED)
  6. 计算机病毒与恶意代码期末总结
  7. Unity3D 游戏资源提取工具
  8. C语言写俄罗斯方块,可上机运行
  9. 练习:《斗鱼视频》m3u8流视频采集下载+思路+Python
  10. 小米随身wifi驱动linux驱动下载,小米随身WIFI驱动|小米WIFI驱动官方最新版(支持Win10)...