内连接查询

交叉连接(笛卡尔积)

交叉连接(Cross

连接的基础。don),又称“苗卡尔连接Caresin soim)"四“交果(Prose) .它是示有类型团入如果把表视为行记录的集合,那么交叉连接团返回这两个集合的面卡尔积,爱口到结果集仓中的数里行数用子美一张表中符合 查泪条件的数据行数乘以第二个表中符合查海条件的数量行数。这其实等价于内连福的连强各心为“永真”,或连接条件不存在。如果A和B是两个集合,它门的交叉连接就记为,A x B.

通俗而言,笛卡尔积就是两个集合中的每一个成员都与对方集合中的任意一个成员有关联。

实现线路表与车辆表笛卡尔积的SQL语句如下:

select * from line CROSS JOIN vehicle 等价于;select * from line,vehicel

 

内连接查询概要

内连接是应用程序中非常常见的连接操作,它一般都是默认的连接类型。内连接基于连接谓词,它将两张表美A和B)的列组合在一起, 产生新的结果表。内连接查询会将A表的每行和B 表的每一行进行比较, 并找出满足连接谓词的组合。当连接谓词被满足,A和B中匹配的行会按列组合(并排组合)成结果集中的一行。

内连接查汨操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分3种:交叉连爱相等连接和自然连接。

内连接语法

SELECT fedldist FROM table1 【iNNER】 JOIN table2 ON tcablel.column1 =table2.column2【where condirtion】

语法说明如下:

(1) fieldlist: table1 表和table2表中的字段列。如果fieldlist取两张表所有列,则可用”.”代替,世的现连接依据列重复,即table1表的column1与table2表的column2为重厦列。

(2) table1 IINNERI JOIN table2: 将table1表与table2表进行内连接,INNER可省略。 

(3) table1 column1 =table2 column2: 连接条件,其中column1和column2为table1表与tabie2表联列,通常它们为外键列和主键列。 

自然连接

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

SELECR fieldlist FROM table NATURAL JOIN table2 [where condition]

多表连接查询

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

以下为三表连接查询的语法;

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

外连接查询

外连接查询概念

在内连按查询中,只有满足连接条件的记录才能出现在查调结果中。但在实际应用中,如果希望不满足连接条件的记录也在查询结果中出现,这时需要使用外连接查询。、

根据不同的外连接形式,外连接所生成的结果集中不仅包含符合条件的数据记录,还包含左表或右表镇左右表中所有的数据记录。

外连接的语法如下:

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

左外连接 (LEFT JOIN)

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