一.内连接查询
1.交叉连接(笛卡尔积)
2.内连接查询概要
3.内连接案例
4.自然连接
查询信息的来源如果来自多张表,则必须对这些表进行连接查询。
连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理。
连接查询分为内连接和外连接。
1.交叉连接(笛卡尔积)
交叉连接(Cross Join),又称“笛卡尔连接(Cartesian Join)”或“叉乘(Product)”,它是所有类型的内连接的基础。
如果把表视为行记录的集合,那么交叉连接即返回这两个集合的笛卡尔积,返回到结果集合中的数据行数等于第一张表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
2.内连接查询概要
内连接基于连接谓词,它将两张表 ( 如A 和 B) 的列组合在一起,产生新的结果表。
内连接查询会将 A 表的每一行和 B 表的每一行进行比较,并找出满足连接谓词的组合。当连接谓词被满足,A 和 B 中匹配的行会按列组合(并排组合)成结果集中的一行。
内连接分 3 种:交叉连接、相等连接和自然连接。
3.内连接的语法:
SELECT fieldlist FROM table1 [INNER] JOIN table2
ON table1.column1=table2.column2
[where condition]
语法说明:
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”可省略,它为查询条件表达式。
注意事项:
连接依据的列可能包含 null 值,null 值不与任何值匹配(甚至和它本身)。
4.自然连接
自然连接 (Natural Join) 是一种特殊的内连接,它要求相连接的两张表的连接依据列必须是相同的字段(字段名相同,字段属性相同)。
在自然连接中两张表的所有名称相同的列都将被比较,并且在结果集中把重复的列去掉, 结果集中两张表中名称相同的列仅出现一次。而普通的内连接并不去掉重复的列。
部分数据库不支持自然连接, 如 SQL Server 等。
语法:
SELECT fieldlist FROM table1 NATURAL JOIN table2
[where condition]
二.多表连接查询
多表连接查询方法
多表连接查询应用
简单多表连接查询
1.多表连接查询方法:
如果查询的信息来源于多张表,则可通过两两相连的方式建立多表连接查询 。
三表连接查询的语法
语法:
SELECT fieldlist FROM table1 JOIN table2 ON table1.column1=table2.column2_1 JOIN table3 on
table2.column2_2=table3.column3 [where condition]
说明:
table2 与 table1 和 table3 两两相连。
三表以上连接查询的方法与三表连接查询的方法一样,均是通过两两相连的方式实现。
2.简单多表连接查询
如果在 FROM 子句中,直接列出所有要连接的表,然后在 WHERE 子句中指定连接条件,此为简单多表查询 , 它与内连接功能相同 。
使用两表连接查询语法 :
语法
SELECT fieldlist FROM table1, table2
WHERE table1.column1=table2.column2 [and 其他条件]
3.使用三表连接查询语法:
SELECT fieldlist FROM table1,table2,table3
WHERE table1.column1=table2.column2_1 and table2.column2_2=table3.column3 [and 其他条件]
三.外连接查询
外连接查询概念
左外连接(LEFT JOIN)
右外连接(RIGHT JOIN)
1.外连接查询概念:
在内连接查询中,只有满足连接条件的记录才能出现在查询结果中。但在实际应用中,如果希望不满足连接条件的记录也在查询结果中出现,这时需要使用外连接查询。
根据不同的外连接形式,外连接所生成的结果集中不仅包含符合条件的数据记录,还包含左表或右表或左右表中所有的数据记录 。
语法
SELECT 字段名称 FROM 表名 1 LEFT|RIGHT|FULL [OUTER] JOIN 表名 2
ON 表名 1. 字段名 1= 表名 2. 字段名 2
2.左外连接(LEFT JOIN)
左外连接的结果集包括左表的所有记录和右表中满足连接条件的记录,结果集中那些不符合连接条件的来源于右表的列值为 null。
3.右外连接(RIGHT JOIN)
右外连接是左外连接的反向连接。右外连接的结果集包括右表的所有记录和左表中满足连接条件的记录,结果集中那些不符合连接条件的来源于左表的列值为 null。
四.总结
内连接的定义是什么?有哪几种类型的内连接 ?
内连接基于连接谓词,它将两张表(如 A 和 B)的列组合在一起,产生新的结果表。具体过程是将 A 表的每一行和 B 表的每一行进行比较,并找出满足连接谓词的组合,当连接谓词被满足,A 和 B 中匹配的行会按列组合(并排组合)成结果集中的一行。
内连接分 3 种:交叉连接、相等连接和自然连接。
多表连接查询和简单多表连接查询的语法是什么?
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 其他条件 ]
外连接查询的定义是什么?什么是左外连接 ?
在内连接查询中,只有满足连接条件的记录才能出现在查询结果中。但在实际应用中,如果希望不满足连接条件的记录也在查询结果中出现,这时需要使用外连接查询。根据不同的外连接形式,外连接所生成的结果集中不仅包含符合条件的数据记录,还包含左表、右表或左右表中所有的数据记录。
左外连接的结果集包括左表的所有记录和右表中满足连接条件的记录,结果集中那些不符合连接条件的来源于右表的列值为 null。