PostgreSQL:其它型別
布林型別
PostgreSQL 提供了標準的 SQL 型別布林值。布林型別可以有幾種狀態:true、false 和第三狀態 null,這是 SQL 空值表示。
名稱 | 儲存長度 | 描述 |
---|---|---|
boolean | 1 byte | 狀態為 true 或 false |
列舉型別
列舉(列舉)型別的資料型別,包括靜態,有序設定的值。在許多程式語言支援列舉型別,它們是相等。
CREATE TYPE week AS ENUM ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');
列舉一旦產生,它們可以像任何其他型別。
幾何型別
幾何資料型別表示二維空間物件。最根本的不同點是形成的所有其他型別的基礎。
名稱 | 儲存長度 | 表示 | 描述 |
---|---|---|---|
point | 16 bytes | 平面上的點 | (x,y) |
line | 32 bytes | 無限的線(未完全實現) | ((x1,y1),(x2,y2)) |
lseg | 32 bytes | 有限的線段 | ((x1,y1),(x2,y2)) |
box | 32 bytes | 矩形框 | ((x1,y1),(x2,y2)) |
path | 16+16n bytes | 封閉路徑(類似於多邊形) | ((x1,y1),...) |
path | 16+16n bytes | 開啟路徑 | [(x1,y1),...] |
polygon | 40+16n | 多邊形(類似於封閉路徑) | ((x1,y1),...) |
circle | 24 bytes | 圓 | <(x,y),r> (中心點和半徑) |
位串型別
位串型別用於儲存位掩碼。他們要麼是 0 或 1。 SQL 位型別有兩種:(n)的位而變位(n)的,其中 n 是一個正整數。
文字搜尋型別
這個型別支援全文檢索,這是透過自然語言文件的集合的搜尋,找到那些最符合查詢活動。這有兩種資料型別:
名稱 | 描述 |
---|---|
tsvector | 這是一個由不同的單片語成的排序列表,這些單詞被規範化,以合併同一個單詞的不同變體,稱為“詞彙”。 |
tsquery | 它儲存要搜尋的語義,並按照布林運算子& (and)、| (OR)和!(非)。括號可用於強制運算子的分組。 |
UUID 型別
一個 UUID(通用唯一識別符號)寫成小寫的十六進位制數字序列,由連字號,特別是一組 8 位數字,然後由三組4位數字,然後由一組 12 位數字分開幾組,總 32 位,128 位代表。
一個UUID的例子是: 550e8400-e29b-41d4-a716-446655440000
XML 型別
XML 資料型別可以用來儲存 XML 資料。對於儲存 XML 資料,首先建立 XML 值函式 XMLPARSE 如下:
XMLPARSE (DOCUMENT '<?xml version="1.0"?> <tutorial> <title>PostgreSQL Tutorial </title> <topics>...</topics> </tutorial>') XMLPARSE (CONTENT 'xyz<foo>bar</foo><bar>foo</bar>')
JSON型別
JSON 資料型別可以用來儲存 JSON( JavaScript 物件符號)資料。這樣的資料也可以被儲存為文字,但 JSON 資料型別具有的優點是檢查每個儲存的值是否為有效的 JSON 值。也有相關的支援功能可以直接用來處理 JSON 資料型別,如下所示:
示例 | 結果 |
---|---|
array_to_json('{{1,5},{99,100}}'::int[]) | [[1,5],[99,100]] |
row_to_json(row(1,'foo')) | {"f1":1,"f2":"foo"} |
複合型別
此型別代表一個欄位名和資料型別,即結構的一個表中的行或記錄列表。
複合型別宣告
下面的例子演示如何宣告一個複合型別:
CREATE TYPE inventory_item AS ( name text, supplier_id integer, price numeric );
此資料型別可用於在建立表如下所示:
CREATE TABLE on_hand (item inventory_item, count integer );
複合值輸入
複合值可以插入文字常量,封裝領域括號內的值,並用逗號將它們隔開。一個例子是如下:
INSERT INTO on_hand VALUES (ROW('fuzzy dice', 42, 1.99), 1000); yiibai.com
此有效的定義同上的 inventory_item 的。行關鍵字實際上是可選的表示式中,只要有一個以上的欄位。
訪問複合型別
要訪問一個複合列的欄位,欄位名,使用點很像選擇欄位從一個表名。例如,要選擇一些子欄位,on_hand 示例表的查詢將如下所示:
SELECT (item).name FROM on_hand WHERE (item).price > 9.99;
甚至可以使用表名(例如,在一個多表查詢),像這樣:
SELECT (on_hand.item).name FROM on_hand WHERE (on_hand.item).price > 9.99;
範圍型別
範圍型別的資料型別,採用了一系列資料。範圍型別可以是離散的範圍(例如,所有的整數值 1 到 10)或連續範圍(例如任何時間點的上午 10:00 到上午 11:00)。
內建的範圍型別範圍包括:
-
int4range:整數範圍
-
int8range:長整型數字範圍
-
numrange:數值範圍
-
tsrange:沒有時區的時間戳範圍
-
tstzrange:帶有時區的時間戳範圍
-
daterange:日期範圍
可以建立自定義的範圍型別,做出新的型別的適用範圍,如使用int型別為基礎的IP地址範圍,或者使用浮點資料型別為基礎的浮動範圍。
範圍型別支援包容性和排他性的範圍邊界分別使用 [] 和 () 個字元,例如: [4,9) 代表所有從包括 4 但不包括 9 的整數。
物件識別符號型別
物件識別符號(OID)內部使用 PostgreSQL 作為各種系統表的主鍵。 OIDS IfWITH 指定或 default_with_oids 配置變數,只有在這樣的情況下啟用的 OID 被新增到使用者建立的表。下表列出了幾個別名型別。 OID 別名型別有沒有自己的操作,除了專門的輸入和輸出過程。
名稱 | 參考 | 描述 | 結果 |
---|---|---|---|
oid | any | 數字物件識別符號 | 564182 |
regproc | pg_proc | 函式名 | sum |
regprocedure | pg_proc | 帶引數型別的函式 | sum(int4) |
regoper | pg_operator | 運算子名稱 | + |
regoperator | pg_operator | 帶引數型別的運算子 | *(integer,integer) 或 -(NONE,integer) |
regclass | pg_class | 關係名稱 | pg_type |
regtype | pg_type | 資料型別名 | integer |
regconfig | pg_ts_config | 文字搜尋配置 | english |
regdictionary | pg_ts_dict | 文字搜尋字典 | simple |
偽型別
PostgreSQL型別系統包含了一些特殊用途的統稱為偽型別的項。一個偽型別不能被用作列的資料型別,但它可以用來宣告一個函式的引數或結果型別。下表列出了現有的偽型別。
名稱 | 描述 |
---|---|
any | 指示函式接受任何輸入資料型別。 |
anyelement | 指示函式接受任何資料型別。 |
anyarray | 指示函式接受任何陣列資料型別。 |
anynonarray | 指示函式接受任何非陣列資料型別。 |
anyenum | 指示函式接受任意列舉資料型別。 |
anyrange | 指示函式接受任何範圍資料型別。 |
cstring | 指示一個函式接受或返回一個以 null 結尾的 C 字串。 |
internal | 指示函式接受或返回伺服器內部資料型別。 |
language_handler | 程式語言呼叫處理程式被宣告為返回 language_handler。 |
fdw_handler | 外資料包裝處理程式被宣告為返回 fdw_handler。 |
record | 標識返回未指定行型別的函式。 |
trigger | 觸發器函式被宣告為返回觸發器。 |
void | 指示函式不返回值。 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2738520/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 《卸甲筆記》-PostgreSQL和Oracle的資料型別的對比系列五:其它型別筆記SQLOracle資料型別
- 07HTML基礎-meta其它型別HTML型別
- 將lob型別的index移動到其它tablespace型別Index
- postgreSQL 索引(二)型別介紹SQL索引型別
- PostgreSQL:字元——型別及函式SQL字元型別函式
- PostgreSQL批次改資料型別SQL資料型別
- PostgreSQL 陣列型別使用詳解SQL陣列型別
- 【Postgresql】索引型別(btree、hash、GIST、GIN)SQL索引型別
- 系統學習iOS動畫之七:其它型別的動畫iOS動畫型別
- 介紹PostgreSQL的陣列型別FUSQL陣列型別
- 資料型別與函式索引-PostgreSQL篇資料型別函式索引SQL
- PostgreSQL:數字——型別、運算子和函式SQL型別函式
- PostgreSQL:時間——型別、運算子和函式SQL型別函式
- PostgreSQL:陣列——型別、運算子和函式SQL陣列型別函式
- PostgreSQL自定義自動型別轉換(CAST)SQL型別AST
- PostgreSQL學習手冊(常用資料型別)SQL資料型別
- PostgreSQL:網路地址——型別、運算子和函式SQL型別函式
- Oracle vs PostgreSQL,研發注意事項(5)- 字元型別OracleSQL字元型別
- 《卸甲筆記》-PostgreSQL和Oracle的資料型別的對比系列四:大資料型別筆記SQLOracle資料型別大資料
- Oracle vs PostgreSQL,研發注意事項(10)- PostgreSQL資料型別轉換規則#2OracleSQL資料型別
- Oracle vs PostgreSQL,研發注意事項(11)- PostgreSQL資料型別轉換規則#3OracleSQL資料型別
- Oracle vs PostgreSQL,研發注意事項(9)- PostgreSQL資料型別轉換規則#1OracleSQL資料型別
- Oracle vs PostgreSQL,研發注意事項(7)- 型別轉換OracleSQL型別
- 『翻譯』"typeof null 是什麼?" 以及其它讓我們感到困惑的 JavaScript 型別NullJavaScript型別
- PostgreSQL:所有支援的資料型別及建表語句例項SQL資料型別
- TS資料型別:型別別名/聯合型別/字面量型別/型別推論等綱要資料型別
- 淺談程式語言型別的強型別,弱型別,動態型別,靜態型別型別
- PostgreSQL10.1手冊_部分II.SQL語言_第8章資料型別_8.12.UUID型別SQL資料型別UI
- PostgreSQL Array 陣列型別與 FreeSql 打出一套【組合拳】SQL陣列型別
- javascript基本型別 引用型別 基本包裝型別JavaScript型別
- C#的型別——值型別與引用型別C#型別
- PostgreSQL關係型資料庫SQL資料庫
- 值型別和引用型別型別
- JavaScript引用型別-Object型別JavaScript型別Object
- mysql BLOB型別 TEXT型別MySql型別
- 值型別與引用型別型別
- PostgreSQL 原始碼解讀(210)- 隱式型別轉換(func_match_argtypes)SQL原始碼型別
- PostgreSQL 原始碼解讀(202)- 查詢#115(型別轉換)SQL原始碼型別