ArcMap中的SQL语句
(2) EXCEPT运算符 EXCEPT运算符通过包括所有在 TABLE1中但不在 TABLE2中的行并消除所有重复行而派生出一个 结果表。当ALL随 EXCEPT一起使用时( EXCEPT ALL,不消除重复行。 (3) INTERSECT运算符 INTERSECT运算符通过只包括 TABLE1和 TABLE2中都有的行并消除所有重复行而派生出一个结果 表。当ALL随 INTERSECT一起使用时( NTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的 3连接 1. INNER JOIN 2 LEFT JOIn 3 RIGHT JOIN 4LEFT OUTER JOIN 首先设定一个我们要用的两个表 表A 表B ID NAME ID CLASS IBN C1 123 SONY C3 BMW C4 (1)INNER JOIN: SELECT* FROM A INNER JOIN B ON A ID=B ID 得表 NAME CLASS IBM C1 3 BMW C3 对了就是两个表的ID都存在并相同得到这两个表的组合表 (2)LEFT JOIN: SELECT* FROM A LEFT JOIN B ON AID=B ID 得表 NAME CLASS IBM C1 123 SONY BMW C3 得到的是A(eft语句的左边的表)的所有记录而B表对应的记录没有的话也要补齐 3 RIGHT JOIN. SELECT* FROM A RIGHT JOIN B ON A ID=BID 得表 NAME CLASS IBM 134 C1 BMW nu C4 RGHT(右)得到的是B( (right语句的右边的表)的所有记录而A表对应的记录没有的话也要补齐 4 FULL OUTER JOIN: SELECT* FROM A FULL OUTER JOIN B AID=B, ID 得表 NAME CLASS IBM C1 卢宇森ucy11149@163com) 雷中华051181@gmail.com,3 SONY null BMW C3 null C4 4经典SQL语句示例 下部分语句的是mysq的写法, access中的写法可能不尽相同。 (1)说明:复制表(只复制结构源表名:a新表名:b)( Access可用) 法一: select t into b from a where11 法二: select top O* into b from a (2)说明:拷贝表(拷贝数据源表名:a目标表名:b)( Access可用) insert into b(a, b, c select d, e, f from (3)说明:跨数据库之间表的拷贝(具体数据使用绝对路径)( Access可用 insert into b(a,b,d) select d,e, f from b in"具体数据库’ Where条件 或 insert into b(a,b,c) select d,e, f from[数据库全路径 o where条件 15f: from b in "&Server. Map Path(". )&"\data. mdb"&"'where (4)说明:子查询(表名1:a表名2:b) select a, b, c from a where a in(select d from b)et: select a, b, c from a where a In( 1, 2, 3) (5)说明:显示文章、提交人和最后回复时间 select a title, a username b adddate from table a, (select max(adddate)adddate from table where table title=a title)b (6)说明:外连接查询(表名1:a表名2:b select a.a. a.b. a c b.c. b.d. bf from a left oUt join b on a a= bc (7)说明:在线视图查询(表名1:a) select* from (Select a, b, c from a)t where t a>1 (8)说明: between的用法 between限制查询数据范围时包括了边界值, not between不包括 select from table1 where time between time1 and time2 select a,b,c, from table1 where a not between数值1and数值2 (9)说明:in的使用方法 select from table1 where a[not]in(‘值1;值2′;值4′′值6 (10)说明:两张关联表,删除主表中已经在副表中没有的信息 delete from tablel where not exists( select from table2 where table l fieldl=table 2. field 1 (11)说明:四表联查问题 L select* from a left inner join b on a a=bb right inner join c on aa=cc inner join d on a. a=dd ere (12)说明:日程安排提前五分钟提醒 select*from日程安排 Where datediff( minute’f开始时间, getdate0)>5 (13)说明:一条SQL语句搞定数据库分页 select top10b.*from( select top20主键字段排序字段from表名 order by排序字段 desc) a 卢宇森ucy11149@163com) 雷中华(051181@gmail.com4 表名 b where b主键字段=a主键字段 order by a.排序字段 (14)说明:前10条记录 select top10* form table1 where范围 (15)说明:选择在每-一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用 于论坛每月排行榜每月热销产品分析,按科目成绩排名,等等.) select a, b, c from tablename ta where a=(select max(a) from tablename to where tb. b=ta b (16)说明:包括所有在 TableA中但不在 TableB和 Tabled中的行并消除所有重复行而派生出一个 结果表 (select a from tableA )except (select a from table B )except(select a from tableD (17)说明:随机取出10条数据 select top 10* from tablename order by rnd(id (18)说明:随机选择记录 select rnd( id) (19)说明:删除重复记录 Delete from tablename where id not in(select max(id)from tablename group by coll, col2, J (20)说明:列出数据库里所有的表名 select name from sysobjects where type= 'U (21)说明:列出表里的所有的 select name from syscolumns where id=object_id( TableName) (22)说明:列示type、 vender、pcs字段,以tpe字段排列,case可以方便地实现多重选择,类 似 select中的case。 select type sum(case vender when a then pcs else O end), sum(case vender when C then pcs else 0 end), sum(case vender when ' B then pcs else 0 end) FROM tablename group by 显示结果 pe vender p2233 CS 电脑 电脑 光盘 光盘 手机 AABABC 手机 (23)说明:选择从10到15的记录 select top 5* from(select top 15 from table order by id asc)table_5g order by id desc 到这里,你可能要问了,说了这么多,我也没有看出来它和 ArcMap有什么关系。下来我们就说说在 ArCMap里面,SQL可以用在哪里 卢宇森ucy11149@163com) 雷中华051181@gmail.com5 SQL Expression SQL,结构化查询语言,查询是其最重要的功能。在 ArcMap中,主要体现在 SQL Expression。ESRI帮 助中, SQL Reference部分做了较为详细介绍,更具体的可以参阅网络或者不冋数据库自身查询语言帮助 1 SQL Expression在 ArcMap中的应用 SQL Expression,在地理数据管理、地图制图、地理处理中都得到充分应用 11数据管理 主要包括栅格、矢量以及表格等数据提取、转换、更新相关 11.1提取( Extract) 通过 Query Builder实现自定义条件的数据提取,主要包含以下三个工具 工具名 操作数据类型所在工具箱 Select 矢量 Analysis\Extract Table select 表格 Analysis\Extract Extract by Attributes 栅格 Spatial\Analyst 11.2转换( Conversion) 工具名 操作数据类型所在工具箱 Feature Class To Feature class 矢量 Conversion\To geodatabase Table to table 表格 Conversion\To Geodatabase CADLinesto polygon Features CAD Samples\ Conversion\To From CAD 说明 A. Feature Class To Featureclass在 ArcToolbox中可用,同时也是 ArcCatalog中 import\Feature Class(single调用的工具 B. CADLinestoPolygon Features是ESRI自带的用 Model builder搭建的 Model,其中借助 Query Builder实现对cAD中满足某些条件的线、标注匹配生成面,同时把标注内容作为属性值的功能。比 如特定CAD图层的线和本层内点生成带标注属性的面就是在 polyline和 annotation都设置” layer - XX 卢宇森ucy11149@163com) 雷中华t051181@gmail.com6 113更新 工具名 所在位置 备注 Select By Attribut 菜单栏 Tools 借助 Field Calculator实现自定义数据量更新 set null Spatial Analyst\ Conditional 12地图制图 在 ArcMap中做数据显示或者地图制图的时候,可以使用 SQL EXpression控制显示、标注哪些数据。 值得注意的是,这里语句出现错误可能导致 ArcMap Drawing Errors,出错后可以从数据类型等方面考虑 排查 例如[A字段是数字类型,在 SQL Expression设置[A]=1’这样就会报如下错误 Axc圆 ap Draring Err0rs ring rrors One or more layers fallen to draw or more layers failed o draw test:标准表达式中数据类型不匹配 FDO ETor: D General function failure [d_dd 标准表达式中数据类型六匹配。 Definition Quer label classes 121显示 Layer Properties\ Definition Query,实现自定义数据显示。在使用 Distributed geodatabase等工 具条或工具箱上工具的时候,会只对满足 Query部分处理,比如, Definition Query后用 Get cout可以 统计图层符合条件的要素数目 ?x ection DisplaySymbol Fields ⊥s±1r1t1cx.山ur JIeru builder 确定 取消 应用 卢宇森ucy11149@163com) 雷中华(051181@gmail.com) 122标注 Layer Properties\ Labels、 classes labels,可以实现分级标注,应用 SQL EXpression设置每级标 注的数据 eneral Source I selection Display Symbols 11s Defini tiaa Query Tah Joans E Eclat 地 lass:Default M Label featues r this cles etm间的e 回来牢 le-defined_sbel Sldle Placement propertie Label 5 sIt 参考范例 Lable如何按字段来显示颜色? http://bbs.esrichina-bj.cn/esri/viewthread.php?tid=55808 13地理处理 131 Layer相关 地理处理中,许多工具的输入项可以是数据,也可以是图层(含图层文件及內存图层) ArcGIS环境下 如果输入时图层,一般只对图层中、或者图层被选中部分进行处理。可以借助如下 layer工具制造图层(2 中图层均可)参与地理处理 工具名 功能 所在工具箱 select layer by attribute同菜单栏 Tools(Select by Attribute Layers and Table Views Make Feature layer 创建矢量内存图层,参与地理处理 同上 Make Query Table 同上,操作数据为属性 同上 卢宇森ucy11149@163com) 雷中华(051181@gmail.com)8 1.3.2 Model builder 借助 SQL Expression实现相同CAD层的 polyline加上 annotation生成带标注属性的多边形 CAD Lines to Polygon Features(Samples)( 11.2) SQL Expression可以作为单独的变量,如下图,右键 Create Variable新建 F lode bUilder -sQL Expression 回爵展啪出因型面Ad卜 SQL卫xp SEL E:1"e331 03 SQL Route Measure Evet Prop Carcel soL Expression in Model Builder 33线性参考 Linear Referencing 具体参考 Diligentpig版主的系列讲座 ArcGIS中的线性参考/动态分段技术 http://bbs.esrichina-bj.cn/esri/viewthread.php?tid=56638 卢宇森ucy11149@163com) 雷中华t051181@gmail.com) 2 SQL Expression概览 ScIcct By Attribut cs anow selectable avers in this list Query Builder Method ICreate a ew selectian OBJECTID OBVECTIDI RIGHT FID RIGHT FIDI Anc 」x=」」 ) Not OLL Get Unique Yalues Go To sELECT*FROM dddd WHERE SELECT-FROM dddd WHER Query Builder Select By Attribute Clear ancel Apply Cls己 如上图所示为 Select By Attribute和 Query Builder的界面。不难看出, ArcGIS中的这个SQL生 成器不是通用的,前半部分固定 SELECT*FR○ M layer WHERE ,从第一部分我们早已了解, 这是纷繁芜杂的SQL中一条极为普煸也简单的查询语句,可以也只能通过 WHERE条件部分的补充完整 来实现二1部分所提及的应用。 2.1超简单语句-直接查询 (1)选中dtb层dbm是”011”的要素 DLBM]=011 注意:不同类型的值写法不同,具体参见 (2)选中dtb层dbm与dlbm1不相等的要素 [DLBM] [DLBM1 注意:不同格式的数据字段的写法不一样,口为PGDB中的写法,具体参见 ArcGIs帮助 卢宇森ucy11149@163com) 10 雷中华t051181@gmail.com)
用户评论