国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > PostgreSQL > 正文

PostgreSQL7.0手冊(cè)-用戶手冊(cè)-3. 數(shù)據(jù)類型

2019-09-08 23:32:54
字體:
供稿:網(wǎng)友
第三章. 數(shù)據(jù)類型
內(nèi)容 
數(shù)值類型 
貨幣類型 
字符類型 
日期/時(shí)間類型 
布爾類型 
幾何類型 
IP 版本 4 網(wǎng)絡(luò)和主機(jī)類型 



描述 Postgres 內(nèi)建的可用數(shù)據(jù)類型.
Postgres 有著豐富的數(shù)據(jù)類型可用.用戶可以使用 DEFINE TYPE 命令為 Postgres增加新的數(shù)據(jù)類型. 
在數(shù)據(jù)類型這部分,隨后的各節(jié)將討論 SQL 標(biāo)準(zhǔn)的兼容性,移植問題和使用問題.一些 Postgres 類型直接與 SQL92-兼容類型相對(duì)應(yīng).其它一些 SQL92 語法定義的數(shù)據(jù)類型直接映射為Postgres 內(nèi)部的數(shù)據(jù)類型.許多內(nèi)建的數(shù)據(jù)類型有明確的外部格式.但是,有一些數(shù)據(jù)類型或者是Postgres特有的,如開放和閉合路徑,或者是有幾種可能格式的類型,如日期和時(shí)間類型. 

  表 3-1. Postgres數(shù)據(jù)類型 
   
 
 Postgres 類型 SQL92 或 SQL3 類型 描述 
bool boolean 邏輯布爾量 (真/假) 
box   二維平面中的方形盒 
char(n) character(n) 定長字符串 
cidr   IP v4網(wǎng)絡(luò)或主機(jī)地址 
circle   二維平面中的圓 
date date 日歷日期(不帶時(shí)間) 
decimal decimal(p,s) p <= 9,s = 0 的準(zhǔn)確數(shù)字 
float4 float(p), p < 7 精度為p的浮點(diǎn)數(shù) 
float8 float(p), 7 <= p < 16 雙精度浮點(diǎn)數(shù) 
inet   IP v4網(wǎng)絡(luò)或主機(jī)地址 
int2 smallint 兩字節(jié)長帶符號(hào)整數(shù) 
int4 int, integer 四字節(jié)長帶符號(hào)整數(shù) 
int8   八字節(jié)長帶符號(hào)整數(shù) 
interval interval 通用的時(shí)間間隔 
line   二維平面中的直線(無限長) 
lseg   二維平面中的線段 
money decimal(9,2) 美國風(fēng)格的貨幣類型 
numeric numeric(p,s) p == 9,s = 0的準(zhǔn)確數(shù)字 
path   二平面的開放的或封閉的幾何路徑 
point   二維平面中的點(diǎn) 
polygon   二維平面中的封閉幾何路徑 
serial   用于索引和/或交叉索引的獨(dú)一無二的標(biāo)識(shí)符 
time time 一天里的時(shí)間 
timetz time with time zone 一天里的時(shí)間,包括時(shí)區(qū) 
timestamp timestamp with time zone 日期/時(shí)間 
varchar(n) character varying(n) 變長的字符串 


注意: cidr 和 inet 用于處理任何IP類型數(shù)據(jù),但目前只能處理ipv4的數(shù)據(jù).在以后的版本里我們將將所有對(duì)ipv4的支持增加到對(duì)ipv6的支持中.
表 3-2. Postgres 函數(shù)常量 
   
 
 Postgres 函數(shù) SQL92 常量 描述 
getpgusername() current_user 當(dāng)前會(huì)話的用戶名 
date('now') current_date 當(dāng)前事務(wù)的日期 
time('now') current_time 當(dāng)前事務(wù)的時(shí)間 
timestamp('now') current_timestamp 當(dāng)前事務(wù)的日期和時(shí)間 
Postgres 擁有開發(fā) ORDBMS 應(yīng)用的首要特性.除了符合SQL3規(guī)范外,我們還支持很大一部分 SQL92 規(guī)范.盡管我們盡可能地遵循 SQL92 規(guī)范,但該規(guī)范里有一些方面欠缺考慮,在后繼的規(guī)范中不可能繼續(xù)存在.Postgres不會(huì)為這些特性花費(fèi)太多的時(shí)間;因?yàn)檫@些方面主要發(fā)生在很少使用或語意含混的場合,典型的用戶很少能碰到它們。 
絕大多數(shù)與基本類型(如:整數(shù)和浮點(diǎn)數(shù))對(duì)應(yīng)的輸入輸出函數(shù)都會(huì)做錯(cuò)誤檢查.出于改善執(zhí)行性能的考慮,一些操作符和函數(shù)(如加法和乘法)并不做運(yùn)行時(shí)的錯(cuò)誤檢查.因而在一些系統(tǒng)上的對(duì)某些數(shù)據(jù)類型的數(shù)字操作會(huì)導(dǎo)致輕微的數(shù)值溢出或下溢。 

要注意的是一些輸入輸出函數(shù)是不可逆的.也就是說,一個(gè)輸出函數(shù)的輸出結(jié)果與輸入的數(shù)據(jù)相比可能會(huì)丟失精度。 

注意:浮點(diǎn)數(shù)可以保持該類型的最高固有精度(一般來說,雙精度是15位,4字節(jié)浮點(diǎn)數(shù)是6位).其他依賴浮點(diǎn)的數(shù)據(jù)類型(如,幾何類型)也有相似精度.
數(shù)值類型
數(shù)值類型由2或4字節(jié)的整數(shù)以及4或8字節(jié)的浮點(diǎn)數(shù)和固定精度小數(shù)組成。 
表 3-3. Postgres 數(shù)值類型 
   
 
 數(shù)值類型 存儲(chǔ)空間 描述 范圍 
decimal 變長 用戶聲明精度 ~8000 位(數(shù)字) 
float4 4 bytes 變精度 6 位數(shù)字 
float8 8 bytes 變精度 15 位數(shù)字 
int2 2 bytes 固定精度 -32768 到 +32767 
int4 4 bytes 常用的固定精度數(shù) -2147483648 到 +2147483647 
int8 8 bytes 極大范圍的固定精度數(shù) +/- > 18 位數(shù)字 
numeric variable 用戶聲明精度 無限制 
serial 4 bytes 標(biāo)識(shí)或交叉索引 0 到 +2147483647 


數(shù)值類型對(duì)應(yīng)有一套完整的數(shù)學(xué)操作符和函數(shù).相關(guān)信息請(qǐng)參考 數(shù)字操作符 和 數(shù)學(xué)函數(shù)。 

int8 類型因?yàn)槭且烤幾g器來支持的,因而可能無法在所有平臺(tái)上得到支持。 

Serial(序列)類型
serial 類型是 Postgres 用其他現(xiàn)有的類型構(gòu)造出來的一種特殊的類型.典型的應(yīng)用是創(chuàng)建表的唯一標(biāo)識(shí),在當(dāng)前的實(shí)現(xiàn)中,下面一句話: 
CREATE TABLE tablename (colname SERIAL);
等價(jià)于下面幾句話: 
CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename
    (colname INT4 DEFAULT nextval('tablename_colname_seq');
CREATE UNIQUE INDEX tablename_colname_key on tablename (colname);
  
  注意 
創(chuàng)建為serial 類型的隱含序列號(hào)在刪除表時(shí)不會(huì)自動(dòng)刪除 


在刪除一個(gè)包含 serial 類型的表的時(shí)候,隱含的支持 serial 的序列號(hào)不會(huì)被自動(dòng)刪除。因此下面順序執(zhí)行的命令將是無效的: 

CREATE TABLE tablename (colname SERIAL);
DROP TABLE tablename;
CREATE TABLE tablename (colname SERIAL);
除非顯式地使用 DROP SEQUENCE 命令,序列號(hào)不會(huì)被刪掉而一直在數(shù)據(jù)庫里面。 

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

貨幣類型
過時(shí)的類型:money (貨幣)現(xiàn)在已經(jīng)過時(shí),用numeric 或 decimal 取代它。
money 類型支持US-類的固定小數(shù)點(diǎn)位置的貨幣數(shù)字.如果編譯Postgres 時(shí)使用了 USE_LOCALE 編譯選項(xiàng),貨幣類型將使用為locale(7)定義的貨幣習(xí)慣. 
表 3-4. Postgres 貨幣類型 
  貨幣類型 存儲(chǔ)空間 描述 范圍 
money 4 字節(jié) 固定精度 -21474836.48 到 +21474836.47 


numeric 最終將取代貨幣類型。因而應(yīng)該優(yōu)先使用。 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

字符類型
SQL92 定義了兩種基本的字符類型: char 和 varchar. Postgres 支持這些類型,并且還支持更通用的 text 類型,該類型不象varchar 一樣必須要定義一個(gè)數(shù)據(jù)域的上限. 
表 3-5. Postgres 字符類型 

  
  字符類型 存儲(chǔ)空間 評(píng)價(jià) 描述 
char 1 字節(jié) SQL92-兼容 單字符 
char(n) (4+n) 字節(jié) SQL92-兼容 定長,不足補(bǔ)空白 
text (4+x) 字節(jié) 最優(yōu) 變長 
varchar(n) (4+n) 字節(jié) SQL92-兼容 變長,有局限 


另外還有一種定長字符類型. name 類型,該類型只有一個(gè)用途,就是提供給Postgres 一個(gè)特別的類型用于內(nèi)部名字.該類型通常不是給一般用戶使用的.該類型長度當(dāng)前定為32字符長,但可以使用 NAMEDATALEN 重新定義.這個(gè)(變量)是在編譯的時(shí)候設(shè)置的,在以后的版本可能會(huì)改變. 

表 3-6. Postgres 特殊字符類型 
  字符類型 存儲(chǔ)空間 描述 
name 32 字節(jié) 32字節(jié)內(nèi)部類型 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

日期/時(shí)間類型
PostgreSQL 支持 SQL 中所有的日期和時(shí)間類型。 
表 3-7. Postgres 日期/時(shí)間類型 
  類型 描述 存儲(chǔ) 最早 最晚 精度 
timestamp 用于包含日期和時(shí)間的數(shù)據(jù) 8 bytes 4713 BC AD 1465001 1 microsec / 14 digits 
interval 用于時(shí)間間隔 12 bytes -178000000 years 178000000 years 1 mircosecond 
date 用于只包含日期的數(shù)據(jù) 4 bytes 4713 BC 32767 AD 1 day 
time 用于只包含時(shí)刻的數(shù)據(jù) 4 bytes 00:00:00.00 23:59:59.99 1 microsecond 


注意:為了保證和早期 PostgreSQL 版本的兼容,我們還繼續(xù)提供 datetime(等效于timestamp)和timespan(等效于interval)。不過對(duì)這些類型的支持現(xiàn)在局限于進(jìn)行一個(gè)隱含的轉(zhuǎn)換,轉(zhuǎn)換成timestamp 和 interval。類型abstime和 reltime 是低分辨率類型,它們被用于系統(tǒng)內(nèi)部。我們不鼓勵(lì)你在新的應(yīng)用里面使用這些類型,同時(shí)我們支持合適的時(shí)候把舊應(yīng)用中對(duì)應(yīng)的類型轉(zhuǎn)換成目前上面指明的。因?yàn)檫@些舊類型的部分或全部在未來的版本里可能消失。
日期/時(shí)間輸入
日期和時(shí)間的輸入幾乎可以是任何合理的格式,包括ISO-8601,SQL-兼容的,傳統(tǒng) Postgres 的和其他形式的。日期輸入里的月份和日子輸入可以是模糊的,因此存在一個(gè)設(shè)置用來表明具體應(yīng)該如何解釋。命令 SET DateStyle TO 'US' 或 SET DateStyle TO 'NonEuropean' 表示設(shè)置為“月份在日子前面”,而命令 SET DateStyle TO 'European' 表示設(shè)置為“日子在月份前面”。缺省是 ISO 風(fēng)格,但是缺省值可以在編譯或者運(yùn)行時(shí)改變。 
參閱 日期/時(shí)間支持 獲取關(guān)于日期/時(shí)間輸入的準(zhǔn)確的分析規(guī)則和可識(shí)別的時(shí)區(qū)的信息。 

記住任何日期或者時(shí)間輸入需要被單引號(hào)包圍,就象一個(gè)文本字符串一樣。 

date(日期)
下表是 date 類型可能的輸入方式。 
表 3-8. PostgreSQL 日期輸入 
  例子 描述 
January 8, 1999 無模糊 
1999-01-08 ISO-8601 格式,建議方式 
1/8/1999 US;在 European 模式下讀做八月一日 
8/1/1999 European;在 US 模式下讀做八月一日 
1/18/1999 US;在任何模式下都讀做一月十八日 
1999.008 年和年里的第幾天 
19990108 ISO-8601 年,月,日 
990108 ISO-8601 年,月,日 
1999.008 年和年里的第幾天 
99008 年和年里的第幾天 
January 8, 99 BC 公元前99年 


表 3-9. PostgreSQL 月份縮寫 
  月份 縮寫 
April(四月) Apr 
August(八月) Aug 
December(十二月) Dec 
February(二月) Feb 
January(一月) Jan 
July(七月) Jul 
June(六月) Jun 
March(三月) Mar 
November(十一月) Nov 
October(十月) Oct 
September(九月) Sep, Sept 


注意: 五月(May)沒有縮寫,原因是顯而易見的。
表 3-10. PostgreSQL 星期縮寫 
  星期 縮寫 
Sunday(星期天) Sun 
Monday(星期一) Mon 
Tuesday(星期二) Tue, Tues 
Wednesday(星期三) Wed, Weds 
Thursday(星期四) Thu, Thur, Thurs 
Friday(星期五) Fri 
Saturday(星期六) Sat 

time(時(shí)間)
下面是有效的 time (時(shí)間)輸入 
表 3-11. PostgreSQL 時(shí)間輸入 
  例子 描述 
04:05:06.789 ISO-8601,所有的時(shí)間域 
04:05:06 ISO-8601 
04:05 ISO-8601 
040506 ISO-8601 
04:05 AM 與04:05一樣;AM 不影響數(shù)值 
04:05 PM 與 16:05一樣;輸入小時(shí)數(shù)必須 <= 12 
z 與 00:00:00 一樣 
zulu 與 00:00:00 一樣 
allballs 與 00:00:00 一樣 


帶時(shí)區(qū)時(shí)間
這個(gè)類型是 SQL92 定義的,但是該定義顯示出非常基本的不足,使得這個(gè)類型幾乎無用。在多數(shù)情況下,date,time 和 timestamp 的組合應(yīng)該能提供任何應(yīng)用所需要的日期/時(shí)間功能的全部范圍。 
帶時(shí)區(qū)時(shí)間 接受所有對(duì) time 類型也合法的輸入,附加一個(gè)合法的時(shí)區(qū),如下: 

表 3-12. Postgres 帶時(shí)區(qū)時(shí)間輸入 
  例子 描述 
04:05:06.789-8 ISO-8601 
04:05:06-08:00 ISO-8601 
04:05-08:00 ISO-8601 
040506-08 ISO-8601 


參考 Postgres 時(shí)區(qū)輸入 獲取時(shí)區(qū)的更多例子。 

timestamp(時(shí)標(biāo))
有效的 timestamp 類型的輸入包含一個(gè)日期和一個(gè)時(shí)間的連接,后面跟著可選的 AD 或 BC,再后面跟著可選的時(shí)區(qū)。(參閱下面。)因此 
1999-01-08 04:05:06 -8:00

是一個(gè)有效的 timestamp 值,它是 ISO-兼容的。另外,已經(jīng)廣泛使用的格式 
January 8 04:05:06 1999 PST

也是支持的。 

表 3-13. PostgreSQL 時(shí)區(qū)輸入 
  時(shí)區(qū) 描述 
PST 太平洋標(biāo)準(zhǔn)時(shí)間(Pacific Standard Time) 
-8:00 ISO-8601 與 PST 的偏移 
-800 ISO-8601 與 PST 的偏移 
-8 ISO-8601 與 PST 的偏移 


interval(時(shí)間間隔)
interval 可以用下面語法聲明: 
  Quantity Unit [Quantity Unit...] [Direction]
@ Quantity Unit [Direction]

這里:Quantity 是 ...,-1,0,1,2,...;Unit 是 second,minute,hour,day,week,month,year,decade,century,millenium,或者這些單位的縮寫或復(fù)數(shù);Direction 可以是 ago 或者為空。 
特殊值
下面的SQL-兼容的函數(shù)可以用于對(duì)應(yīng)的數(shù)據(jù)類型的日期或時(shí)間輸入:CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP。 
PostgreSQL 為方便期間同樣還支持幾個(gè)特殊常量。 

表 3-14. PostgresSQL 日期/時(shí)間特殊常量 
  常量 描述 
current 當(dāng)前事務(wù)時(shí)間, (使用時(shí))deferred 
epoch 1970-01-01 00:00:00+00 (Unix 系統(tǒng)零時(shí)) 
infinity 比任何有效時(shí)間晚 
-infinity 比任何有效時(shí)間早 
invalid 非法輸入 
now 當(dāng)前事務(wù)時(shí)間 
today 今日午夜 
tomorrow 明日午夜 
yesterday 昨日午夜 


'now' 在該值被插入時(shí)解釋,'current' 在每次檢索該值時(shí)被解釋。所以你可能會(huì)在大多數(shù)應(yīng)用里使用 'now'。(當(dāng)然你真的想用 CURRENT_TIMESTAMP 的話也行,它等效于 'now'。) 

日期/時(shí)間輸出
使用 SET DateStyle,輸出格式可以設(shè)成四種風(fēng)格之一: ISO-8601, SQL (Ingres),傳統(tǒng)的 Postgres,和 German 風(fēng)格。缺省是 ISO 格式。 
表 3-15. PostgreSQL 日期/時(shí)間輸出風(fēng)格 
  風(fēng)格描述 描述 例子 
'ISO' ISO-8601 標(biāo)準(zhǔn) 1997-12-17 07:37:16-08 
'SQL' 傳統(tǒng)風(fēng)格 12/17/1997 07:37:16.00 PST 
'Postgres' 原始風(fēng)格 Wed Dec 17 07:37:16 1997 PST 
'German' 地區(qū)風(fēng)格 17.12.1997 07:37:16.00 PST 


日期和時(shí)間風(fēng)格的輸出當(dāng)然只是對(duì)應(yīng)上面例子的日期或者時(shí)間部分。 

SQL 風(fēng)格有歐洲和非歐洲(US)變種, 決定月份后面是日期還是正相反.(參閱上面日期/時(shí)間輸入部分,看看這個(gè)設(shè)置是如何影響對(duì)輸入值的解釋。) 

表 3-16. PostgreSQL 日期順序傳統(tǒng) 
  風(fēng)格 描述 例子 
European 日/月/年 17/12/1997 15:37:16.00 MET 
US 月/日/年 12/17/1997 07:37:16.00 PST 


interval 的輸出看起來象輸入格式,只是象 week 或 century 這樣的單位被轉(zhuǎn)換成年和日。在 ISO 模式下輸出看起來象 

[ Quantity Units [ ... ] ] [ Days ] Hours:Minutes [ ago ]
有幾種方法可以影響日期/時(shí)間類型的輸出: 
直接在postmaster啟動(dòng)時(shí)用于后端的環(huán)境變量 PGDATESTYLE。 
會(huì)話開始時(shí)用于 libpg 的環(huán)境變量 PGDATESTYLE。 
SQL 命令 SET DATESTYLE。 
時(shí)區(qū)
Postgres 在典型應(yīng)用中盡可能與SQL92 的定義相兼容.但 SQL92 標(biāo)準(zhǔn)在日期和時(shí)間類型和功能上有一些奇怪的混淆.兩個(gè)顯而易見的問題是: 
date(日期)類型與時(shí)區(qū)沒有聯(lián)系,而 time(時(shí)間)類型卻有或可以有. 
缺省的時(shí)區(qū)用一個(gè)整數(shù)常量表示與GMT/UTC的偏移(時(shí)差). 
然而,現(xiàn)實(shí)世界的時(shí)區(qū)只有在與時(shí)間和日期都關(guān)聯(lián)時(shí)才有意義,因?yàn)闀r(shí)間偏移量(時(shí)差)可能因?yàn)閷?shí)行類似夏時(shí)制這樣的制度而在一年里有所變化. 
為了克服這些困難, Postgres 只將日期和時(shí)間類型(同時(shí)包含日期和時(shí)間)與時(shí)區(qū)相關(guān)聯(lián),并且假設(shè)任何類型的當(dāng)?shù)貢r(shí)間只包含日期或時(shí)間.另外,時(shí)區(qū)的支持從操作系統(tǒng)的時(shí)區(qū)功能中引入,這樣就可以處理夏時(shí)制或其他可知的因素. 

Postgres 從操作系統(tǒng)獲得介于1902年和2038年的日期的時(shí)區(qū)支持(近乎是典型的Unix類系統(tǒng)的日期限制).在這個(gè)范圍之外的日期都假設(shè)為用全球統(tǒng)一時(shí)間(Universal Coordinated Time,UTC)聲明和使用。 

在系統(tǒng)內(nèi)部,所有日期和時(shí)間都是用全球統(tǒng)一時(shí)間(UTC)格式存儲(chǔ),也就是通常所說的格林威治時(shí)間(GMT).時(shí)間在發(fā)給客戶前端前由數(shù)據(jù)庫服務(wù)器轉(zhuǎn)換成本地時(shí)間,因而缺省的時(shí)區(qū)是服務(wù)器的時(shí)區(qū). 

有幾種影響時(shí)區(qū)特性的方法: 

直接在postmaster啟動(dòng)時(shí)后端使用TZ環(huán)境變量作為缺省時(shí)區(qū). 
客戶端使用libpq時(shí)用 PGTZ 環(huán)境變量將時(shí)區(qū)信息傳遞給后端. 
SQL 命令 SET TIME ZONE 可以給會(huì)話設(shè)置時(shí)區(qū). 
如果使用了非法的時(shí)區(qū),時(shí)區(qū)變?yōu)镚MT(在大多數(shù)系統(tǒng)上)。 
注意:如果設(shè)置了編譯選項(xiàng) USE_AUSTRALIAN_RULES,那么 EST 代表澳大利亞東部標(biāo)準(zhǔn)時(shí)間,( Australia Eastern Std Time)與UTC有 +10:00 小時(shí)的偏移量。
內(nèi)部
Postgres 用 Julian 記日法用于所有日期/時(shí)間計(jì)算。如果假設(shè)一年的長度是365.2425天時(shí),這個(gè)方法可以很精確地預(yù)計(jì)/計(jì)算從4713BC(公元前4713年)到很久的未來的任意一天的日期。 
19世紀(jì)以前的日期傳統(tǒng)(歷法)對(duì)一些趣味讀物有意義,但是在我們這里好象沒有充分的理由把它們編碼入日期/時(shí)間控制器里面去。 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

布爾類型
Postgres 支持用 bool 作為 SQL3 布爾數(shù)據(jù)類型. bool只能有兩個(gè)狀態(tài)之一: '真'('True') 或 '假'('False').第三種狀態(tài),'未知'('Unknow'),在 SQL3中沒有建議,因而也沒有實(shí)現(xiàn);NULL是一個(gè)有效的替代品.bool可用于任何布爾表達(dá)式,并且布爾表達(dá)式的結(jié)果也是布爾類型兼容的. 
bool 使用1字節(jié)存儲(chǔ)空間. 

表 3-17. Postgres 布爾類型 
  狀態(tài) 輸出 輸入 
True 't' TRUE, 't', 'true', 'y', 'yes', '1' 
False 'f' FALSE, 'f', 'false', 'n', 'no', '0' 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

幾何類型
幾何類型表示二維的平面物體.最基本的類型:點(diǎn),是其他類型的基礎(chǔ). 
表 3-18. Postgres 幾何類型 
  幾何類型 存儲(chǔ)空間 表達(dá) 描述 
point 16 bytes (x,y) 空間中一點(diǎn) 
line 32 bytes ((x1,y1),(x2,y2)) (無窮)直線 
lseg 32 bytes ((x1,y1),(x2,y2)) 線段 
box 32 bytes ((x1,y1),(x2,y2)) 長方形 
path 4+32n bytes ((x1,y1),...) 閉合路徑(與多邊形類似) 
path 4+32n bytes [(x1,y1),...] 開放路徑 
polygon 4+32n bytes ((x1,y1),...) 多邊形(與閉合路徑相似) 
circle 24 bytes <(x,y),r> 圓(圓心和半徑) 


一系列豐富的函數(shù)和操作符可用來進(jìn)行各種幾何計(jì)算,如度量,轉(zhuǎn)換,旋轉(zhuǎn)和計(jì)算相交等。 

Point(點(diǎn))
點(diǎn)是集合類型的基本二維構(gòu)造單位。 
用下面語法描述 point: 

( x , y )
  x , y

這里的參數(shù)是 
x 
是用一個(gè)浮點(diǎn)數(shù)表示的點(diǎn)的 x 坐標(biāo)。 
y 
y 是用一個(gè)浮點(diǎn)數(shù)表示的點(diǎn)的 y 坐標(biāo)。 
線段
線段(lseg)是用一對(duì)點(diǎn)來代表的. 
lseg 用下面語法聲明: 

( ( x1 , y1 ) , ( x2 , y2 ) )
  ( x1 , y1 ) , ( x2 , y2 )  
    x1 , y1   ,   x2 , y2

這里的參數(shù)是 
(x1,y1), (x2,y2) 
是線段的端點(diǎn)。 
Box(方)
方是用一對(duì)對(duì)角點(diǎn)來表示的。 
box 用下面語法聲明: 

( ( x1 , y1 ) , ( x2 , y2 ) )
  ( x1 , y1 ) , ( x2 , y2 )  
    x1 , y1   ,   x2 , y2

這里的參數(shù)是 
(x1,y1), (x2,y2) 
是一對(duì)對(duì)角點(diǎn)。 
方的輸出使用第一種語法.在輸入時(shí)將按先左下角后右上角的順序重新排列.你也可以輸入其他的一對(duì)對(duì)角點(diǎn).但輸入時(shí)將按照先左下角后右上角的順序重排并存儲(chǔ). 
Path(路徑)
路徑由一系列連接的點(diǎn)組成.路徑可能是"開放"的,也就是第一個(gè)點(diǎn)和最后一個(gè)點(diǎn)沒有連接,也可能是"閉合"的,這時(shí)第一個(gè)和最后一個(gè)點(diǎn)連接起來.我們提供了函數(shù) popen(p) 和 pclose(p)來強(qiáng)制路徑是開放的還是閉合的,可以用函數(shù) isopen(p) 和 isclosed(p) 來在查詢中選擇是那種. 
path 用下面語法聲明: 

( ( x1 , y1 ) , ... , ( xn , yn ) )
[ ( x1 , y1 ) , ... , ( xn , yn ) ]
  ( x1 , y1 ) , ... , ( xn , yn )  
  ( x1 , y1   , ... ,   xn , yn )  
    x1 , y1   , ... ,   xn , yn    

這里的參數(shù)是 
(x,y) 
組成路徑的線段的端點(diǎn)。前面的("[")表明一個(gè)開放的路徑,而前面的("(")表明一個(gè)閉合的路徑。 
路徑的輸出使用第一種語法輸出.注意 Postgres v6.1以前的版本路徑的格式是由一個(gè)圓括號(hào)開始――一個(gè)"關(guān)閉標(biāo)志",一個(gè)點(diǎn)的計(jì)數(shù)然后后面是點(diǎn)的列表,最后是一個(gè)圓括號(hào)結(jié)束.有一個(gè)內(nèi)建的函數(shù)upgradepath 可用于從6.1前版本輸出和重載路徑,將其轉(zhuǎn)換成新的。 
Polygon(多邊形)
多邊形由一系列點(diǎn)代表.多邊形可以認(rèn)為與閉合路徑一樣,但是存儲(chǔ)方式不一樣而且有自己的一套支持過程/函數(shù). 
polygon 用下列語法聲明: 

( ( x1 , y1 ) , ... , ( xn , yn ) )
  ( x1 , y1 ) , ... , ( xn , yn )  
  ( x1 , y1   , ... ,   xn , yn )  
    x1 , y1   , ... ,   xn , yn    

這里的參數(shù)是 
(x,y) 
組成多邊形邊界的線段的端點(diǎn)。 
多邊形輸出使用第一種語法.要注意在 Postgres 版本v6.1前,多邊形的格式是一個(gè)圓括號(hào)開頭,后面是點(diǎn)的x坐標(biāo)列表,然后是點(diǎn)的y坐標(biāo)列表,最后是一個(gè)圓括號(hào)結(jié)束.用內(nèi)建的函數(shù)upgradepoly 可用于從6.1前版本輸出和重載多邊形,將其轉(zhuǎn)換成新的。 
Circle(圓)
圓由一個(gè)圓心和一個(gè)半徑代表. 
circle 用下面語法表示: 

< ( x , y ) , r >
( ( x , y ) , r )
  ( x , y ) , r  
    x , y   , r  

這里的參數(shù)是 
(x,y) 
圓心 
r 
圓的半徑 
圓的輸出用第一個(gè)格式. 

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

IP 版本 4 網(wǎng)絡(luò)和主機(jī)地址
cidr 類型用于存儲(chǔ)用 CIDR(Classless Inter-Domain Routing)符號(hào)聲明的網(wǎng)絡(luò). inet 類型用一種形式簡單的變種來表示簡單的主機(jī)TCP/IP地址,并以此來存儲(chǔ)以 CIDR 符號(hào)表示的主機(jī)和網(wǎng)絡(luò)。 
表 3-19. PostgresIP V4 類型 
  IPV4 類型 存儲(chǔ)空間 描述 范圍 
cidr 變長 CIDR 網(wǎng)絡(luò) 有效的 IPV4 CIDR 字塊 
inet 變長 網(wǎng)絡(luò)和主機(jī) 有效的 IPV4 CIDR 字塊 


CIDR
cidr 類型聲明一個(gè) CIDR 網(wǎng)絡(luò). 說明一個(gè)無類(classless)的網(wǎng)絡(luò)的格式是 "x.x.x.x/y" 這里 "x.x.x.x" 網(wǎng)絡(luò)地址 而 "/y" 網(wǎng)絡(luò)掩碼中1的個(gè)數(shù).如果 "/y" 部分沒有指明,那么掩碼部分用舊的有類的網(wǎng)絡(luò)分類假設(shè)進(jìn)行計(jì)算,但要求輸入的數(shù)據(jù)已經(jīng)包括了確定掩碼的所需的所有8進(jìn)制位. 
下面是些例子: 

表 3-20. PostgresIP 類型舉例 
  CIDR 輸入 CIDR 顯示 
192.168.1 192.168.1/24 
192.168 192.168.0/24 
128.1 128.1/16 
128 128.0/16 
128.1.2 128.1.2/24 
10.1.2 10.1.2/24 
10.1 10.1/16 
10 10/8 


inet
inet 類型設(shè)計(jì)用來在一個(gè)數(shù)據(jù)域里存放所有主機(jī)信息,包括其所在的CIDR風(fēng)格的子網(wǎng).要注意如果你想正確存放CIDR網(wǎng)絡(luò),你應(yīng)該使用cidr 類型.inet 類型類似cidr 類型,只是它的主機(jī)部分可以是非零.可以用函數(shù)從數(shù)據(jù)域中將各種元素提取出來. 
該函數(shù)的輸入格式是 x.x.x.x/y 這里 x.x.x.x 是互聯(lián)網(wǎng)主機(jī), y 是網(wǎng)絡(luò)掩碼的位數(shù).如果 /y 部分未填,當(dāng)作/32.輸出時(shí),如果 /y 部分為 /32,將不會(huì)打印出來.只要不填"/y"部分,該類型可以直接作為主機(jī)類型使用.(??This allows the type to be used as a straight host type by just leaving of the bits part. ) 



--------------------------------------------------------------------------------
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 双柏县| 怀化市| 哈尔滨市| 酒泉市| 鲁山县| 原阳县| 榕江县| 徐水县| 宝清县| 深泽县| 小金县| 旬阳县| 太谷县| 昌江| 蛟河市| 绍兴市| 同江市| 刚察县| 茂名市| 乌拉特前旗| 柳江县| 怀安县| 柏乡县| 小金县| 盐城市| 思南县| 都安| 来安县| 东乡族自治县| 长乐市| 祁连县| 双流县| 内乡县| 格尔木市| 高雄市| 鹤山市| 榆树市| 潜江市| 从化市| 武安市| 高安市|