24
5 5 第第第第第第 第第第第第第 5.1 对对对对 5.1.1 对对 5.1.2 对对对对 5.2 SQL 对对 5.2.1 对对“对对”对对对 5.2.2 对对“对对 SQL” 对 5.2.3 “SQL 对对”对对对对 5.2.4 SQL 对对 5.2.5 “ 对对对”对对 5.2.6 “ 对对”对对 5.2.7 “ 对对对对”对对 5.2.8 “ 对对对对”对对 5.2.9 对对对对 5.3 对对 5

第 5 章 空间数据查询

Embed Size (px)

DESCRIPTION

第 5 章 空间数据查询. 5.1 对象查询 5.1.1 对象 5.1.2 对象查询 5.2 SQL 查询 5.2.1 通过“选择”来查询 5.2.2 通过“选择 SQL” 查询 5.2.3 “ SQL 选择”的操作示例. 5.2.4 SQL 选择 5.2.5 “选择列”字段 5.2.6 “条件”字段 5.2.7 “按列排序”字段 5.2.8 “按列分组”字段 5.2.9 聚合函数 5.3 习题5. 5.1 对象查询. - PowerPoint PPT Presentation

Citation preview

Page 1: 第 5 章 空间数据查询

第第 55 章章 空间数据查询空间数据查询

5.1 对象查询

5.1.1 对象

5.1.2 对象查询

5.2 SQL 查询

5.2.1 通过“选择”来查询

5.2.2 通过“选择 SQL” 查询

5.2.3 “SQL 选择”的操作示例

5.2.4 SQL 选择

5.2.5 “ 选择列”字段

5.2.6 “ 条件”字段

5.2.7 “ 按列排序”字段

5.2.8 “ 按列分组”字段

5.2.9 聚合函数

5.3 习题 5

Page 2: 第 5 章 空间数据查询

5.1 5.1 对象查询对象查询

5.1.1 5.1.1 对象对象 1. 点对象 :点是有特定的位置,维数为零的物体 。 2. 线对象:是 GIS 中非常常用的维度为一的空间组分,表示对象和它们边界的空间属性,由一系列坐标表示。 3. 多边形对象 :面状实体也称为多边形,是对湖泊、岛屿、地块等一类现象的描述。通常在数据库中由一封闭曲线加内点来表示。

Page 3: 第 5 章 空间数据查询

5.1.2 5.1.2 对象查询对象查询

图 5-1 选择好记录的窗口

图 5-2 “ 浏览表”对话框

图 5-3 查询结果浏览窗口

Page 4: 第 5 章 空间数据查询

5.2 5.2 SQLSQL 查询查询

SQL ( Structure Query Language )是结构化查询语言,是一套强大的查询系统。语言简单、指令简洁、操作简单、功能强大,被广泛运用在相互关联的数据库中,并能完成十分复杂的查询和选择。

Page 5: 第 5 章 空间数据查询

5.2.1 5.2.1 通过“选择”来查询通过“选择”来查询

图 5-4 “ 查询”菜单

图 5-5 “ 选择”对话框

Page 6: 第 5 章 空间数据查询

1. 从表中选择记录 2. 满足条件 3. 存结果于表 4. 结果排序按列 5. 浏览结果 6. 保存模板 7. 载入模板

图 5-6 “ 表达式”对话框

Page 7: 第 5 章 空间数据查询

5.2.2 5.2.2 通过“选择通过“选择 SQL”SQL” 查询查询

1. 选择列

2. 从表

3. 条件

4. 按列分组

5. 按列排序

6. 结果放入表

7. 浏览结果

8. 使用下拉列表

9. 保存模板

10. 载入模板图 5-7 “SQL 选择”对话框

Page 8: 第 5 章 空间数据查询

5.2.3 “5.2.3 “SQLSQL 选择”的操作示例选择”的操作示例 例如:查询并显示出人口大于 3000 万的省份

图 5-9 满足条件的浏览窗口

图 5-10 人口 >3000 万的省份单独显示

图 5-11 不排序 图 5-12 升序 图 5-13 降序

Page 9: 第 5 章 空间数据查询

5.2.4 5.2.4 SQLSQL 选择选择 ① 打开希望查询的表(倘若尚未打开的

话)。 ② 选择“查询”→“ SQL 选择”。 ③ 打开一个地图窗口或一个浏览窗口(若

用户想看到查询结果)。 ④MapInfo 自动选中结果表中所有行。

⑤ 若希望对查询表做一个永久拷贝,选择“文件”→“另存为”。

Page 10: 第 5 章 空间数据查询

5.2.5 “5.2.5 “ 选择列”字段选择列”字段

1. 计算派生列 “SQL 选择”可以计算派生列并将其

保存在结果表中。【例 5-1 】显示一个进行加法运算的派生

列表达式,它将两个数值型列相加。例中假设 Purchase92 和 Purchase93 都是数值型字段。

选择列: Purchase 92 Purchase 93

Page 11: 第 5 章 空间数据查询

2. 选择显示在结果表中的列 结果表中只包括在“选择列”域中输入的一个或多个列。

这一点在表中有许多列,而只希望使用其中少数列(可能是因为在屏幕上一次只能显示其中少数列)时很有用。

输入一系列列名: ① 在“从表”域中输入表名(若还未输入的话)。可以直接

输入表名或是在“表”下拉式列表中选择表名。 ② 单击“选择列”域,该域中出现插入符。 ③ 如果该域中有星号,先用〈 Backspace 〉键或〈 Delete 〉键

将其删除。“选择列”域中可以含有一个星号或者一系列列名。 ④ 在对话框右侧的“列”下拉列表中选择一个列名。 MapInfo

将该列名复制到“选择列”域中。 ⑤ 如果希望查询中包含多个列,可以在“列”下拉式列表中

选择其它列名。在选择其它列名时, MapInfo 自动插入逗号以分隔列名。

Page 12: 第 5 章 空间数据查询

3. 使用“ SQL 选择”对话框的“选择列”字段

使用“选择列”域来指定查询结果表中应该出现哪些列。若想结果表中含有与原始表相同的列集,在“选择列”域中输入一个星号( * )。

若想结果表中含有的列集与原始表不同,删除星号,并输入用逗号分隔的一系列列名或表达式,如下所述。“选择列”域可包含星号或一系列列表达式,但二者不可得兼。在填写“选择域”之前,请先填好“从表”域。

若查询涉及多个表,每个列名前必须加上表名,用句点分开表名和列名。这样,若你执行涉及两个表的查询,其中一个是“ Canada” 表,用户希望查询包括“ Canada” 表的“ Population” 列,则必须使用列表达式Canada.Population 。无论何时使用两个或多个表,“列”下拉式列表会自动将表名插入到列名前。

Page 13: 第 5 章 空间数据查询

5.2.6 “5.2.6 “ 条件”字段条件”字段

1. 按行序连接表 若两个表没有公共列,还可以按照记录的顺序

进行表连接。若知道一个表的第一条记录对应于另一个表的第一条记录,或更一般地说,一个表的第 N 条记录对应于另一个表的第 N 条记录,就可以通过引用一个特殊的名为 RowID 的列将两个表连接。

RowID 列含有代表着表中每个记录的行号的整数。因此,任何表的第一条记录的 RowID 值为1 ,第二条记录的 RowID 值为 2 ,依此类推。

要连接两个表使得 MapInfo匹配两个表的第 N 条记录,指定一个如下形式的“条件”表达式。

条件: TABLE_1.RowID = TABLE_2.RowID

Page 14: 第 5 章 空间数据查询

2. 按地理关系连接表 若两个表有图形对象, MapInfo 能根据那些对象之间的空间关系来连接表 。

图 5-10 对象包蕴关系

Page 15: 第 5 章 空间数据查询

3. 连接两个或多个表 MapInfo 能利用该公共字段将两表连接。

表 5-1 Counties表

表 5-2 Orders 表

方法:

选择列: *

从表: Counties, Orders

条件:

Counties.CountyName

= Orders.County

表 5-1 Counties 表

CountyName Pop_1980 Pop_1990

Foster 23,789 27,135

Williamette 35,456 34,846

Mason 147,101 151,201

表 5-2 Orders 表

Order # Customer County

478001 Francis Foster

478002 James Foster

478003 Wickwire Mason

 

Page 16: 第 5 章 空间数据查询

4. 执行子选择 MapInfo允许 SQL 选择中有子选择。子选

择是被放在“ SQL 选择”对话框中的“条件”域内的选择语句。

【例 5-9 】选择 states 中超过 4,000,000 人的所有城市。

选择列 * 从表 cities 条件obj within any(select obj from states

where Pop_1990 > 4000000)

Page 17: 第 5 章 空间数据查询

5. 设置过滤规则 过滤条件是常用于比较列值与其它值的逻辑表

达式。例如,下面的过滤条件使用大于运算符( > )来检查 Order_Amount 列的值是否大于 100 。

“ 条件”: Order_Amount > 100 如果查询包括上述“条件”子句, MapInfo

只选择 Order_Amount 值大于 100 的行。 如果表达式被词 and 或 or隔开,“条件”子

域可包含两个或多个逻辑表达式。如果表达式被词and连接, MapInfo 只选择满足全部两个条件的行。如果表达式被词 or连接, MapInfo 选择满足任一条件的所有行。

Page 18: 第 5 章 空间数据查询

6. 使用“ SQL 选择”对话框的“条件”字段

“ 条件”域有好几个作用。某些情况下,用户可能要使用一个条件表达式来过滤表,以便只看到那些满足一定准则的行。在其它情况下,可使用条件域来指定关系连接,从而查询能包括二个或多个表中的列。

注意:不能在“条件”域中使用聚合函数。

Page 19: 第 5 章 空间数据查询

5.2.7 “5.2.7 “ 按列排序”字段按列排序”字段1. 选择升序或降序排序 缺省情形下 MapInfo 按升序对表进行排序。要将字段按降序排以使大数字排在小数字前,可以在“按列排序”域中将 desc放在列名字前。

【例 5-12 】查询 World 表时,以下的 Order By排序准则。按列排序: Population desc 将该表按 Population 字段进行降序排序。

选择列: * 从表: City_1K 按列排序 State, Population desc

Page 20: 第 5 章 空间数据查询

2. 使用“按列排序”字段排序结果表 在“ SQL 选择”对话框中使用“按列排

序”域,可将结果表的记录排序。排序影响在浏览窗口中记录从上而下出现的顺序。

【例 5-13 】按照 State 列对 City_1K 表排序。 结果表按州名排序;但是,在 California

组内各行中,城市并未排序, San Francisco 出现在 Anaheim之上。要改正这一问题,可以在“按列排序”域中输入两个列名:

选择列:* 从表: City_1K 按列排序: State, City

Page 21: 第 5 章 空间数据查询

5.2.8 “5.2.8 “ 按列分组”字段按列分组”字段1. 按列分组示例 【例 5-14 】设想有一个顾客订单表。该表中每一行表示单

个订单。表中一列包含订货销售代理的名字,另一列含有顾客名字,还有一列包含订货量。

对每个销售代理,可找出: ① 该代理的订单数目。 ② 该代理的平均订货量。 ③ 该代理的总订货量。 以下 SQL 选择查询产生所需结果: 选 择 列 Sales_Rep, count(*),

average(AMOUNT), sum(AMOUNT) 从表 Orders 按列分组 Sales_Rep

Page 22: 第 5 章 空间数据查询

2. 使用“按列分组”字段分类汇总结果表 【例 5-15 】若有一个顾客数据库,并按州名列分组, MapInfo会

将所有得克萨斯州的顾客放入一组,所有加利福尼亚州的顾客放入另一组,等等。然后, MapInfo 计算每一组的聚合信息(总计、平均等)。

指定分类汇总标准: ① 在“按列分组”域中,输入 MapInfo 用于计算分类汇总的

列的列名或列号。 例如,若要按州总计顾客表,可输入表示顾客所在州的列的列

名(如 StateName )。 ② 在“选择列”域中,输入同一列名(如 StateName )。 ③ 在“选择列”域中,输入一个或多个运算符

( Sum 、 Count Avg 、 Min 或 Max )。请记住用逗号分隔开聚合运算符。

Page 23: 第 5 章 空间数据查询

5.2.9 5.2.9 聚合函数聚合函数 MapInfo提供以下聚合函数: Count(*): 计算一组中记录总数。它简单地使用

* 作参数,因为它应用到整条记录,而非某个特定字段。

Sum( 表达式 ) :计算一组中所有记录的〈表达式〉总计值。

Avg( 表达式 ) :计算一组中所有记录的〈表达式〉平均值。

Max( 表达式 ) :找出一组中所有记录的〈表达式〉最大值。

Min( 表达式 ) :找出一组中所有记录的〈表达式〉最小值。

Page 24: 第 5 章 空间数据查询

5.3 5.3 习题习题 5 5 一、 思考题1. 对象有哪几种形式 ? 并说明对象的特征。2. 说明“选择”查询与“ SQL” 查询的区别是什么?

3. 使用“ SQL” 选择的过程步骤是什么?4. 如何正确理解对象包蕴关系。二、上机练习1. 上机进行对象的查询,并显示查询结果。2. 上机分别练习“选择”查询与“ SQL” 查询这

两种查询方法。3. 上机完成本书中的“ SQL” 查询实例。