[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 數據庫 > 其它 > 正文
PostgreSQL7.0手冊-用戶手冊-8. 數組
編譯:何偉平 laser@zhengmai.com.cn (2001-04-21 21:26:30)

第八章. 數組
注意:這些必須在數組特性中成為一章,願意做志願者嗎? -thomas 1998-01-12
Postgres 允許記錄的字段定義成定長或不定長的多維數組.數組類型可以是任何基本類型或用戶定義類型.為說明這些用法,我們先創建一個由基本類型數組構成的表: 
CREATE TABLE sal_emp (
    name            text,
    pay_by_quarter  int4[],
    schedule        text[][]
);
上面的語句將創建一個叫 sal_emp 的表,它有一個 text 類型字符串字段(name), 一個一維 int4 型數組(pay_by_quarter),代表雇員的季度薪水和一個兩維text類型數組(schedule),表示雇員的周計劃.現在我們做一些插入(INSERTS),注意我們向數組字段追加數據時,我們用大括號把數據值括起來並且用逗號將它們分開.如果你懂 C ,這與初始化一個結構很像。 
INSERT INTO sal_emp
    VALUES ('Bill',
    '{10000, 10000, 10000, 10000}',
    '{{"meeting", "lunch"}, {}}');

INSERT INTO sal_emp
    VALUES ('Carol',
    '{20000, 25000, 25000, 25000}',
    '{{"talk", "consult"}, {"meeting"}}');
(譯注:這裡數組的初始化是向初始值最少的數組元素對齊的,
如上面第一個插入,庫中只存儲"meeting",是因為向第二組初始值'{}'對齊的結果)
現在我們可以在 sal_emp 上運行一些查詢。首先,我們演示如何一次訪問數組的一個元素.這個查詢檢索在第二季度薪水變化的雇員名: 
SELECT name FROM sal_emp WHERE pay_by_quarter[1] <> pay_by_quarter[2];

 name
-------
 Carol
(1 row)
Postgres 缺省使用"以1為基" 的數組習慣-也就是說,一個n元素的數組從array[1]開始,到array[n]結束. 
這個查詢檢索所有雇員第三季度的薪水: 

SELECT pay_by_quarter[3] FROM sal_emp;

 pay_by_quarter
----------------
          10000
          25000
(2 rows)
我們還可以訪問一個數組的任意部分,或稱子數組.對一維或更多維數組,一個數組的某一部分是用"底腳標 : 高腳標"表示的。下面查詢檢索Bill該周頭兩天的第一件計劃. 
SELECT schedule[1:2][1:1] FROM sal_emp WHERE name = 'Bill';

      schedule
--------------------
 {{"meeting"},{""}}
(1 row)
我們還可以寫 
SELECT schedule[1:2][1] FROM sal_emp WHERE name = 'Bill';
獲取同樣的結果。 
一個數組值可以完全被代替: 

UPDATE sal_emp SET pay_by_quarter = '{25000,25000,27000,27000}'
    WHERE name = 'Carol';
或者只是更新某一個域: 
UPDATE sal_emp SET pay_by_quarter[4] = 15000
    WHERE name = 'Bill';
或者更新某個部分: 
UPDATE sal_emp SET pay_by_quarter[1:2] = '{27000,27000}'
    WHERE name = 'Carol';
目前不可能重新改變一個數組的大小,除非完全替換數組;比如,我們無法通過賦予 array[5] 數值把一個四個元素的數組改變為一個五元素的數組。 
CREATE TABLE 的語法允許定義固定長度的數組: 

CREATE TABLE tictactoe (
    squares   int4[3][3]
);
不過,目前的實現並不強制數組尺寸限制 --- 這個特點與未聲明長度數組一樣。 

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

(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
PostgreSQL7.0手冊-附錄-文檔 (2001-04-21 23:50:44)
PostgreSQL7.0手冊-附錄-日期/時間支持-CVS 倉庫 (2001-04-21 23:48:48)
PostgreSQL7.0手冊-教程 -73. Postgres SQL 高級特性 (2001-04-21 23:45:36)
PostgreSQL7.0手冊-教程 -72. 查詢語言 (2001-04-21 23:44:40)
PostgreSQL7.0手冊-教程 -71. 開始 (2001-04-21 23:42:54)
PostgreSQL7.0手冊-教程 -70. 體系結構 (2001-04-21 23:41:58)
PostgreSQL7.0手冊-教程 -69. SQL (2001-04-21 23:41:23)
PostgreSQL7.0手冊-開發者手冊 -68. 分頁文件 (2001-04-21 23:39:22)
PostgreSQL7.0手冊-開發者手冊 -67. 端接口 (2001-04-21 23:38:34)
PostgreSQL7.0手冊-開發者手冊 -66. gcc 缺省優化 (2001-04-21 23:37:20)

===更多相關===
 

★  樊強制作 歡迎分享  ★