`
langgufu
  • 浏览: 2292296 次
  • 性别: 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规则定的书写方式。两个说的是一码事。

分享到:
评论

相关推荐

    数据库作业7:SQL练习4 – SELECT(连接查询、嵌套查询)

    连接查询—(1)等值与非等值连接查询:等值连接:连接运算符为=(对比关系代数中的等值连接) 【例3.49】查询每个学生及其选修课程的情况. SELECT Student.*,SC.* FROM Student,SC WHERE Student.Sno=SC.Sno; 从两...

    MySQL数据库:交叉连接和内连接.pptx

    在这样的情形下,通常要使用WHERE子句设定条件来将结果集减少为易于管理的大小,这样的连接即为等值连接。 ;交叉连接和内连接; 【例】 查找Bookstore数据库中客户订购的图书书名,订购册数和订购时间。 SELECT Book....

    二、MySQL连接查询学习笔记(多表连接查询:内连接,外连接,交叉连接详解)

    MySQL连接查询(多表连接查询:内连接,外连接,交叉连接详解) 6:多表连接查询 笛卡尔乘积:如果连接条件省略或无效则会出现 解决办法:添加上连接条件 连接查询的分类: 1.按年代分类: 1)sql 92标准:仅仅...

    数据库关系代数的连接图画法.xlsx

    这是关于“如何画关系代数的连接图?(数据库关系代数中笛卡儿积、θ连接、等值连接、自然连接、外连接)”的草稿图

    java 实现两张表的等值连接

    java 用排序-合并算法实现两张表的等值连接

    数据库:区分笛卡儿积、自然连接、内连接、等值连接、外连接

    假设存在两张表 c 和 p,这里使用的是MySQL数据库。 数据表 c: course_id title dept_name credits BIO-301 Genetics Biology 4 CS-190 Game Design Comp.sci 4 CS-315 Robotics Comp.sci 3 数据表 p...

    数据库系统概论数据查询之连接查询.pdf

    外连接以指定表为连接主体,不满⾜连接条件的元组也输出 左外连接:以左边为主体,列出左边关系,Left outer JOIN 右外连接:以右边为主体,列出右边关系,Right outer JOIN 如想列出每个学⽣的基本情况和选课情况...

    Oracle数据库Sql语句详解大全

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

    数据库的简单查询和连接查询实验

    熟练掌握连接查询操作:包括等值连接、自然连接、卡尔连接、交叉连接、内连接、外连接、自身连接等操作。 具体内容: 用SQL语句表示下列操作,在学生库中实现数据查询。  求数学系学生的学号和姓名。  求选修了...

    数据库报告

    数据库的单表查询和连接查询,数据库的简单查询和连接查询,1、简单查询操作 该实验包括投影、选择条件表达式、数据排序、使用临时表...该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、

    动力节点MySQL数据库入门视频教程-055-内连接之非等值连接

    动力节点的杜老师讲述的mysql教程,详细讲解了MySQL的相关知识,包括MySQL概述,MySQL应用环境,MySQL系统特性,MySQL初学基础,MySQL管理工具,如何安装MySQL及MySQL新特性,通过观看可掌握MySQL全套知识。

    剖析MySQL左连接右连接等值连接异同.pdf

    剖析MySQL左连接右连接等值连接异同.pdf

    SQL内左右自连接.doc

    等值连接 不等连接 自然连接 外连接 交叉连接 全连接 右连接 左连接 外连接

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

    在本篇文章里小编给大家整理的是一篇关于mysql sql99语法 内连接非等值连接的相关知识点文章,有需要的朋友们可以学习下。

    数据库和ado知识

    SQL中表等值连接(内连接) inner join SQL中表左连接(左外连接) left join SQL中表右连接(右外连接) right join SQL中表交叉连接(两张表的乘积) SQL中表全连接 full join SQL中变量 SQL中的事务 创建存储过程 存储...

    数据库系统概论第四版课后题

    第2章 关系数据库 1 .试述关系模型的三个组成部分。 答:关系模型由关系数据结构、关系操作...自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。

    sqlserver等值连接非等值连接PPT教案.pptx

    sqlserver等值连接非等值连接PPT教案.pptx

    数据库原理课程关系运算

    数据库原理课程关系运算 自然联接与等值联接的区别 五个基本操作

    SQL精讲语法(SQL语法大全.doc数据库)

    1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接 表中的所有列,包括其中的重复列。 2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的...

Global site tag (gtag.js) - Google Analytics