交叉连接和全连接

全外连接是在结果中除了显示满足连接的条件的行外,还显示了join两侧表中所有满足检索条件的行。

SQL> select e.empno,e.ename,e.sal,d.grade

2  from emp e full outer join salgrade d

3  on e.sal between d.losal and d.hisal;

EMPNO ENAME             SAL      GRADE

---------- ---------- ---------- ----------

7839 KING             5000          5

7902 FORD             3000          4

7788 SCOTT            3000          4

7566 JONES            2975          4

7698 BLAKE            2850          4

7782 CLARK            2450          4

7499 ALLEN            1600          3

7844 TURNER           1500          3

7934 MILLER           1300          2

7521 WARD             1250          2

7654 MARTIN           1250          2

7876 ADAMS            1100          1

7900 JAMES             950          1

7369 SMITH             800          1

7937 Candy             500                                                                                                 6

上面的结果中

7937 Candy             500

这一条数据没有对应的工资等级,

6

这条数据没有对应的员工信息,右外连接

交叉连接

使用cross joi实现交叉连接,可以将两个表的交叉连接,所得到的结果是将这两个表中各行数据的所有的组合,即这两个表所有数据行的笛卡儿积。

交叉连接与简单连接操作非常相似,不同的是,使用交叉连接时,在from子句中多个表名之间不是逗号,而是使用cross join关键字隔开。令外,在交叉连接中不需要使用关键字on限定连接条件,但是可以添加where子句设置连接条件。

SQL> select empno,ename,e.deptno,d.deptno

2  from emp e cross join dept d;

EMPNO ENAME          DEPTNO     DEPTNO

---------- ---------- ---------- ----------

7369 SMITH              20         10

7499 ALLEN              30         10

7521 WARD               30         10

7566 JONES              20         10

7654 MARTIN             30         10

7698 BLAKE              30         10

7782 CLARK              10         10

7788 SCOTT              20         10

7839 KING               10         10

7844 TURNER             30         10

7876 ADAMS              20         10

7900 JAMES              30         10

7902 FORD               20         10

7934 MILLER             10         10

7937 Candy                         10

7369 SMITH              20         20

7499 ALLEN              30         20

7521 WARD               30         20

7566 JONES              20         20

7654 MARTIN             30         20

7698 BLAKE              30         20

7782 CLARK              10         20

7788 SCOTT              20         20

7839 KING               10         20

7844 TURNER             30         20

7876 ADAMS              20         20

7900 JAMES              30         20

7902 FORD               20         20

7934 MILLER             10         20

7937 Candy                         20

7369 SMITH              20         30

7499 ALLEN              30         30

7521 WARD               30         30

7566 JONES              20         30

7654 MARTIN             30         30

7698 BLAKE              30         30

7782 CLARK              10         30

7788 SCOTT              20         30

7839 KING               10         30

7844 TURNER             30         30

7876 ADAMS              20         30

7900 JAMES              30         30

7902 FORD               20         30

7934 MILLER             10         30

7937 Candy                         30

7369 SMITH              20         40

7499 ALLEN              30         40

7521 WARD               30         40

7566 JONES              20         40

7654 MARTIN             30         40

7698 BLAKE              30         40

7782 CLARK              10         40

7788 SCOTT              20         40

7839 KING               10         40

7844 TURNER             30         40

7876 ADAMS              20         40

7900 JAMES              30         40

7902 FORD               20         40

7934 MILLER             10         40

7937 Candy                         40

已选择 60 行。

//交叉连接如果不使用任何的条件限制的话,将得到的是数据的笛卡儿积,也就是每个表中的数据与另一个表中的数据的所有的组合。

SQL> select empno,ename,e.deptno,d.deptno

2  from emp e cross join dept d

3  where d.deptno=10

4  and e.deptno=10;

EMPNO ENAME          DEPTNO     DEPTNO

---------- ---------- ---------- ----------

7782 CLARK              10         10

7839 KING               10         10

7934 MILLER             10         10

//对两个表中的deptno进行限制

时间: 2024-10-19 06:49:05

交叉连接和全连接的相关文章

SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接

SQL连接可以分为内连接.外连接.交叉连接. 数据库数据:             book表                                          stu表 1.内连接 1.1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列. 1.2.不等值连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值.这些运算符包括>.>=.<=.<.!>.!<和<&g

SQL:内连接、左外连接、右外连接、全连接、交叉连接区别

有两个表A和表B.表A结构如下: Aid:int:标识种子,主键,自增ID Aname:varchar 数据情况,即用select * from A出来的记录情况如下图1所示: 图1:A表数据表B结构如下: Bid:int:标识种子,主键,自增ID Bnameid:int 数据情况,即用select * from B出来的记录情况如下图2所示: 图2:B表数据为 了把Bid和Aid加以区分,不让大家有误解,所以把Bid的起始种子设置为100.有SQL基本知识的人都知道,两个表要做连接,就必须有个

SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)

SQL 连接 JOIN 例解.(左连接,右连接,全连接,内连接,交叉连接,自连接) 最近公司在招人,同事问了几个自认为数据库可以的应聘者关于库连接的问题,回答不尽理想-现在在这写写关于它们的作用假设有如下表: 一个为投票主表,一个为投票者信息表-记录投票人IP及对应投票类型,左右连接实际说是我们联合查询的结果以哪个表为准-1:如右接连 right join 或 right outer join:我们以右边voter表为准,则左表(voteMaster)中的记录只有当其ID在右边(voter)中存

SQL Server 2008 R2——内连接 左连接 右连接 全连接 交叉连接

SELECT * FROM Table_A GO SELECT * FROM Table_B GO --内连接 SELECT a.*, b.* FROM Table_A a JOIN Table_B b ON a.ID = b.ID SELECT a.*, b.* FROM Table_A a INNER JOIN Table_B b ON a.ID = b.ID GO --内连接等价直接多表from的形式 SELECT a.*, b.* FROM Table_A a INNER JOIN Ta

数据库表连接(内连接,外连接【左连接、右连接、全连接】交叉连接)

左连接和右连接: 左连接:以左表为基准进行查询,左表数据全部进行显示,右表中显示与左表匹配的全部数据,不匹配的则显示为null 右连接(与左连接完全相反):以右表为基准进行查询,右表数据全部显示出来,左表中与右表匹配的数据全部显示出来,不匹配的则显示为null 全连接(左连接与右连接的结合体):先以左表为基准进行查询显示,再以右表为基准进行查询显示 基准:以某张表的限制条件查询为准! book表 bookID bookName studentID 1 <红楼梦> 0003 2 <水浒传&

连接(交叉连接、内连接、外连接、自连接)

本文非原创 可分为:交叉连接.内连接.外连接.自连接 1.使用交叉连接: 它是非限制连接,就是将两个表格不加任何条件的组合在一起, 即第一个表格的所有记录分别和第二个表格的每一条记录相连接 组合成新的记录,连接后结果集的行数是两个表格的行数的乘积, 列为两表列之和. 语法: (1)select 列名列表 from 表名1 cross join 表名2 (2)select 列名列表 from 表名1 (起别名) , 表名2 注意:当显示某一些字段要用表名指定. 例:select a.book_na

四.Oracle聚合函数和内外全连接

1.聚合函数 同时对一组数据行进行操作,对每组行返回一行输出结果,叫做分组函数.(将多行数据分成一行或多行,每组行只返回一行结果) 1.1聚合函数不能出现在where字句中 1.2常用的聚合函数: count: 表示返回满足条件的总行数,(注:建议用rowid统计总行数,因为它代表唯一的物理地址,或者用唯一标识符(主键);) 使用 * 效率慢,因为它先会去select * from all_tab_cols(字典表)去搜索表有那些列,然后再去分析那个列查询速度更快 例:select count(

[转]深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接

深入理解SQL的四种连接-左外连接.右外连接.内连接.全连接 1.内连接(典型的连接运算,使用像 =  或 <> 之类的比较运算符).包括相等连接和自然连接.     内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外连接.外连接可以是左向外连接.右向外连接或完整外部连接.     在 FROM子句中指定外连接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT

R7—左右内全连接详解

在SQL查询中,经常会用到左连接.右连接.内连接.全连接,那么在R中如何实现这些功能,今天来讲一讲! SQL回顾 原理 # 连接可分为以下几类: 内连接.(典型的连接运算,使用像   =   或   <>   之类的比较运算符).包括相等连接和自然连接.       内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索   students   和   courses   表中学生标识号相同的所有行.    外连接.外连接可以是左向外连接.右向外连接或完整外部连接.