📄 mapinfo重点及难点讲解1.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0052)http://www.hynu.edu.cn/wyds/zihuanxi/mapinfo/SQL.htm -->
<HTML><HEAD><TITLE>Mapinfo重点及难点讲解</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY bgProperties=fixed bgColor=#ffffff>
<DIV align=center>
<CENTER>
<TABLE width=746 bgColor=#c7edbc border=0>
<TBODY>
<TR>
<TD width=738>
<P align=center><STRONG><FONT face=宋体 color=#ff0000 size=4><A
href="http://www.hynu.edu.cn/wyds/zihuanxi/CAI_Online.htm#MapInfo 重难点讲解"
target=_self
tppabs="http://coobe.cs.hn.cninfo.net/~xzjlj/explain.htm.htm">Mapinfo重点及难点讲解</A></FONT><FONT
face=宋体 color=#0000ff size=4>(一)</FONT></STRONG></P>
<P align=center><STRONG><FONT face=金山简黑体 color=#ff0000
size=5><BR></FONT><A
href="http://www.hynu.edu.cn/wyds/zihuanxi/mapinfo/SQL.htm"><FONT
face=金山简黑体 color=#ff0000 size=4>SQL查询</FONT></A><FONT face=金山简黑体
color=#ff0000 size=4> <A
href="http://www.hynu.edu.cn/wyds/zihuanxi/mapinfo/Redistricting.htm">重分区</A>
<A
href="http://www.hynu.edu.cn/wyds/zihuanxi/mapinfo/seamless.htm">无缝图层 </A>
<A
href="http://www.hynu.edu.cn/wyds/zihuanxi/CAI_Online.htm">返回</A></FONT></STRONG></P>
<P align=justify><FONT face=宋体 color=#000000> <A
name=一、SQL查询>一、SQL查询</A> <BR>
</FONT></P><FONT face=宋体>
<P><FONT color=#000000>SQL Select的一般步骤:</FONT>
<OL>
<P align=justify><FONT color=#000000>1.打开你要查询的表。你要查询的表为基础表(Base
Table)</FONT></P>
<P align=justify><FONT color=#000000>2.选择Query>SQL Select,填写SQL
Select对话框满足你需要的那些分。按击OK,Mapinfo进行查询。</FONT></P>
<P align=justify><FONT
color=#000000>Mapinfo从你的基础表中抽出数据,把查询结果保存在一个被称为结果表的特殊临时表中。结果表仅有满足你的条件的行和列。结果表的默认名是Selection(尽管你可以在SQL
Select对话框的Info Table Named位置上指定一个不同的结果表名)。</FONT></P>
<P align=justify><FONT
color=#000000>注意:以下第三条暗示:结果表既反映在Browser窗口,也反映在Map窗口中,换句话说,可收查询结果保存为另一个图层。保存方法见下面的第5条。</FONT></P>
<P align=justify><FONT
color=#000000>3.如果你要看查询结果,打开一个Map窗口或(和)一个Browser窗口。默认的是MapInfo自动以一个Browser窗口显示结果表(除非你清除了SQL
Select对话框中的Browser Results检查盒)。</FONT></P>
<P align=justify><FONT
color=#000000>如果你的结果表被命名为Selection(默认名),Browser窗就显示一个不同的表名,例如Query1名Query2。这是因为你浏览这个Selection表的瞬间,MapInfo对该表作了一个“快拍”,并命名这个快拍为Queryn(n是数字,1或更大)。MapInfo主要按快拍是因为“Selection”是一个特殊的表名,每当你选择或不选择某些行时,Selection都在动态变化。</FONT></P>
<P align=justify><FONT color=#000000>在SQL
Select对话框中,你可以为你的结果表输入一个另外的名字(例如,你可以命名你的结果表为My-Query)。这就阻止了MapInfo把你的结果表重命名为Queryn。</FONT></P>
<P align=justify><FONT color=#000000>4.MapInfo自动选择结果表中全部的行。这样,在你执行了SQL
Select之后,你就能够接着执行选择行的全套操作。例如,你可以(通过选择Option>Region
Style)对所有被选择的行提供另一种充填色,或者你能够Cut或Copy选择的全部行。</FONT></P>
<P align=justify><FONT
color=#000000>通常,你对结果表所作的任何变化都会自动作用于你的原始(基础)表。例如,如果你用SQL
Select选择了基础表中的某些行,然后又从你的结果表中删除了部分行,MapInfo就会从你的表中删除相应的行。但是,如果你查询产生了小计(Subtotals),你可以改变这个结果表而不影响基础表。</FONT></P>
<P align=justify><FONT color=#000000>5.如果你要作一个结果表的永久备份,选择File>Save
As。</FONT></P>
<P align=justify><FONT color=#000000>如果你你不执行Save
As存盘,该结果表将在你退出MapInfo时被删除。</FONT></P>
<LI><FONT color=#000000>SQL Select对话框各区的填写</FONT> </LI></OL>
<OL>
<LI><FONT color=#000000>Select Columns区</FONT> </LI></OL>
<P align=justify><FONT
color=#000000>(1)利用这个区来指定在查询表中将出现哪些列。例如查询World表,可以指定Select
Columns:Country,Population,Indust_Grwth,如果你要你的结果表有与你的原表相同的列组,那就在这个区输入一个*号。</FONT></P>
<P align=justify><FONT
color=#000000>如果你要你的结果有一个与你的原表不同的列组,就要删去这个*号并输入由逗号分隔的列名(如下同)表达式列表。这个区能够包括一个*号或者一个列表达式列表,但不能同时包括这两种。要在你填Select
Columns区之前填From Tables区。</FONT></P>
<P align=justify><FONT
color=#000000>如果你查询涉及的不止一个有,各个列名之前必须有它的表名,二者之间用西文句号分隔。因此,如果你要执行一个涉及两个表的查询,其中之一是Canada表,并且你要查询包括该表的Population列,那么你必须用列表达式Canada.Population。当你使用两个或多个表时,Columns下拉列表自动把表名插到各个列名之前。</FONT></P>
<P align=justify><FONT
color=#000000>(2)只选择部分列出现在结果表中是有用的,特别是你的原表有很多列而你仅需操作其中的少数列时(或许因为屏幕上只能同时显示少数列)</FONT></P>
<BLOCKQUOTE>
<P align=justify><FONT color=#000000>(3)如何输入一系列列名:</FONT></P></BLOCKQUOTE>
<P align=justify><FONT color=#000000>在From
Tables区输入一个表名,可用键盘打入,也可用鼠标从Table下拉列表中选入。</FONT></P>
<P align=justify><FONT color=#000000>用鼠标在Select
Columns区中按击,使插入点出现在该区内。</FONT></P>
<P align=justify><FONT color=#000000>用退格键或删除键删去*号(如果其中有*号),Select
Columns区能够包含一个*号或者一串列名,但不能同时包含这两种。</FONT></P>
<P align=justify><FONT
color=#000000>从对话框右边的Columns下拉列表中选择一个列名。MapInfo把这个列名Copy到Select
Columns区。</FONT></P>
<P align=justify><FONT
color=#000000>如果你的查询还包括另外一些列名,从下拉列表中选择另外的一些列名。每当你选择另外的列名时,MapInfo自动插入逗号以分隔列名。</FONT></P>
<BLOCKQUOTE>
<P align=justify><FONT color=#000000>(4)计算某些列</FONT></P></BLOCKQUOTE>
<P align=justify><FONT color=#000000>SQL Select能够计算出列(derived
Columns)并把这些导出列存放到结果表中。导出列是MapInfo在中根据基础表中已有的一个或多个列的内容计算出的一个特殊的临时列。</FONT></P>
<P align=justify><FONT
color=#000000>例如,你的表或许含有字段Purchases92或Purchases93(分别代表各顾客在1992和1993年购物的总金额)。如果你要你的查询结果显示一个Total
Purchases列,表示各顾客1992和1993年合起来的购物金额,你可以在你的Select
Colomns区内包括一个导出列。在这个例子中,导出列应该有这样的形式:</FONT></P>
<BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE>
<P align=justify><FONT color=#000000>Purchases 92 + Purchases
93</FONT></P></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE>
<P align=justify><FONT
color=#000000>同样,你可能有一个包含有字段Fname(代表顾客的第一名)和Lname(顾客的后名)的顾客信息表。如果你要你的结果表包括顾客的全名,你也可以在你的Select
Columns区包括一个导出列,在这个例子中,导出列会有这样的形式:</FONT></P>
<BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE>
<P align=justify></FONT><FONT face=宋体 color=#000000>Fname +
</FONT><FONT color=#000000>“”</FONT><FONT face=宋体 color=#000000> +
Lname</FONT><FONT face=宋体></P></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE>
<P align=justify><FONT color=#000000>为指定一个导出列,你就要在Select
Columns区输入一个表达式。一个导出列表达式是若干列名,操作符(例如+和-)和函数(例如Ucase$函数,它把一个字串转换为大写的)的一个组合。</FONT></P>
<P align=justify><FONT color=#000000>在指定导出列之前,你必须先在From
Table区输入一个或多个表名。</FONT></P>
<P align=justify><FONT color=#000000>如何指定一个导出列表达式</FONT></P>
<OL>
<LI><FONT color=#000000>按Select Columns区,在该区出现插入点。</FONT>
<LI><FONT color=#000000>删除区内的*号</FONT>
<LI><FONT
color=#000000>输入一个列表达式。列表达式应该包括一个或多个列名,如果表达式包括一个以上的列名,这个表达式一般包含操作符(例如+或-)来把多个列组合成为一个导出值。</FONT>
<P align=justify><FONT color=#000000>有许多不同的函数和操作符能够用于列表达式中。</FONT></P>
<LI><FONT
color=#000000>如果需要为列表达式指定一个别名。指定别名的方法是:在列表达式后打一个空格,然后再打入用双引号括起来的别名。</FONT>
<P align=justify><FONT
color=#000000>别名是可选的。如果你给了你的列表达式一个别名,那么,当你以Browser窗口显示结果表时别名就会出现在这个列的顶上。如果你没指定别名,MapInfo会用表达式的内容作为别名(例如“Fname+Lname”)。</FONT></P>
<LI><FONT
color=#000000>如果需要,指定另外的列名或导出列表达式。如果你输入另外的列表达式,要输入逗号以隔开不同的表达式。</FONT>
</LI></OL>
<BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE>
<P align=justify><FONT
color=#000000>下面的例子显示一个执行加法的导出列表达式,把两个数字列的值加起来。这个例子假定Purchases92和Purchases93均为数字列:</FONT></P>
<BLOCKQUOTE>
<P align=justify><FONT color=#000000>Purchases92 +
Purchases93</FONT></P></BLOCKQUOTE>
<P align=justify></FONT><FONT face=宋体
color=#000000>下一个例子显示同样的列表达式,附加上了一个可选的列别名(</FONT><FONT
color=#000000>”<FONT face=宋体>Net_Purchases</FONT>”</FONT><FONT
face=宋体 color=#000000>):</FONT><FONT face=宋体></P>
<P align=justify></FONT><FONT face=宋体 color=#000000>Purchases92 +
Purchases93 “Net_Purchases</FONT><FONT
color=#000000>”</FONT></P><FONT face=宋体>
<P align=justify><FONT
color=#000000>下一个例子显示一个执行除法的导出列表达式,把Poppulagion列的内容除以一百万:</FONT></P>
<P align=justify></FONT><FONT face=宋体
color=#000000>Population/1000000 </FONT><FONT color=#000000>“<FONT
face=宋体>Millions</FONT>”</FONT></P><FONT face=宋体>
<P align=justify><FONT
color=#000000>下一个例子显示一个把两个字串列组合起来的导出列表达式。这个例子假定Fname
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -