MySQL数据操作与查询(第七章 上)
Posted m0_58827096
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据操作与查询(第七章 上)相关的知识,希望对你有一定的参考价值。
上一节我们学习了聚合函数和分组查询,这一节我们讲连接查询。
连接查询
- 连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理。
- 连接查询分为内连接和外连接。
内连接查询
- 内连接基于连接谓词,它将两张表 ( 如A 和 B) 的列组合在一起,产生新的结果表。
- 内连接查询会将 A 表的每一行和 B 表的每一行进行比较,并找出满足连接谓词的组合。当连接谓词被满足,A 和 B 中匹配的行会按列组合(并排组合)成结果集中的一行。
- 内连接分 3 种:交叉连接、相等连接和自然连接。
内链接语法
语法说明:
- fieldlist:table1 表和 table2 表中的字段列。如果 fieldlist 取两张表所有列,则可用“*”代替,此时会出现连接依据列重复,即 table1 表的 column1 与 table2 表的 column2 为重复列。
- table1 [INNER] JOIN table2:将 table1 表与 table2 表进行内连接,INNER 可省略。
- table1.column1=table2.column2:连接条件,其中 column1 和column2 为table1 表与table2 表的关联列,通常它们为外键列和主键列。
- “inner”可省略。
- “where condition”可省略,它为查询条件表达式。
交叉连接(笛卡尔积)
交叉连接(Cross Join),又称“笛卡尔连接(Cartesian Join)”或“叉乘(Product)”,它是所有类型的内连接的基础。
自然连接
- 自然连接 (Natural Join) 是一种特殊的内连接,它要求相连接的两张表的连接依据列必须是相同的字段(字段名相同,字段属性相同)。
- 在自然连接中两张表的所有名称相同的列都将被比较,并且在结果集中把重复的列去掉, 结果集中两张表中名称相同的列仅出现一次。而普通的内连接并不去掉重复的列。
语法如下:
多表连接查询
如果查询的信息来源于多张表,则可通过两两相连的方式建立多表连接查询。
三表连接查询的语法:
说明:
如果是三个表以上,使用的查询方法和三表连接查询的方法一样,均是通过两两相连的方式实现。
简单多表连接查询
如果在 FROM 子句中,直接列出所有要连接的表,然后在 WHERE 子句中指定连接条件,此为简单多表查询, 它与内连接功能相同。
使用两表连接查询语法:
使用三表连接查询语法:
总结
(1)内连接的定义是什么?有哪几种类型的内连接?
- 内连接基于连接谓词,它将两张表(如 A 和 B)的列组合在一起,产生新的结果表。具体过程是将 A 表的每一行和 B 表的每一行进行比较,并找出满足连接谓词的组合,当连接谓词被满足,A 和 B 中匹配的行会按列组合(并排组合)成结果集中的一行。
- 内连接分 3 种:交叉连接、相等连接和自然连接。
(2)多表连接查询和简单多表连接查询的语法是什么?
多表连接查询语法
SELECT fieldlist FROM table1 JOIN table2 ON table1.column1=table2.column2_1 JOIN table3 on table2.column2_2=table3.column3 [where condition]
简单多表连接查询语法
SELECT fieldlist FROM table1,table2,table3 where table1.column1=table2.column2_1 and table2.column2_2=table3.column3 [and 其他条件]
本节的内容就讲到这里,下一节我们继续讲外连接查询,我们下次再见。
以上是关于MySQL数据操作与查询(第七章 上)的主要内容,如果未能解决你的问题,请参考以下文章