在Access中实现表连接时,可通过查询设计视图或SQL语句完成。常用连接方式包括内连接(inner join)、左连接(left join)、右连接(right join)和交叉连接(cross join)。本文以Persons和Orders两张表为例,展示各类连接操作的具体应用方法,两表结构与数据内容详见附图。
1、 SQL JOIN 用于依据表间列的关联,从多个数据表中提取信息。在 SQL 中,JOIN 与 inner join 具有相同含义,其查询结果完全一致,均返回两表中满足匹配条件的交集数据。
2、 例如,要获取每个人的订单详情,可通过SQL的JOIN操作实现数据关联查询。
3、 通过逗号连接两张表,并在WHERE子句中设定关联条件。
4、 观察Orders表数据可知,Id_p为2的用户未订购任何产品,因此在查询结果中不会显示该用户的记录。
5、 SQL中的inner join与join在效果上完全相同,两者均可用于实现表的内连接操作。
6、 通过关键字inner join连接两个表,并使用ON子句指定它们之间的关联条件。
7、 所示,经观察可知,使用inner join与join产生的结果完全相同。
8、 SQL中的Left Join与left outer join含义相同,均表示左连接。当执行该操作时,无论右表是否存在匹配记录,都会完整返回左表的所有数据行。
9、 所示,观察可知:尽管左表中Persons.Id_p为2的记录在右表orders中无对应信息,查询结果仍保留了该条数据,仅将orderno字段显示为空值。
10、 SQL中的Right Join与Right Outer Join是同一概念,无论左表是否存在匹配记录,都会返回右表的全部数据行。
11、 所示,尽管右表Orders中id_o为5的记录无法与persons表中的数据匹配,但该行信息依然在查询结果中被完整显示出来。
12、 在Access中,无法直接使用full join和cross join关键字来实现笛卡尔积。由于系统不支持这两个连接类型,若要展示所有记录的组合结果,可通过使用JOIN但省略连接条件的方式达成目的。这种方式会返回两个表中每条记录相互配对的结果集,即等效于笛卡尔积的输出效果。
13、 Microsoft官方文档指出,交叉联接会生成两个表的笛卡尔积。
14、 在Access中实现交叉连接的SQL语句如下所示:
评论
更多评论