- 浏览: 2309378 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (314)
- JAVA基础知识 (54)
- Java-IO/FIle (16)
- Java-JDBC (4)
- JAVA-新增特性-注解 (3)
- Java-枚举 (2)
- Java-泛型 (1)
- Java-多线程 (15)
- Java-XML (4)
- Java-JMS(消息服务) (4)
- Java-JVM (0)
- Web Service服务 (7)
- Jsp (10)
- js (18)
- Struts框架 (11)
- Spring框架 (29)
- Hibernate框架 (28)
- Spring Boot框架 (2)
- ExtJS前端框架 (29)
- Jquery js库 (8)
- JUnit框架 (8)
- Selenium 测试 (1)
- NoSql---Redis (6)
- ORACLE数据库 (45)
- MySQL数据库 (4)
- tomcat (3)
- Nginx反向代理服务器 (4)
- web应用服务器通用知识 (3)
- 开发工具IDE (14)
- UML建模 (1)
- SVN CVS 版本管理 (6)
- git 分布式版本管理 (4)
- 报表设计 (5)
- 文件上传下载 (2)
- 数据算法 (1)
- 存储过程 (5)
- JSON 相关 (1)
- OGNL表达式 (3)
- Util工具包 (9)
- 设计模式 (15)
- linux 相关 (3)
- life think (3)
- 工作流管理框架 (1)
- 大数据-Hadoop (1)
最新评论
-
huih:
很不错的文章
SpringMVC+Hibernate+Spring 简单的一个整合实例 -
calm01:
学习了.
Spring <bean>标签属性 Autowire自动装配(转载) -
lizhenlzlz:
我的也是拦截不了service层
SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)(转载) -
josh_123:
讲的不错,很详细,如果quartz定时任务类采用不继承任何类的 ...
Spring,jdk定时任务的几种实现以及任务线程是串行还是并行执行(转载) -
human_coder:
你知道eclipse调试怎么可以回调吗?有时候总是调快了,不能 ...
Debug---Eclipse断点调试基础
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规则定的书写方式。两个说的是一码事。
发表评论
-
oracle 动态执行命令execute immediate
2016-06-12 17:42 3466可以使用execute immediate来动态执SQL语 ... -
Oracle表与索引的分析及索引重建(转载)
2015-04-27 17:08 3316Oracle表与索引的分析及索引重建 2010年1 ... -
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和总结(转载)
2015-04-15 16:36 8355在web开发中,避免不了对日期的操作,就几种常见的日期操作 ... -
jdbc连接数据库使用sid和service_name的格式区别(转载)
2015-04-10 10:25 4006最近使用jdbc连接oracle时报错: ORA-1250 ... -
oracle 执行计划为什么不走hash join?(转载)
2015-04-07 14:34 5585今天,某省的同事来告诉我,表重组后,他用于统计的一个sql脚 ... -
详细介绍ORACLE sqlplus命令(转)
2015-04-03 10:05 2046一、ORACLE的启动和关闭1、在单机环境下要想启动或关 ... -
oracle sqlplus登陆命令(转载)
2015-04-03 09:59 4348oracle sqlplus登陆命令 首先,进入 ... -
Oracle ORA-01555快照过旧的错误(转载)
2015-02-25 16:31 3032第一篇文章: 首先 ... -
oracle创建分区表,以及非分区表转分区表(转载)
2015-01-22 17:14 3402什么是分区表,分区表详解:http://langgufu. ... -
oracle游标详解
2015-01-15 16:55 5233Oracle游标循环 第一种使用loop 循环 ... -
Oracle调优总结--2(经典实践 重要)
2014-11-24 15:43 1018Oracle SQL性能优化 (1 ... -
解读Oracle执行计划
2014-11-19 17:10 5155本篇解释执行计划中基本项的含义 关于生成和显示Oracle ... -
Oracle 执行计划(Explain Plan) 说明
2014-11-19 17:10 54612如果要分析某条SQL的性能问题,通常我们要先看SQL的执 ... -
oracle导出excel 方法总结
2014-11-19 11:38 8916oracle导出excel 一、oracle导出exce ... -
oracle translate()详解+实例(替换字符函数)+rpad()填充函数
2014-10-28 16:19 2417一、语法: TRANSLATE(string,from ... -
oracle根据已有表及数据创建表分区并导入数据
2014-10-21 17:05 62oracle根据已有表及数据创建表分区并导入数据 假 ... -
ORACLE 普通表转换成分区表(在线重定义方法详解 转载)
2014-10-21 17:01 5515什么是分区表,分区表详解:http://langguf ... -
Oracle中的不等于号(转)
2014-07-29 16:02 1215今天碰到一个Oracle不等 ... -
oracle 自定义类型 type / create or replace type (转载)
2014-07-17 15:21 16890<!--正文 begin--> 一: ... -
【转】oracle存储过程导出表数据为TXT文件【全表字段】
2014-05-07 17:33 4435-****************************** ...
相关推荐
【数据库表连接详解】 在关系型数据库管理中,表连接是一种重要的查询操作,它允许从多个相关表中检索数据。连接使得数据间的关联性得以展现,增强了数据查询的灵活性。通常,一个实体的信息可能分散在多个表中,...
1. **等值连接**:通过`WHERE`子句指定两个表之间的关联条件。 ```sql SELECT t.*, s.* FROM teacher t, student s WHERE t.id = s.tea_id; ``` 2. **使用JOIN关键字**:这是更现代且易于理解的方式,可选地...
内连接可以分为等值连接、不等值连接和自然连接三种。 * 等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。 * 不等值连接:在连接条件使用除...
MySQL SQL99 语法中的内连接(INNER JOIN)是非等值连接的一种常见应用,它用于合并两个或更多表的数据,...在实际数据库操作中,内连接非等值连接能帮助我们处理复杂的数据关联问题,灵活地获取满足特定条件的数据。
在Oracle数据库的多表连接中,常见的连接类型包括等值连接、非等值连接以及外部连接。等值连接是最基础的一种连接方式,它通过两个表中的相等条件来匹配行。例如,查询员工的姓名和部门名称时,可以将员工表(EMP)...
在一张或多张表中使用等值或非等值连接 使用外连接查询 自连接查询 第五章 组函数 定义及有效的使用组函数 使用Group By对查询数据分组 使用HAVING子句对分组后的数据进行过滤 第六章 子查询 第七章 数据建模及...
内连接又分为等值连接(使用=比较),不等连接(使用其他比较运算符如>、<等),以及自然连接(自动去除重复列)。 例如,等值连接查询相同城市的作者和出版社: ```sql SELECT * FROM authors AS a INNER JOIN ...
条件连接依据特定条件选择元组,等值连接则是基于两个关系中相同属性的等值条件。自然连接进一步简化了等值连接,它只保留共享属性的等值元组。外连接包括左外连接、右外连接和全外连接,它们会保留不满足连接条件的...
- **等值连接**:类似于传统SQL中的`INNER JOIN`,用于两个类之间没有建立任何关联关系的情况,通过属性进行筛选。 - 示例:`FROM Department d, Employee e WHERE d.id = e.departmentId` - **隐式内连接与迫切内...
- 只能用于等值连接,不能处理非等值连接条件。 #### 3. 哈希连接(Hash Join) 哈希连接是一种利用哈希表技术进行连接的方法。首先,Oracle会在内存中为较大的表构建一个哈希表,基于连接键。接着,它会扫描另一...
SQL 中的左外连接、内连接、右外连接用法详解 SQL 中的连接操作是数据库管理系统中最基本的操作之一,它能够将多个表中的数据结合起来,生成一个新的结果集。本文将对 SQL 中的左外连接、内连接、右外连接进行详细...
内连接,如等值连接、自然连接和不等连接,主要返回匹配的行。等值连接是用等于运算符比较列值,不等连接则使用其他比较运算符。自然连接在匹配列值的同时会删除重复列。例如,要找出同一城市的作者和出版商,可以...
实验中提到了等值连接(JOIN)、自然连接(NATURAL JOIN)、一般连接(FULL JOIN)、自身连接(SELF JOIN)和外连接(LEFT JOIN、RIGHT JOIN)。例如,创建SPJ数据库并进行各种连接查询,以连接供应商S、零件P、工程...
等值连接是最常见的连接类型之一,它基于两个表之间某个或某些字段相等的关系进行连接。例如,当我们想要查询员工信息及其所在部门的信息时,可以通过员工表(`emp`)与部门表(`dept`)之间的部门编号(`deptno`)...
- **等值连接**:两个关系基于共同属性的等值条件进行连接。例如,将表`R`和表`S`基于相同的属性`B1`进行连接。 - **自然连接**:一种特殊的等值连接,只保留公共属性中相等的元组,并自动去除重复的列。 3. **除...
- 等值连接(Equal Join):通过ON子句指定两个表中相等的字段连接。 - 自然连接(Natural Join):自动匹配两个表中相同名称的列进行连接。 - 笛卡尔积(Cartesian Product):两个表无关联条件时,所有记录的...
内连接又可以细分为等值连接、自然连接和不等连接。等值连接使用等于运算符(=)来匹配两个表中的对应列;不等连接则允许使用其他比较运算符,如大于(>)、小于(<)等。自然连接除了基于等值比较之外,还会自动...
- **自然连接**:是一种特殊的等值连接,它要求两个表中的连接字段必须是相同的属性名,并且结果中会自动去除重复的列。 两者的主要区别在于自然连接要求连接字段具有相同的名称,并且结果中不会包含重复的列,而...
等值连接和非等值连接是两种常见的连接类型,其中等值连接可以通过哈希连接优化,降低时间复杂度。 2. **并行哈希连接**:理想的哈希连接可以将大表的数据分散到多个处理器上,通过并行计算来加速连接操作。对于...