全外连接和交叉连接

全外连接是在结果中除了显示满足连接的条件的行外,还显示了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-11-03 22:26:21

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

左连接、右连接、交叉连接、全外连接

第一部分.连接查询 一.内连接 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值.内连接分三种: 1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列. 2.不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值.这些运算符包括>.>=.<=.<.!>.!<和<>. 3.自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用

详解SQL Server连接(内连接、外连接、交叉连接)

在查询多个表时,我们经常会用“连接查询”.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据. 目的:实现多个表查询操作. 知道了连接查询的概念之后,什么时候用连接查询呢? 一般是用作关联两张或两张以上的数据表时用的.看起来有点抽象,我们举个例子,做两张表:学生表(T_student)和班级表(T_class). T_student                            

MSSQL 详解SQL Server连接(内连接、外连接、交叉连接)

在查询多个表时,我们经常会用“连接查询”.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据. 目的:实现多个表查询操作. 知道了连接查询的概念之后,什么时候用连接查询呢? 一般是用作关联两张或两张以上的数据表时用的.看起来有点抽象,我们举个例子,做两张表:学生表(T_student)和班级表(T_class) 1 --创建DB 2 --filename修改为自己电脑上MSSQL存储的位置

SQL连接:内连接、外连接、交叉连接。

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

内连接 外连接 自连接 交叉连接

======================================================== My SQL如下: ======================================================== 1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行. 2.外联接.外联接

SQL Server内连接、外连接、交叉连接

前言 在数据库查询中,我们常常会用到的表连接查询,而我自己在工作中也是时常用这些表连接查询.而就在刚刚我却还没有搞清楚数据库表连接到底有哪几种, 这几种表连接查询方式又有什么区别,实属惭愧!借以此文以谨记. 连接方式 数据库表连接查询分三种:内连接.外连接.交叉连接 那下面我们就来分别说说这三种连接. 内连接(inner join) 内连接又分为:等值连接.不等连接.自然连接 1.等值连接 我们在连接多表查询时,连接条件中使用等号(=)运算符,其查询结果中列出被连接表中的所有列,包括其中的重复列

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

SQL连接(内连接.外连接.交叉连接) 假设现在有两个表:table1 , table2 table1:                                table2 :  id      name                          id      score    1       lee                            1        90    2       zhang                         2        

SQL中的内连接外连接和交叉连接是什么意思?

内连接又分为等值连接.自然连接和不等连接三种. 外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN).右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种.与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时).右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行. 交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,

SQL各种连接——自连接、内连接、外连接、交叉连接的使用

首先准备了两个表 (Student 和 Course),其中 Student 表中的 C_S_Id 字段为外键列,关联的是 Course 表的 C_Id 主键列. 内连接(inner join):满足on条件表达式,内连接是取满足条件表达式的两个表的交集(即两个表都有的数据). 1 select * from Student s 2 inner join Course c on s.C_S_Id=c.C_Id 外连接(outer join)分为:左外连接(left join / left out