MySQL最后一章小知识分享(大家走过路过不要错过)

连接查询

内连接查询

1.查询信息的来源如果来自多张表,则必须对这些表进行连接查询。
2.连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理。
3.连接查询分为内连接和外连接。

交叉连接(笛卡尔积)

  • 交叉连接(Cross Join),又称“笛卡尔连接(Cartesian Join)”或“叉乘(Product)”,它是所有类型的内连接的基础。
  • 如果把表视为行记录的集合,那么交叉连接即返回这两个集合的笛卡尔积,返回到结果集合中的数据行数等于第一张表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。

内连接查询概要

  • 内连接基于连接谓词,它将两张表 ( 如A 和 B) 的列组合在一起,产生新的结果表。
  • 内连接查询会将 A 表的每一行和 B 表的每一行进行比较,并找出满足连接谓词的组合。当连接谓词被满足,A 和 B 中匹配的行会按列组合(并排组合)成结果集中的一行。
  • 内连接分 3 种:交叉连接、相等连接和自然连接。

内链接的语法
SELECT fieldlist FROM table1 [INNER] JOIN table2
ON table1.column1=table2.column2
[where condition]
注意
连接依据的列可能包含 null 值,null 值不与任何值匹配(甚至和它本身)。

自然链接

  • 自然连接 (Natural Join) 是一种特殊的内连接,它要求相连接的两张表的连接依据列必须是相同的字段(字段名相同,字段属性相同)。
  • 在自然连接中两张表的所有名称相同的列都将被比较,并且在结果集中把重复的列去掉, 结果集中两张表中名称相同的列仅出现一次。而普通的内连接并不去掉重复的列。
  • 部分数据库不支持自然连接, 如 SQL Server 等。

语法
SELECT fieldlist FROM table1 NATURAL JOIN table2 [where condition]

多表连接查询

如果查询的信息来源于多张表,则可通过两两相连的方式建立多表连接查询。

语法
SELECT fieldlist FROM table1 JOIN table2 ON table1.column1=table2.column2_1 JOIN
table3
ontable2.column2_2=table3.column3 [where condition]

简单多表连接查询

如果在 FROM 子句中,直接列出所有要连接的表,然后在 WHERE 子句中指定连接条件,此为简单多表查询, 它与内连接功能相同。

使用两表连接查询语法:
SELECT fieldlist FROM table1, table2WHERE table1.column1=table2.column2 [and 其他条件]

使用三表连接查询语法:
SELECT fieldlist FROM table1,table2,table3 WHERE table1.column1=table2.column2_1 and table2.column2_2=table3.column3 [and 其他条件]

外连接查询

  • 在内连接查询中,只有满足连接条件的记录才能出现在查询结果中。但在实际应用中,如果希望不满足连接条件的记录也在查询结果中出现,这时需要使用外连接查询。
  • 根据不同的外连接形式,外连接所生成的结果集中不仅包含符合条件的数据记录,还包含左表或右表或左右表中所有的数据记录。

语法
SELECT 字段名称 FROM 表名 1 LEFT|RIGHT|FULL [OUTER] JOIN 表名 2ON 表名 1. 字段名 1= 表名 2. 字段名 2

左外连接(LEFT JOIN)
左外连接的结果集包括左表的所有记录和右表中满足连接条件的记录,结果集中那些不符合连接条件的来源于右表的列值为 null。

右外连接(RIGHT JOIN)

右外连接是左外连接的反向连接。右外连接的结果集包括右表的所有记录和左表中满足连接条件的记录,结果集中那些不符合连接条件的来源于左表的列值为 null。

MySQL的知识分享到这里就告一段落了,接下来我们会继续分享Java基础知识,我们下次再见咯!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值