| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 8. 數據類型 | Fast Forward | Next |
PostgreSQL 提供用于存儲 IPv4,IPv6 和 MAC 地址的數據類型, 在 Table 8-17 裡顯示。 用這些數據類型比用純文本類型好,因為這些類型提供輸入錯誤檢查 和好些種特殊的操作和功能.
Table 8-17. 網絡地址類型
| 名字 | 存儲空間 | 描述 |
|---|---|---|
| cidr | 12 或 24 字節 | IPv4 或 IPv6 網絡 |
| inet | 12 或 24 字節 | IPv4 或 IPv6 網絡和主機 |
| macaddr | 6 字節 | MAC 地址 |
在對 inet 或者 cidr 數據類型進行排序的時候, IPv4 地址將總是排在 IPv6 地址前面,包括那些封裝或者是映射在 IPv6 地址裡 的 IPv4 地址,比如 ::10.2.3.4 或者 ::ffff::10.4.3.2。
inet 在一個數據域裡保存一個主機 IPv4 或 IPv6 地址, 以及一個可選的它所處的等效的子網. 子網的等效是通過計算主機地址中有多少位表示網絡地址的方法來 表示的 ("網絡掩碼"). 如果網絡掩碼是 32 並且地址是 IPv4 ,那麼不表示任何子網,只是一台主機。 在 IPv6 裡,地址長度是 128 位,因此 128 位將表明一個唯一的主機地址。 請注意如果你想只接受網絡地址,你應該使用 cidr 類型而不是 inet.
該類型的輸入格式是 地址/y 這裡 地址 是 IPv4 或者 IPv6 主機,y 是網絡掩碼的位數. 如果 /y 部分未填, 則網絡掩碼對 IPv 而言是 32,對 IPv6 而言是 128, 表示只有一台主機。 顯示時,如果 /y 部分是 /32,將不會顯示出來.
cidr 保存一個 IPv4 或 IPv6 網絡地址聲明. 其輸入和輸出遵循無類的互聯網域路由 (Classless Internet Domain Routing)習慣. 聲明一個網絡的格式是 地址/y 這裡 地址 是 IPv4 或 IPv6 網絡地址而 /y 是 網絡掩碼的二進制位數. 如果省略 /y, 那麼掩碼部分用舊的有類的網絡編號系統進行計 算,但要求輸入的數據已經包括了確定掩碼的所需的所有字節. 如果聲明了一個網絡地址,它的指定掩碼的右邊置了位,那麼算錯誤。
Table 8-18是些例子:
Table 8-18. cidr 類型輸入舉例
| cidr 輸入 | cidr 顯示 | abbrev(cidr) |
|---|---|---|
| 192.168.100.128/25 | 192.168.100.128/25 | 192.168.100.128/25 |
| 192.168/24 | 192.168.0.0/24 | 192.168.0/24 |
| 192.168/25 | 192.168.0.0/25 | 192.168.0.0/25 |
| 192.168.1 | 192.168.1.0/24 | 192.168.1/24 |
| 192.168 | 192.168.0.0/24 | 192.168.0/24 |
| 128.1 | 128.1.0.0/16 | 128.1/16 |
| 128 | 128.0.0.0/16 | 128.0/16 |
| 128.1.2 | 128.1.2.0/24 | 128.1.2/24 |
| 10.1.2 | 10.1.2.0/24 | 10.1.2/24 |
| 10.1 | 10.1.0.0/16 | 10.1/16 |
| 10 | 10.0.0.0/8 | 10/8 |
| 10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3/32 |
| 2001:4f8:3:ba::/64 | 2001:4f8:3:ba::/64 | 2001:4f8:3:ba::/64 |
| 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 | 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 | 2001:4f8:3:ba:2e0:81ff:fe22:d1f1 |
| ::ffff:1.2.3.0/120 | ::ffff:1.2.3.0/120 | ::ffff:1.2.3/120 |
| ::ffff:1.2.3.0/128 | ::ffff:1.2.3.0/128 | ::ffff:1.2.3.0/128 |
inet 和 cidr 類型之間的基本區別是 inet 接受右邊有非零位的網絡掩碼, 而 cidr 不接受.
提示: 如果你不喜歡 inet 或 cidr 值的輸出 格式,請試一下 host ,text 和 abbrev 函數.
macaddr 類型存儲 MAC 地址,也就是以太網卡硬件地址 (盡管 MAC 地址還用于其它用途).可以接受多種客戶化的格式, 包括
| '08002b:010203' |
| '08002b-010203' |
| '0800.2b01.0203' |
| '08-00-2b-01-02-03' |
| '08:00:2b:01:02:03' |
在 PostgreSQL 源代碼發布的 contrib/mac 目錄裡有一些可以將 MAC 地址映射為硬件制造商的名字的工具.