软件测试数据库中SQL语句创建Oracle Spatial的图层方法
SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的 SQL
接口。它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使他具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。 结构化查询语言(Structured Query Language)最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。 美国国家标准局(ANSI)与国际标准化组织(ISO)已经制定了SQL标准。ANSI是一个美国工业和商业集团组织,负责开发美国的商务和通讯标准。ANSI同时也是ISO和International Electrotechnical Commission(IEC)的成员之一。ANSI 发布与国际标准组织相应的美国标准。1992年,ISO和IEC发布了SQL国际标准,称为SQL-92。ANSI随之发布的相应标准是ANSI SQL-92。ANSI SQL-92有时被称为ANSI SQL。尽管不同的关系数据库使用的SQL版本有一些差异,但大多数都遵循 ANSI SQL 标准。SQL Server使用ANSI SQL-92的扩展集,称为T-SQL,其遵循ANSI制定的 SQL-92标准。 SQL语言包含4个部分: ※ 数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。 ※ 数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。 ※ 数据查询语言(DQL),例如:SELECT语句。 ※ 数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。 SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。 SQL 是用于访问和处理数据库的标准的计算机语言。 SQL 指结构化查询语言 SQL 使我们有能力访问数据库 SQL 是一种 ANSI 的标准计算机语言 编者注:ANSI,美国国家标准化组织
接下来说一下有关数据库中SQL语句创建Oracle Spatial的图层方法
如果需要直接操作数据库,写SQL脚本的方式创建空间数据库,需要注意,创建数据库后还需要将一些必要的元数据信息写入对应的表中,然后再向空间表插入行数据(一行就是一个地图图元),大家可以参照下面的SQL语句操作,一定可以创建成功的。
1.创建空间表
CREATE TABLE Spatable (
ID NUMBER (11),
NAME VARCHAR2 (32),
MI_STYLE VARCHAR2 (254),
MI_PRINX NUMBER (11),
GEOLOC MDSYS.SDO_GEOMETRY );
2.将表元信息插入MapCatalog表中,如果该表不存在请用mapinfo/mapinfo登陆如数据库,请导入MapInfo公司提供的脚本,该脚本在MapXtreme
for Java安装后的目录中找到
insert into mapinfo.mapinfo_mapcatalog( spatialtype , tablename
, ownername, spatialcolumn, db_x_ll, db_y_ll, db_x_ur, db_y_ur,
coordinatesystem, symbol, xcolumnname, ycolumnname,
renditiontype, renditioncolumn, renditiontable, number_rows )
values
(13,'SPATABLE','DEMOGIS','GEOLOC',0,100000,0,100000,'NONEARTH
UNITS "M" BOUNDS (0, 0) (100000, 100000)
',NULL,'NO_COLUMN','NO_COLUMN',1,'MI_STYLE',NULL,NULL);
3.将表元信息插入MapCatalog表中,安装完Oracle Spatial就有
INSERT INTO USER_SDO_GEOM_METADATA valueS
('Spatable','GEOLOC',MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT(
'x', 0, 10000, .000000001),MDSYS.SDO_DIM_ELEMENT('Y', 0,
10000,.000000001)), NULL)
4.创建空间索引
CREATE INDEX Spatable_SX ON Spatable(GEOLOC) INDEXTYPE IS
MDSYS.SPATIAL_INDEX;
5.创建索引
create index Spatable_idx on Spatable(mi_prinx);
6.向表中插入数据,一行代表一个图元
insert into Spatable values (1, 'tab_1', '', 1,
MDSYS.SDO_GEOMETRY(
2001, NULL, MDSYS.SDO_POINT_TYPE(6027.08803, 1563.71732, NULL),
NULL, NULL));