在oracle中建立帶有座標欄位的表。
1,通過create語句,建立乙個表,其中座標字段型別為mdsys.sdo_geometry;例如:
create table cola_markets (
mkt_id number primary key,
name varchar2(32),
shape mdsys.sdo_geometry);
2,在空間元資料表(user_sdo_geom_metadata )中新增一條記錄,例如:
insert into user_sdo_geom_metadata
values (
'cola_markets', //具有空間資料型別的標的名字
'shape', //儲存空間資料欄位的名字
mdsys.sdo_dim_array( //定義這個座標欄位的維數名稱(x,y 2維),最小最大值,以及座標的容忍度(精確度).
mdsys.sdo_dim_element('x', 0, 20, 0.005), //二維中的第一維名稱是x,最小值是0,最大值是20,容忍度是0.005。
mdsys.sdo_dim_element('y', 0, 20, 0.005) //二維中的第二維名稱是y,最小值是0,最大值是20,容忍度是0.005。
),null //座標體系對應的srid值
);3,建立空間索引,例如:
create index cola_spatial_idx
on cola_markets(shape)
indextype is mdsys.spatial_index;
以上三步完成後,這個具有空間資料型別的表,才算建立完畢!下面就需要往這個表中插入資料,insert語句如下:
insert into cola_markets values(
2,'cola_b',
mdsys.sdo_geometry(
2003, //圖形型別
null,//srid值
null,//點座標,如果型別是點,則這個引數有效,如果後面2個引數不為null,此引數無效
mdsys.sdo_elem_info_array(1,1003,1),
mdsys.sdo_ordinate_array(5,1, 8,1, 8,6, 5,7, 5,1)));
解釋:上面出現的1003,2003標示圖形型別。
第一位代表了維數,可以是二維、三維、四維;
第二位標識linear referencing system (lrs),非lrs的型別,此值為0;
第三、四位代表形狀,從00到09共有10種型別。00 – 忽略此形狀;01 – 點;02 – 線;03 – 多邊形或麵;04 – 型別的集合;05 – 01型別的集合,既多點集;06 – 02型別的集合;07 – 03型別的集合;08 – 體(三維空間中有多個面封閉起來的空間);09 – 08型別的集合;
sdo_elem_info代表幾何形狀包含的元素的資訊,最基本的元素是點。比如,乙個立方體包含多個面元素。元素還可以包含自己的子元素。
乙個元素的資訊是乙個陣列,陣列中有三個數。如(1, 1003, 1, 4, 2003, 1)包含兩個元素,第乙個元素是(1, 1003, 1),第二個元素是(4, 2003, 1)。每乙個陣列的含義如下:
第乙個數代表了元素在sdo_ordinates中起始偏移位。如sdo_ordinates是(5, 4, 2, 12, 8, 15, 3, 7),元素的起始偏移位是5,那麼(8, 15)是元素的第乙個點。如果元素是連續的,那麼元素最後點的偏移位就是下一元素的起始偏移位,如(8, 15)是元素的終點,同時也是下一元素的起點。
第二個數代表了元素的型別,最多有四位。如果元素是復合型別,那麼在它之後跟著是它的子元素。
第三個數指名如何解釋元素。對復合元素來說,表明它子元素的個數。對單元素來說,通常元素型別的進一步解釋,比如(1, 1003, 3)代表矩形,(1, 1003, 4)代表圓形……
sdo_ordinates
此屬性是乙個陣列,包含了幾何形狀所有的座標點。比如二維系統中,sdo_ordinates(5, 4, 2, 12, 8, 15, 3, 7)包含了四個點,分別是(5, 4); (2, 12); (8, 15); (3, 7)。
在oracle中建立dblink訪問其他資料庫
當有多個資料庫伺服器,如果想從一台伺服器訪問其他資料庫中的特定使用者下的表,則必須使用dblink。建立dblink的方法有2種 1 已經配置好本地服務名 資料庫伺服器上的 create public database link fwq12 connect to fzept identified b...
在oracle中建立自動增長字段
oracle在建立表時和其他的資料庫有點不一樣,如sql server可以在int型別的字段後加上 identity 1,1 該字段就會從1開始,按照 1的方式自增,將這個字段設定為主鍵,有利於我們進行資料的插入操作。mysql中可以使用 auto increment 即可。但是oracle有點麻煩...
在ORACLE中建立自增字段
通過建立序列來實現 oracle sequence的簡單介紹 在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。1 create sequence 你首先要有create sequence或者create any sequence許可權,cr...