




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL连接,Oracle关联加号(+)等相关知识hebo2005:假设有 a表 id 1 2 3 4 b表 id 1 2 3 希望出来结果 a.id b.id 1 1 2 2 3 3 4 用left join 的SQL code select a.id,b.id form a left jion b on a.id=b.id用(+)的SQL code select a.id,b.id form a ,b where a.id=b.id(+)用(+)的语法简洁,容易读懂,但只是ORACLE支持,LEFT JOIN是通用的,其它没有差别zengdan84:select * from a, b where a.id = b.id; 对于外连接,Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍。 1. LEFT OUTER JOIN:左外关联 SELECT e.last_name, e.department_id, d.department_name FROM employees e LEFT OUTER JOIN departments d ON (e.department_id = d.department_id); 等价于 SELECT e.last_name, e.department_id, d.department_name FROM employees e, departments d WHERE e.department_id=d.department_id(+); 结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。 2. RIGHT OUTER JOIN:右外关联 SELECT e.last_name, e.department_id, d.department_name FROM employees e RIGHT OUTER JOIN departments d ON (e.department_id = d.department_id); 等价于 SELECT e.last_name, e.department_id, d.department_name FROM employees e, departments d WHERE e.department_id(+)=d.department_id; 结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。 3. FULL OUTER JOIN:全外关联 SELECT e.last_name, e.department_id, d.department_name FROM employees e FULL OUTER JOIN departments d ON (e.department_id = d.department_id); 结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。chensi05:说简单点就是哪边少加号放哪边wuchunyu002:外连接: 除了显示匹配相等连接条件的数据外,还可以显示某一个表中无法匹配相等连接条件的记录! - 1) 左条件(+) = 右条件 左条件所在的表必须严格进行相等连接条件的匹配,而右条件所在的表除了匹配相等连接条件外,还可以显示无法匹配连接条件的数据! 也称为右外连接. - 可以用下列语句取代: SELECT.FROM 表1 RIGHT OUTER JOIN 表2 ON 条件; 2) 左条件 = 右条件(+) 右条件所在的表必须严格进行相等连接条件的匹配,而左条件所在的表除了匹配相等连接条件外,还可以显示无法匹配连接条件的数据! 也称为左外连接. - 可以用下列语句取代: SELECT.FROM 表1 LEFT OUTER JOIN 表2 ON 条件; REM 除了相等连接之外,显示没有员工的部门信息. SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO(+) = DEPT.DEPTNO; SELECT * FROM EMP RIGHT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO; REM 除了相等连接之外,显示没有部门的员工信息. SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO(+); SELECT * FROM EMP LEFT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;shenliang1985(沈亮):Oracle 建议你用在From语句后用Outer Join语法 而不是Oracle的Join操作符(+).而且(+)是要受下面的规则限制的,但Outer Join语法则不受的 1)你不可以在查询块中使用(+) 当它同时包含 join的from语句中 2)(+)只是在where语句中,并且只能对应一个表或视图的一行字段 3)如果A和B做联接时有多个条件,那么(+)必须完善所有的匹配条件, 如果没有 ,oracle不会警告你只是结果自然不同的 4)不可以在作出一个表外查询 另张表内查询的(+)联接操作 5)不可以用(+)外联接到自己 当然Self Join是可以的 6)含(+)的Where后的注意 OR不可用 IN不可用 子查询不可用 以下给些个例子:SQL code SQL desc part Name Null? Type - - - PART_ID NOT NULL VARCHAR2(4) SUPPLIER_ID VARCHAR2(4)SQL select * from part;PART SUPP- -P1 S1P2 S2P3P4SQL desc supplier Name Null? Type - - - SUPPLIER_ID NOT NULL VARCHAR2(4) SUPPLIER_NAME NOT NULL VARCHAR2(20)SQL select * from supplier;SUPP SUPPLIER_NAME- -S1 Supplier#1S2 Supplier#2S3 Supplier#3SQL select p.part_id, s.supplier_name 2 from part p, supplier s 3 where p.supplier_id = s.supplier_id (+);PART SUPPLIER_NAME- -P1 Supplier#1P2 Supplier#2P3P4-(+)是单向的SQL select p.part_id, s.supplier_name 2 from part p, supplier s 3 where p.supplier_id (+) = s.supplier_id (+);where p.supplier_id (+) = s.supplier_id (+) *ERROR at line 3:ORA-01468: a predicate may reference only one outer-joined table-实现Full Join的方法SQL select p.part_id, s.supplier_name 2 from part p, supplier s 3 where p.supplier_id = s.supplier_id (+) 4 union 5 select p.part_id, s.supplier_name 6 from part p, supplier s 7 where p.supplier_id (+) = s.supplier_id;PART SUPPLIER_NAME- -P1 Supplier#1P2 Supplier#2P3P4 Supplier#3-现在的语法 SQL select p.part_id, s.supplier_name 2 from part p full outer join supplier s 3 on p.supplier_id = s.supplier_id;PART SUPPLIER_NAME- -P1 Supplier#1P2 Supplier#2P4P3 Supplier#3另外的EG: SQL codeSQL select * from testa; ID NAME ADDR AGE- - - - 3 电子 南京 23 5 物理 北京 23 6 物理 河北 25 1 电脑 上海 23 2 电子 北京 22 4 物理 芜湖 22 7 艺术 上海 21 8 歌剧 苏州 16 9 沈亮 上海 22已选择9行。SQL select * from testb; ID ADDR- - 7 上海 1 北京 3 上海 5 合肥-匹配完全select testa.id,testa.ad
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子支付与网络安全问题:高中信息技术课程教案
- 时装品牌干货知识培训课件
- 自由飞翔的小鸟450字7篇
- 纪检宣传课件
- 山东省济宁市(五四学制)2024-2025学年六年级下学期期末历史试题(含答案)
- 描写春天的中考作文(14篇)
- 品牌宣传与推广执行方案
- 农业种植资源共享和流通合作协议
- 品牌宣传与市场拓展方案
- 2025年嵌入式系统设计师考试嵌入式系统大数据试题
- 土地规划服务行业竞争格局大数据分析
- 纺织品染整技术培训课件
- 锅炉维修安全管理要求范文
- 高考化学一轮复习知识点梳理05钠及其重要化合物
- 尿道肉阜的科普知识
- (完整版)QQ三国副职及日常物品成本计算表v1.0
- 临沧木春矿冶开发有限公司蚂蚁堆乡白石头地硅矿开采建设项目环评报告
- 人机料法环测检查表
- 微信限制解封手写承诺书
- 骨盆前倾的康复训练方案
- 《托育教育活动组织与实施》课程与能力对接表
评论
0/150
提交评论