- 浏览: 344954 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
苍ing:
的确很郁闷啊。同时用代码生成的页眉页脚,wps打开时看不到页眉 ...
iText生成word代码及jar包(含页眉页脚) -
jinhuazhe:
写的挺好的,有用
Unix 环境变量设置 -
zoboy:
iText生成word代码及jar包(含页眉页脚) -
zhangxy2188:
下载不了哦,请楼主重新提供一下,谢谢!
cognos10下载 -
housen1987:
shuai_94250 写道licence无效啊,麻烦您指点一 ...
Sybase数据库客户端——Auqa Data Studio 7.5(破解版)
认证目标:
- 使用同等连接和非同等连接编写select子句访问多个表的数据
- 使用自连接将表连接到自身
- 使用外连接查看不满足连接条件的数据
- 生成两个或多个表的笛卡尔乘积
关系理论的3个支柱:选择、投影和连接。
7.1 使用同等连接和非同等连接编写select语句访问多个表的数据
- 连接的类型
基本连接分为:同等连接和非同等连接
自然连接:当源表和目标表共享相同名称的列时,就可以执行自然连接,无需指定连接列。
select region_name from regions natural join countries where country_name='Canada'
select country_name from countries natural join regions where region_name='Americas';
当源表和目标表有多个相同列名时,您不需要它们作为连接列,可以使用join...using格式:
select region_name from regions join countries using(region_id) where country_name='Canada';
【注意】:如果Oracle没有强加任何规则表明两个离散表中具有相同名称的列必须彼此相关,如果regions表和countries表中有2列名称相同,那么等于这2列都作为连接条件。
join...on格式:不依赖于源表和目标表具有相同名称的列,允许显示表示连接列
select region_name from regions a join countries b on(a.region_id=b.region_id) where country_name='Canada';
【注意】:除了join...on格式,一般不要使用其他格式的自然连接,因为数据库设计师在设计表结构的时候,并不一定保证都能做到不同表相关列的名称都相同。
2 外连接
假设employees和departments表由公共的department_id值连接,要想得到含空的department_id值以及departments表中没有department_id值的employess记录,就需要使用到外连接。
3 交叉连接
cross join 与笛卡尔积类似
select * from regions cross join countries where country_id='CA';
4 Oracle连接语法:
传统的 Oracle连接语法支持:自然连接、外连接和笛卡尔积连接
--自然连接 select region_name from regions,countries where regions.region_id=countries.region_id; --外连接 select department_name,last_name from employees,departments where employees.department_id(+)=departments.department_id; --笛卡尔积 select * from regions,countries;
【注意】:外连接加号放置位置:如果出现在源表侧,那么目标表全匹配,源表中没有出现的,填空也要全匹配目标表,反之亦然。最简单的记法:加号在我这边,我要看(匹配)到你的全部。
- 使用SQL:1999语法连接表
Oracle9i之后,引入ANSI SQL:1999标准
语法:
select table1.column,table2.column from table1 [natural join table2] | [join table2 using (column_name)] | [join table2 on (table1.column_name = table2.column_name)] | [left |right|full outer join table2 on (table1.column_name=table2.column_name)] | [cross join table2]
- 限定模糊列名
当2个关联的表中含有相同名称的列,而显示结果也包含此列时,那么会出现列名重复定义错误,为了解决此问题,必须制定列的来源:
select regions.region_id from regions,countries
- natural join语句
语法:
select table1.column,table2.column from table1 natural join table2;
纯自然连接确定在table1和table2中具有公共名称的列,并使用所有这些列隐式连接这些表。
自然连接很简单,但基础薄弱,且存在风险,即使名称相同的2列没有任何关系,甚至没有兼容的数据类型,也会关联。
【注意】:natural join连接中的需要展示的列不能有限定词,例如:
select employees.employee_id from job_history natural join employees --会报错:ORA-25155: NATURAL 联接中使用的列不能有限定词
- 自然join using语句
语法:
select table1.column,table2.column from table1 join table2 using (join_column1,join_column2...);
纯自然连接有natural关键字,如果关键字natural和using出现在一个子句中,会报错。
using子句允许在using关键字中使用一个或者多个同等连接列。
using连接中展示列可以使用限定词,但是如果展示列包含using连接列时,不能出现限定词。
select e.last_name,e.first_name from job_history join employees e using (job_id,employee_id)
- 自然join on 语句
语法:
select table1.column,table2.column from table1 join table2 on(table1.column_name = table2.column_name)
natural join和join using子句依赖具有相同列名的连接列。
join...on子句允许显式指定连接列,而不必担心它们的列名是否相同,但是连接列的数据类型必须相同或可以隐式转换。
join...on是最灵活、最常用的形式。
select e.last_name,j.job_id from employees e join job_history j on(e.employee_id=j.department_id)
问:要求从多个表中检索信息,分组结果,并运用聚集函数。可以依据来自多个表源的数据使用分组函数吗?
答:可以,连接多个表最终生成一组数据集,再使用聚集函数,就像这些数据来自于一个表源一样。
问:当连接2个表时,它们之间存在一种风险,即包含公共列名,如果这些列出现在select子句中,Oracle知道从哪个表中获得数据吗?
答:不知道,会报错,要使用限定词来避免模糊引用。
问:natural join子句依据共享相同值的公共名称的列连接2个表的行,可以依据某些而不是全部的共享列来连接2个表吗?
答:可以,使用join...using语句。
- N路连接和其他连接条件
select e.last_name,e.salary,l.city from employees e join departments d on (d.department_id=e.department_id and salary > 12000) join locations l on (l.location_id=d.location_id)
- 非同等连接
非同等连接根据不相等表达式匹配不同表中的列值。将源表中各行连接列的值与目标表中相应值进行比较,如果连接中使用的表达式计算为true,就会找到匹配。
使用join...in语句指定非同等连接,但连接条件包含<>,>,<,>=,<=等
语法:
select table1.column,table2.column from table1 [join table2 on (table1.column_name < table2.column_name)]
7.2 使用自连接将表连接到自身
使用join...on将表连接到自身
select a1.catalog_name catalog_name,a2.catalog_name parent_catalog_name from catalog a1 join catalog a2 on(a1.parent_catalog_id=a2.catalog_id) --catalog表结构:catalog_id,catalog_name,parent_catalog_id --其中parent_catalog_id为每一个catalog_id的父记录ID
7.3 使用外连接查看不满足连接条件的数据
- 内连接
内连接也叫连接,是最早的一种连接,最早被称为普通连接或自然连接。内连接是从结果中删除其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。
- 外连接
外连接则扩充了内连接的功能,会把内连接中删除表源中的一些保留下来,由于保留下来的行不同,把外连接分为左外连接、右外连接和全外连接这3种连接。
- 左外连接
select table1.column,table2.column from table1 left outer join table2 on (table1.column=table2.column)
左外连接返回join关键字左边表因为不满足连接条件而被排除的行。
select e.last_name,d.department_name,d.department_id from employees e left outer join departments d on (e.department_id=d.department_id)
最后返回的结果:LAST_NAME为Grant的department_id为空,亦然有结果返回,如果使用自然连接(内连接),是不会有这一行的返回的。
select e.last_name,d.department_name,d.department_id from departments d left outer join employees e on (e.department_id=d.department_id)
这一个查询返回的结果包含了departments表中所出现的所有部门的记录,即使employees表中没有出现这个department_id。
- 右外连接
和左外连接相反。
语法:
select table1.column,table2.column from table1 right outer join table2 on (table1.column=table2.column)
select e.last_name,d.department_name,d.department_id from departments d right outer join employees e on (e.department_id=d.department_id)
select e.last_name,d.department_name,d.department_id from employees e left outer join departments d on (e.department_id=d.department_id)
上面2个查询的功能相同。
- 全外连接
语法:
select e.last_name,d.department_name,d.department_id from departments d full outer join employees e on (e.department_id=d.department_id)
左右外连接只能返回join一边不满足条件的结果,而full join则返回所有结果。
select e.last_name,d.department_name,d.department_id from departments d full outer join employees e on (e.department_id=d.department_id)
上面的查询,只要包含department_id,无论是空值还是不能匹配的,都能找出来。
发表评论
-
存储过程返回多个结果集
2012-07-20 13:54 7394对于查询试的存储过程,一般会返回一个结果集,这个时候,使用正常 ... -
Oracle学习第三课(启动oracle)
2012-01-19 10:39 38【学习是螺旋上升的过程,由易到难,由少到多,由点到面,每一个步 ... -
oracle锁表与解除锁定
2012-01-17 13:50 3204SELECT s.sid,s.serial# as seria ... -
Oracle学习第二课(登出oracle和删除用户)
2012-01-14 19:43 4076【学习是螺旋上升的过程,由易到难,由少到多,由点到面,每一个步 ... -
Oracle学习第一课(登录oracle和创建用户)
2012-01-14 18:16 53397【学习是螺旋上升的过程,由易到难,由少到多,由点到面,每一个步 ... -
oracle sqlplus出现中文乱码
2012-01-13 22:24 1755使用下面语句设置当前session的语言环境: ... -
oracle中如何创建dblink
2012-01-12 16:56 1581当用户要跨本地数据库 ... -
安装完Oracle之后没有isqlplus服务
2012-01-12 01:15 1579在命令行中运行isqlplusctl start命令即可。 -
Osgi SpringDM struts2 学习笔记
2012-01-09 10:40 3260本笔记针对Spring-dynami ... -
JAR 文件规范(年底了,最近两天比较忙,可能要慢一点)
2012-01-07 13:03 3980英文版本: http://docs.oracle. ... -
第18章 Moving Data
2011-12-29 00:14 913certification objectives: D ... -
第11章 Managing Undo Data(管理撤销数据)
2011-12-24 17:55 1124certification objectives Ex ... -
Introduction to the Oracle Server Technologies(Oracle服务器技术介绍)
2011-12-22 21:33 1260certification objectives: Pos ... -
Exploring the database architecture(探索数据库架构)
2011-12-21 22:46 1010certification objectives: ... -
最简单的Oracle数据恢复 select ... as of
2011-12-09 10:20 5779概念: You perform a Flashback Qu ... -
cognos10下载
2011-12-08 22:10 2940cognos10 for windows下载地址: ... -
第八章 使用子查询解决问题
2011-12-06 15:42 1481认证目标: 定义子查询 描述子查询能够解决的问题的类 ... -
Oracle建立HR模式
2011-11-18 10:32 9698官方帮助 写道 Installing the HR Sch ... -
Oracle 权限、角色和安全规则
2011-11-16 15:54 1413权限 权限是执行某种类型的SQL语句和访问其他用户对象的 ... -
Oracle性能监视
2011-11-16 11:43 1236反应性监视(reactive) 10g以前的监视方法,事 ...
相关推荐
《Python数据可视化实战》第七章聚焦于新零售智能销售数据的可视化应用,旨在通过实例教授学生如何处理和展示这种数据。本章的教学目标是使学生掌握从数据获取到报告撰写的整体流程,包括理解新零售智能销售设备的...
第7章 数据绑定控件 300 7.1 数据绑定技术 301 实例188 格式化订货金额和订单日期并 进行绑定 301 实例189 使用绑定表达式高亮显示搜索关键字 302 实例190 Eval()绑定图书图片并实现单击图片 进行链接 304 实例191 ...
第7章 借助数据透视表对不同的数据源进行分析 155 7.1 使用多重合并计算数据区域 156 7.2 多重合并计算数据区域的数据透视表的详细分析 161 7.2.1 “行”字段 162 7.2.2 “列”字段 162 7.2.3 “值”字段 ...
第7章 借助数据透视表对不同的数据源进行分析 155 7.1 使用多重合并计算数据区域 156 7.2 多重合并计算数据区域的数据透视表的详细分析 161 7.2.1 “行”字段 162 7.2.2 “列”字段 162 7.2.3 “值”字段 ...
第7章 借助数据透视表对不同的数据源进行分析 155 7.1 使用多重合并计算数据区域 156 7.2 多重合并计算数据区域的数据透视表的详细分析 161 7.2.1 “行”字段 162 7.2.2 “列”字段 162 7.2.3 “值”字段 ...
**jQuery第七章上机练习与...总之,jQuery第七章的学习是一个进阶的过程,涉及到多个核心概念和技术。通过上机练习和课后作业,不仅可以巩固理论知识,还能提高实际操作能力,为成为一名熟练的前端开发者奠定坚实基础。
总的来说,“第7章 查询数据”的学习资料将为你提供关于如何有效地从MySQL数据库中获取和处理信息的基础知识,这不仅对数据库管理员,也对任何需要与数据库打交道的开发人员来说都是不可或缺的技能。通过深入学习并...
在第七章的源代码中,可能会包含多个项目的示例,每个项目都对应一个或多个特定的Android API或概念。 例如,如果这一章涉及到用户界面(UI)设计,你可能会看到使用布局管理器(如LinearLayout, RelativeLayout, ...
格式代码可以包括多个部分,例如`#`表示非零数字,`0`用于填充无效的零,`?`用于对齐,`"字符串"`用于显示原样字符串等。此外,还可以使用条件格式,如颜色或图标,来根据数值的大小或条件改变显示。 2. **表格的...
在“Android应用开发详解第七章”的内容中,我们聚焦于Android开发的重要方面,这通常涵盖了更高级的主题,可能包括UI设计、数据存储、网络通信、多线程以及性能优化等关键知识点。以下是对这些主题的详细说明: 1....
第7章 借助数据透视表对不同的数据源进行分析 155 7.1 使用多重合并计算数据区域 156 7.2 多重合并计算数据区域的数据透视表的详细分析 161 7.2.1 “行”字段 162 7.2.2 “列”字段 162 7.2.3 “值”字段 ...
1. 基本查询语句:这是SQL语言从数据库中获取信息的一个基本语句,使用SELECT语句实现从一个或多个表中查询信息,并将结果显示为一个结果集。基本语法格式包括SELECT、FROM以及WHERE子句的使用。例如,使用SELECT ...
7. **Loop Labels**:对数据集中的多个Label字段进行迭代,适合多分类问题的处理。 8. **Loop Attributes Subsets**:组合数据集中的多个属性,用于创建新的特征集。 9. **Branch**:实现条件分支,根据条件选择...
在“HTML第7章 课堂练习 PPT及答案 CSS.ACCP6.0”这个资料包中,我们可以深入学习HTML的第七章内容,以及相关的CSS实践应用。 在HTML的第七章,通常会涵盖更高级的主题,可能包括表格、表单、框架、图像处理、...
这一章的内容涵盖了数据的定义、信息的概念、媒体的类型,以及进位计数制、数的表示方法、字符编码和数据校验码等多个重要知识点。 首先,数据是计算机处理的基础,包括数值型和非数值型数据。数值型数据用于表示...
在第二章“统计数据的收集、整理与显示”中,我们关注的核心知识点包括调查设计、抽样方法、统计分组以及数据整理技术。 1. 调查单位与填报单位:调查单位是调查的目标实体,例如在人口普查中,每个人的个人信息是...
数据建模和设计治理管理内容涉及多个方面,例如: - **举办设计评审会**:由建模人员记录讨论要点,但不一定必须由他们解决所有问题。 - **问题处理**:如果建模人员无法解决评审小组提出的问题,可以将问题挂起。 ...
- SET用于定义字段能取预设列表中零个或多个值的字段。 8. **二进制字符串类型**: - **BINARY**: 用于存储二进制数据,长度与VARCHAR相同。 - **VARBINARY**: 变长二进制字符串。 - **TINYBLOB**: 存储最多255...
【第7章 图形显示】 本章主要探讨的是在中望CAD 2010中如何管理和控制图形的显示,包括图形的重画、重新生成、缩放和平移等操作,以便于用户更加高效地进行绘图工作。 **7.1 图形的重画与重新生成** 7.1.1 图形的...
【自考第七章数据库课件】主要讲解了Access数据库中报表的相关知识,报表是数据库中用于展示和打印数据的重要组成部分。报表的主要作用是对大量数据进行计算、分组和汇总,并可以按照用户需求设计输出格式。 **报表...