`
langgufu
  • 浏览: 2309378 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库外连接,自然连接,内连接,条件连接,等值连接关系及详解

阅读更多

Join操作基本分为3大类:外连接(细分为:左连接、右连接、全连接)、自然连接、内连接

Join操作的共性:第一步均为将所有参与操作的表进行了一个笛卡儿积,然后才依据各连接

条件进行记录的筛选

SQL> select * from employees;

NAME

DEPARTMENT_ID

SALARY

Getz

10

3000

Davis

20

1500

King

20

2200

Davis

30

5000

Kochhar

 

5000

SQL> select * from departments;

DEPARTMENT_ID

DEPARTMENT_NAME

10

Sales

20

Marketing

30

Accounts

40

Administration

------------------Left outer join----------------

SQL> select * from employees e left outer join departments d on e.department_id=d.department_id;

 

附加:Oracle9i以前版本中左连接的写法如下:

SQL> select * from employees e ,departments d on e.department_id=d.department_id(+);

---------------------------Right outer join------------------------

SQL> select * from employees right outer join departments using(department_id);

 

附加:Oracle9i以前版本中左连接的写法如下:

SQL> select * from employees e ,departments d where e.department_id(+)=d.department_id;

--------------------------------Full join----------------------------

SQL> select * from employees full join departments using(department_id);

 

说明:[1]外连接必须使用on或using子句提供相应的连接条件

[2]不能为using子句中所列举的列指定表别名,即使在group by和select子句中也是如此

[3]外连接规则:左连右补,右连左补,全连左右合并

如:对表departments表进行右连接时,在两表完成笛卡儿积后再依据连接条件 using(department_id)来筛选两表中department_id值相同的记录,但对DEPARTMENT_ID=40

employees表中没有与之匹配的记录,按常理此DEPARTMENT_ID=40所对应的记录将被抛

弃,但就是为了保全连接表(departments表)中的所有记录就必须在employees表中虚拟出

一条与之匹配的记录来保全连接表的所有记录,当然这条虚拟的记录显示时值全为null

 

 

--------------------------Natural join-----------------------------

SQL> select * from employees natural join departments;

 

说明:自然连接是通过对参与表关系中所有同名的属性对取等(即相等比较)来完成的,故无须自己添加连接条件

与外连接的区别在于对于无法匹配的记录外连接会虚拟一条与之匹配的记录来保全连接表中的所有记录,但自然连接不会

----------------------Inner join----------------

SQL> select * from employees inner join departments using(department_id);

 

说明:内连接自然连接基本相同,不同之处在于自然连接只能是同名属性的等值连接,而内连接可以使用using或on子句来指定连接条件,连接条件中指出某两字段相等(可以不同名)。

 

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

连接的概念:

连接分为条件连接、等值连接和自然连接三种。

1、条件连接就是在多个表的笛卡尔积中选取满足条件的行的连接,例如 select * from A,B where A.a > A.b 之类的有条件的查询。

2、等值连接就是特殊的条件连接,当条件为某字段=某字段时,即为等值连接。如SELECT ename,sal,dname FROM emp,dept WHERE emp.deptno=dept.deptno;

3、自然连接是一种特殊的等值连接,他要求多个表有相同的属性字段,然后条件为相同的属性字段值相等,最后再将表中重复的属性字段去掉,即为自然连接。如A中a,b,c字段,B中有c,d字段,则select * from A natural join B 相当于 select A.a,A.b,A.c,B.d from A.c = B.c 。

 

内连接与等值连接的区别

内连接:两个表(或连接)中某一数据项相等的连接称为内连接。等值连接一般用where字句设置条件,内连接一般用on字句设置条件,但内连接与等值连接效果是相同的。

内连接与等值连接其实是一回事情(等效)。

经常有人会问到select a.id,b.name from a,b where a.id=b.pid 与

select a.id,b.name from a inner join b on a.id=b.pid 有什么区别,哪个效率更高一些。

实际上一回事情了。只是内连接是由SQL 1999规则定的书写方式。两个说的是一码事。

分享到:
评论

相关推荐

    数据库表连接(内外、左右连接).docx

    【数据库表连接详解】 在关系型数据库管理中,表连接是一种重要的查询操作,它允许从多个相关表中检索数据。连接使得数据间的关联性得以展现,增强了数据查询的灵活性。通常,一个实体的信息可能分散在多个表中,...

    自连接外连接

    1. **等值连接**:通过`WHERE`子句指定两个表之间的关联条件。 ```sql SELECT t.*, s.* FROM teacher t, student s WHERE t.id = s.tea_id; ``` 2. **使用JOIN关键字**:这是更现代且易于理解的方式,可选地...

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

    内连接可以分为等值连接、不等值连接和自然连接三种。 * 等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。 * 不等值连接:在连接条件使用除...

    mysql sql99语法 内连接非等值连接详解

    MySQL SQL99 语法中的内连接(INNER JOIN)是非等值连接的一种常见应用,它用于合并两个或更多表的数据,...在实际数据库操作中,内连接非等值连接能帮助我们处理复杂的数据关联问题,灵活地获取满足特定条件的数据。

    数据库开发 Oracle数据库 SQL开发教程 第05章 多表连接(共48页).pdf

    在Oracle数据库的多表连接中,常见的连接类型包括等值连接、非等值连接以及外部连接。等值连接是最基础的一种连接方式,它通过两个表中的相等条件来匹配行。例如,查询员工的姓名和部门名称时,可以将员工表(EMP)...

    Oracle数据库Sql语句详解大全

    在一张或多张表中使用等值或非等值连接 使用外连接查询 自连接查询 第五章 组函数 定义及有效的使用组函数 使用Group By对查询数据分组 使用HAVING子句对分组后的数据进行过滤 第六章 子查询 第七章 数据建模及...

    详解数据库多表连接查询的实现方法

    内连接又分为等值连接(使用=比较),不等连接(使用其他比较运算符如>、<等),以及自然连接(自动去除重复列)。 例如,等值连接查询相同城市的作者和出版社: ```sql SELECT * FROM authors AS a INNER JOIN ...

    数据库之关系数据库的关系运算

    条件连接依据特定条件选择元组,等值连接则是基于两个关系中相同属性的等值条件。自然连接进一步简化了等值连接,它只保留共享属性的等值元组。外连接包括左外连接、右外连接和全外连接,它们会保留不满足连接条件的...

    HQL连接查询和注解使用总结

    - **等值连接**:类似于传统SQL中的`INNER JOIN`,用于两个类之间没有建立任何关联关系的情况,通过属性进行筛选。 - 示例:`FROM Department d, Employee e WHERE d.id = e.departmentId` - **隐式内连接与迫切内...

    几种常用的表连接方式

    - 只能用于等值连接,不能处理非等值连接条件。 #### 3. 哈希连接(Hash Join) 哈希连接是一种利用哈希表技术进行连接的方法。首先,Oracle会在内存中为较大的表构建一个哈希表,基于连接键。接着,它会扫描另一...

    SQL中的left outer join,inner join,right outer join用法详解

    SQL 中的左外连接、内连接、右外连接用法详解 SQL 中的连接操作是数据库管理系统中最基本的操作之一,它能够将多个表中的数据结合起来,生成一个新的结果集。本文将对 SQL 中的左外连接、内连接、右外连接进行详细...

    SQL查询语法大全完整-高手详解

    内连接,如等值连接、自然连接和不等连接,主要返回匹配的行。等值连接是用等于运算符比较列值,不等连接则使用其他比较运算符。自然连接在匹配列值的同时会删除重复列。例如,要找出同一城市的作者和出版商,可以...

    SQL数据库实验报告

    实验中提到了等值连接(JOIN)、自然连接(NATURAL JOIN)、一般连接(FULL JOIN)、自身连接(SELF JOIN)和外连接(LEFT JOIN、RIGHT JOIN)。例如,创建SPJ数据库并进行各种连接查询,以连接供应商S、零件P、工程...

    oracle 数据库入门详细介绍

    等值连接是最常见的连接类型之一,它基于两个表之间某个或某些字段相等的关系进行连接。例如,当我们想要查询员工信息及其所在部门的信息时,可以通过员工表(`emp`)与部门表(`dept`)之间的部门编号(`deptno`)...

    关系数据库学习攻略(第三期)

    - **等值连接**:两个关系基于共同属性的等值条件进行连接。例如,将表`R`和表`S`基于相同的属性`B1`进行连接。 - **自然连接**:一种特殊的等值连接,只保留公共属性中相等的元组,并自动去除重复的列。 3. **除...

    数据库实验报告2的剖析.pdf

    - 等值连接(Equal Join):通过ON子句指定两个表中相等的字段连接。 - 自然连接(Natural Join):自动匹配两个表中相同名称的列进行连接。 - 笛卡尔积(Cartesian Product):两个表无关联条件时,所有记录的...

    详解SQL Server数据库链接查询的方式

    内连接又可以细分为等值连接、自然连接和不等连接。等值连接使用等于运算符(=)来匹配两个表中的对应列;不等连接则允许使用其他比较运算符,如大于(>)、小于(<)等。自然连接除了基于等值比较之外,还会自动...

    数据库系统概论第五版课后习题答案王珊版

    - **自然连接**:是一种特殊的等值连接,它要求两个表中的连接字段必须是相同的属性名,并且结果中会自动去除重复的列。 两者的主要区别在于自然连接要求连接字段具有相同的名称,并且结果中不会包含重复的列,而...

    使用数据传输方法在PostgreSQL上执行外部连接运算符- 译稿1

    等值连接和非等值连接是两种常见的连接类型,其中等值连接可以通过哈希连接优化,降低时间复杂度。 2. **并行哈希连接**:理想的哈希连接可以将大表的数据分散到多个处理器上,通过并行计算来加速连接操作。对于...

Global site tag (gtag.js) - Google Analytics