数据库常⽤SQL语句(⼆):多表连接查询
前⾯主要介绍了单表操作时的相关查询语句,接下来介绍⼀下多表之间的关系,这⾥主要是多表数据记录的查询,也就是如何在⼀个查询语句中显⽰多张表的数据,这也叫多表数据记录的连接查询。
在实现连接查询时,⾸先是将两个或两个以上的表按照某种关系连接起来(连接后形成⼀个新的关系表),然后再查询到所要求的的数据记录。连接查询分为外连接查询和内连接查询。
⼀、表和表之间的关系
并(UNION):并操作是把具有相同字段数⽬和字段类型的两个或多个表合并到⼀起。
2.笛卡尔积:两个表之间进⾏笛卡尔积后形成新的关系中字段两个表中的会合并在⼀起,数据记录会进⾏组合,⽐如第⼀个表中有3条记录,第⼆个表中有5条记录,两个表经过笛卡尔积操作后将⼀共会产⽣3*5=15 种数据记录。
3.连接操作(JOIN):在表关系的笛卡尔积数据记录中,按照两个表中相应字段值的⽐较条件进⾏选择⽣成⼀个新的关系。其实就是将笛卡尔积后的数据记录进⾏筛选得到相应的数据,根据筛选⽅式不同,分为内连接(INNER JOIN),外连接 (OUTER JOIN),交叉连接(CROSS JOIN)。这些连接的基础都是笛卡尔积。
⼆、查询操作
1. 内连接查询:保留表关系中所有匹配的数据记录,舍弃不匹配的记录,注意,是只会保留符合匹配条件的记录,根据匹配条件分为:⾃然连接(NATURAL JOIN)、等值连接、不等连接。
⾃然连接:在笛卡尔积的数据记录中,⾸先⾃动根据表关系中相同名称的字段进⾏记录匹配(即只保留两个同名的字段下值相同的这条记录),然后去除重复字段(重复的字段保留⼀个),使⽤关键字 NATURAL JOIN来进⾏⾃连接查询操作,⾃连接⾃动完成,⽆法指定连接条件。查询举例:
等值连接:内连接查询中的等值连接,使⽤ON...的⽅式来实现,就是在关键字ON后⾯使⽤关系运算符“=”来指定等值条件,顾名思义,就是两个字段的值相等的条件,举例如下:
sql语句查询不包含如图中结果,等值连接相⽐⾃然连接,只是没有去掉重复的字段deptno。
不等连接:使⽤ON...的⽅式来实现,就是在关键字ON后⾯可以使⽤>、<、>=、<=、!=这些运算符来指定不等值的条件,所以叫不等连接,举例说明:
2. 外连接查询(OUTER JOIN):在表关系的笛卡尔数据记录中,不仅保留所有匹配的数据记录,⽽且还会保留部分不匹配的数据记录,按照保留不匹配条件数据记录的来源可分为:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)、全外连接(FULL OUTER JOIN),外连接查
询会返回操作表中⾄少⼀个表的所有数据记录。
左外连接(LEFT JOIN):外连接查询中的左外连接,使⽤关键字 ON....来实现,就是在笛卡尔积新关系中执⾏匹配条件时,除了保留满⾜ON关键字后条件的记录外,还会以关键字 LEFT JOIN左边的表为参考表,保留左边表中未匹配的所有记录。举例说明:
右外连接(RIGHT JOIN):外连接查询中的右外连接,使⽤关键字 ON....来实现,就是在笛卡尔积新关系中执⾏匹配条件时,除了保留满⾜ON关键字后条件的记录外,还会以关键字 RIGHT JOIN右边的表为参考表,保留右边表中未匹配的所有记录。举例说明:
全外连接(FULL JOIN):在表关系的笛卡尔积中,除了选择相匹配的数据记录,还会包含左右两边表中不匹配的所有数据记录,举例说明:3.交叉连接(CROSS JOIN):交叉连接,实际上就是表关系笛卡尔积后的没有经过条件筛选后所有数据记录,不需要任何匹配条件。
以上为表的连接查询操作,主要分为内连接和外连接,⽤来进⾏多表查询。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论