Kiểu dữ liệu cho địa chỉ IP trong PostgreSQL

PostgreSQL hỗ trợ ba loại dữ liệu được thiết kế để chứa địa chỉ mạng, cả địa chỉ IP[8] [logic] và MAC[9] [vật lý]. Tôi không nghĩ có nhiều ứng dụng yêu cầu lưu trữ địa chỉ IP hoặc MAC, vì vậy tôi sẽ không dành quá nhiều thời gian để mô tả chúng. Hướng dẫn sử dụng PostgreSQL chứa tất cả các chi tiết mà bạn có thể cần biết về các loại dữ liệu mạng

[8] IP là viết tắt của Internet Protocol, chất nền của Internet

[9] Từ viết tắt MAC là viết tắt của một hoặc nhiều điều sau đây. Mã địa chỉ máy, Kiểm soát truy cập phương tiện hoặc Macaroni And Cheese

MACADDR

Loại MACADDR được thiết kế để chứa địa chỉ MAC. Địa chỉ MAC là địa chỉ phần cứng, thường là địa chỉ của giao diện ethernet

CIDR

Loại dữ liệu CIDR được thiết kế để chứa địa chỉ mạng IP. Giá trị CIDR chứa địa chỉ mạng IP và mặt nạ mạng tùy chọn [mặt nạ mạng xác định số lượng bit có ý nghĩa trong địa chỉ mạng]

INET

Giá trị INET có thể chứa địa chỉ IP của mạng hoặc của máy chủ mạng. Giá trị INET chứa địa chỉ mạng và mặt nạ mạng tùy chọn. Nếu mặt nạ mạng bị bỏ qua, giả định rằng địa chỉ xác định một máy chủ duy nhất [nói cách khác, không có thành phần mạng rõ ràng nào trong địa chỉ]

Lưu ý rằng giá trị INET có thể đại diện cho mạng hoặc máy chủ, nhưng CIDR được thiết kế để đại diện cho địa chỉ của mạng

Cú pháp cho các giá trị theo nghĩa đen

Cú pháp cần thiết cho các giá trị mạng theo nghĩa đen được hiển thị trong Bảng 2. 27

ban 2. 27. Cú pháp nghĩa đen cho các loại mạng

Loại

cú pháp

ví dụ

INET

a. b. c. đ[/e]

192. 168. 0. 1_192. 168. 150. 0/26_130. 155. 16. 20/1

CIDR

một[. b[. c[. d]]][/e]

192. 168. 0. 0/16_192. 168/16

MACADDR

xxxx. xxxx

xxxxxx-xxxxxx

xxxxx. xxxxx. xxxxx

xx-xx-xx-xx-xx-xx

xx. xx. xx. xx. xx. xx

0004E2. 3695C0

0004E2-3695C0

0004. E236. 95C0

00-04-E2-36-95-C0

00. 04. E2. 36. 95. C0

Bắt đầu với phiên bản 7. 4, bạn cũng có thể lưu trữ các địa chỉ IPv6 [được phân tách bằng dấu hai chấm] trong giá trị INET hoặc CIDR

Giá trị INET hoặc CIDR tiêu thụ 12 byte hoặc 24 byte dung lượng lưu trữ [tùy thuộc vào số lượng bit trong địa chỉ]. Một giá trị MACADDR tiêu thụ 6 byte dung lượng lưu trữ

Nhà khai thác được hỗ trợ

PostgreSQL cung cấp các toán tử so sánh mà bạn có thể sử dụng để so sánh hai giá trị INET, hai giá trị CIDR hoặc hai giá trị MACADDR. Các toán tử so sánh hoạt động bằng cách kiểm tra trước tiên các bit chung trong các thành phần mạng của hai địa chỉ; . Nếu số bit trong mặt nạ mạng bằng nhau [và các thành phần mạng của các địa chỉ bằng nhau], thì toàn bộ địa chỉ được so sánh. Hiệu ứng ròng [ý định chơi chữ] là 192. 168. 0. 22/24 được coi là lớn hơn 192. 168. 0. 22/20

Khi bạn đang làm việc với hai giá trị INET [hoặc CIDR], bạn cũng có thể kiểm tra containership. ban 2. 28 mô tả các toán tử địa chỉ mạng

Trong chương này, chúng ta sẽ thảo luận về các kiểu dữ liệu được sử dụng trong PostgreSQL. Trong khi tạo bảng, đối với mỗi cột, bạn chỉ định một kiểu dữ liệu, tôi. e. , bạn muốn lưu trữ loại dữ liệu nào trong các trường của bảng

Điều này cho phép một số lợi ích -

  • Tính nhất quán - Các thao tác đối với các cột có cùng kiểu dữ liệu cho kết quả nhất quán và thường là nhanh nhất

  • Xác thực - Việc sử dụng đúng các loại dữ liệu ngụ ý xác thực định dạng dữ liệu và từ chối dữ liệu bên ngoài phạm vi của loại dữ liệu

  • Compactness - Vì một cột có thể lưu trữ một loại giá trị duy nhất, nên nó được lưu trữ theo cách nhỏ gọn

  • Hiệu suất - Việc sử dụng đúng loại dữ liệu mang lại khả năng lưu trữ dữ liệu hiệu quả nhất. Các giá trị được lưu trữ có thể được xử lý nhanh chóng, giúp nâng cao hiệu suất

PostgreSQL hỗ trợ nhiều kiểu dữ liệu. Ngoài ra, người dùng có thể tạo kiểu dữ liệu tùy chỉnh của riêng mình bằng lệnh CREATE TYPE SQL. Có nhiều loại kiểu dữ liệu khác nhau trong PostgreSQL. Chúng được thảo luận dưới đây

Các loại số

Các loại số bao gồm các số nguyên hai byte, bốn byte và tám byte, số dấu phẩy động bốn byte và tám byte và số thập phân có độ chính xác có thể lựa chọn. Bảng sau liệt kê các loại có sẵn

TênKích thước lưu trữMô tảPhạm vinhỏint2 bytessố nguyên phạm vi nhỏ-32768 đến +32767số nguyên4 bytelựa chọn điển hình cho số nguyên-2147483648 đến +2147483647bigint8 bytessố nguyên phạm vi lớn-9223372036854775808 đến 9223372036854775807biến số thập phân do người dùng chỉ định chính xác đến 1,31 chữ số thập phân chính xác trước điểm 1,31;

Các loại tiền tệ

Loại tiền lưu trữ một lượng tiền tệ với độ chính xác phân số cố định. Giá trị của các loại dữ liệu số, int và bigint có thể được chuyển thành tiền. Không nên sử dụng số Dấu phẩy động để xử lý tiền do có khả năng xảy ra lỗi làm tròn

TênKích thước lưu trữMô tảRangemoney8 bytestiền tệ-92233720368547758. 08 đến +92233720368547758. 07

Các loại nhân vật

Bảng đưa ra dưới đây liệt kê các loại ký tự có mục đích chung có sẵn trong PostgreSQL

S. Không. Tên & Mô tả1

ký tự khác nhau [và], varchar [n]

chiều dài thay đổi với giới hạn

2

ký tự [n], ký tự [n]

chiều dài cố định, đệm trống

3

chữ

chiều dài không giới hạn thay đổi

Kiểu dữ liệu nhị phân

Kiểu dữ liệu bytea cho phép lưu trữ các chuỗi nhị phân như trong bảng dưới đây

TênKích thước lưu trữMô tảbytea1 hoặc 4 byte cộng với chuỗi nhị phân thực chuỗi nhị phân có độ dài thay đổi

Loại ngày/giờ

PostgreSQL hỗ trợ một bộ đầy đủ các loại ngày và giờ SQL, như được hiển thị trong bảng bên dưới. Ngày được tính theo lịch Gregorian. Ở đây, tất cả các loại có độ phân giải 1 micro giây / 14 chữ số trừ loại ngày có độ phân giải là ngày

TênKích thước lưu trữMô tảGiá trị thấpGiá trị caodấu thời gian [[p]] [không có múi giờ ]8 bytecả ngày và giờ [không có múi giờ]4713 BC294276 ADTIMESTAMPTZ8 bytecả ngày và giờ, có múi giờ4713 BC294276 ADdate4 bytesdate [không có thời gian trong ngày]4713 BC5874897 ADtime [ [p] . 00. 0024. 00. 00 thời gian [ [ph]] với múi giờ chỉ 12 byte thời gian trong ngày, với múi giờ 00. 00. 00+145924. 00. 00-1459interval [fields ] [[p] ]12 bytestime interval-178000000 years178000000 years

Kiểu Boolean

PostgreSQL cung cấp kiểu SQL chuẩn Boolean. Kiểu dữ liệu Boolean có thể có các trạng thái đúng, sai và trạng thái thứ ba, không xác định, được biểu thị bằng giá trị null của SQL

TênKích thước lưu trữMô tảboolean1trạng thái byte của true hoặc false

Loại liệt kê

Kiểu liệt kê [enum] là kiểu dữ liệu bao gồm một tập giá trị tĩnh, có thứ tự. Chúng tương đương với các kiểu enum được hỗ trợ trong một số ngôn ngữ lập trình

Không giống như các kiểu khác, Kiểu liệt kê cần được tạo bằng lệnh CREATE TYPE. Loại này được sử dụng để lưu trữ một bộ giá trị tĩnh, được sắp xếp theo thứ tự. Ví dụ: hướng la bàn, tôi. e. , BẮC, NAM, ĐÔNG và TÂY hoặc các ngày trong tuần như hình dưới đây -

CREATE TYPE week AS ENUM ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];

Liệt kê, sau khi được tạo, có thể được sử dụng như bất kỳ loại nào khác

Loại hình học

Các kiểu dữ liệu hình học biểu diễn các đối tượng không gian hai chiều. Loại cơ bản nhất, điểm, tạo cơ sở cho tất cả các loại khác

NameStorage SizeRepresentationDescriptionpoint16 bytesPoint on a plane[x,y]line32 bytesInfinite line [not fully implemented][[x1,y1],[x2,y2]]lseg32 bytesFinite line segment[[x1,y1],[x2,y2]]box32 bytesRectangular box[[x1,y1],[x2,y2]]path16+16n bytesClosed path [similar to polygon][[x1,y1],...]path16+16n bytesOpen path[[x1,y1],...]polygon40+16nPolygon [similar to closed path][[x1,y1],...]circle24 bytesCircle [center point and radius]

Loại địa chỉ mạng

PostgreSQL cung cấp các loại dữ liệu để lưu trữ địa chỉ IPv4, IPv6 và MAC. Tốt hơn là sử dụng các loại này thay vì các loại văn bản thuần túy để lưu trữ địa chỉ mạng, bởi vì các loại này cung cấp tính năng kiểm tra lỗi đầu vào và các toán tử và chức năng chuyên dụng

TênKích thước lưu trữMô tảcidr7 hoặc 19 byteMạng IPv4 và IPv6inet7 hoặc 19 byteMáy chủ và mạng IPv4 và IPv6macaddr6 byte Địa chỉ MAC

Loại chuỗi bit

Các loại chuỗi bit được sử dụng để lưu trữ mặt nạ bit. Chúng là 0 hoặc 1. Có hai loại bit SQL. bit[n] và bit khác nhau[n], trong đó n là số nguyên dương

Loại tìm kiếm văn bản

Loại này hỗ trợ tìm kiếm toàn văn, là hoạt động tìm kiếm thông qua bộ sưu tập các tài liệu ngôn ngữ tự nhiên để định vị những tài liệu phù hợp nhất với truy vấn. Có hai Loại dữ liệu cho điều này -

S. Không. Tên & Mô tả1

tsvector

Đây là danh sách được sắp xếp của các từ riêng biệt đã được chuẩn hóa để hợp nhất các biến thể khác nhau của cùng một từ, được gọi là "từ vựng"

2

tsquery

Điều này lưu trữ các từ vựng sẽ được tìm kiếm và kết hợp chúng để tôn vinh các toán tử Boolean & [AND],. [Hoặc và. [KHÔNG PHẢI]. Dấu ngoặc đơn có thể được sử dụng để thực thi nhóm các toán tử

Loại UUID

UUID [Số nhận dạng duy nhất toàn cầu] được viết dưới dạng một chuỗi các chữ số thập lục phân viết thường, trong một số nhóm được phân tách bằng dấu gạch nối, cụ thể là nhóm tám chữ số, tiếp theo là ba nhóm bốn chữ số, tiếp theo là nhóm 12 chữ số, cho

Một ví dụ về UUID là − 550e8400-e29b-41d4-a716-446655440000

Loại XML

Kiểu dữ liệu XML có thể được sử dụng để lưu trữ dữ liệu XML. Để lưu trữ dữ liệu XML, trước tiên bạn phải tạo các giá trị XML bằng cách sử dụng hàm xmlparse như sau -

XMLPARSE [DOCUMENT '

PostgreSQL Tutorial 
   ...
']

XMLPARSE [CONTENT 'xyzbarfoo']

Loại JSON

Kiểu dữ liệu json có thể được sử dụng để lưu trữ dữ liệu JSON [Ký hiệu đối tượng JavaScript]. Dữ liệu như vậy cũng có thể được lưu trữ dưới dạng văn bản, nhưng kiểu dữ liệu json có lợi thế là kiểm tra xem mỗi giá trị được lưu trữ có phải là giá trị JSON hợp lệ hay không. Ngoài ra còn có các hàm hỗ trợ liên quan, có thể được sử dụng trực tiếp để xử lý kiểu dữ liệu JSON như sau

Ví dụ Ví dụ Kết quả Array_to_json['{{1,5},{99,100}}'. int[]][[1,5],[99,100]]row_to_json[row[1,'foo']]{"f1". 1,"f2". "foo"}

Loại mảng

PostgreSQL mang đến cơ hội xác định một cột của bảng dưới dạng một mảng đa chiều có độ dài thay đổi. Có thể tạo các mảng của bất kỳ loại cơ sở, loại enum hoặc loại hỗn hợp nào được tích hợp sẵn hoặc do người dùng xác định

Khai báo mảng

Kiểu mảng có thể được khai báo là

CREATE TABLE monthly_savings [
   name text,
   saving_per_quarter integer[],
   scheme text[][]
];

hoặc bằng cách sử dụng từ khóa "ARRAY" như

CREATE TABLE monthly_savings [
   name text,
   saving_per_quarter integer ARRAY[4],
   scheme text[][]
];

Chèn giá trị

Các giá trị mảng có thể được chèn dưới dạng hằng số theo nghĩa đen, bao gồm các giá trị phần tử trong dấu ngoặc nhọn và phân tách chúng bằng dấu phẩy. Một ví dụ được hiển thị bên dưới -

INSERT INTO monthly_savings 
VALUES [‘Manisha’, 
‘{20000, 14600, 23500, 13250}’, 
‘{{“FD”, “MF”}, {“FD”, “Property”}}’]; 

Truy cập mảng

Một ví dụ để truy cập Mảng được hiển thị bên dưới. Lệnh đưa ra dưới đây sẽ chọn những người có số tiền tiết kiệm trong quý hai nhiều hơn quý tư

SELECT name FROM monhly_savings WHERE saving_per_quarter[2] > saving_per_quarter[4];

Sửa đổi mảng

Một ví dụ về sửa đổi mảng như hình dưới đây

UPDATE monthly_savings SET saving_per_quarter = '{25000,25000,27000,27000}'
WHERE name = 'Manisha';

hoặc sử dụng cú pháp biểu thức ARRAY −

UPDATE monthly_savings SET saving_per_quarter = ARRAY[25000,25000,27000,27000]
WHERE name = 'Manisha';

Tìm kiếm mảng

Một ví dụ về tìm kiếm mảng như hình dưới đây

________số 8

Nếu biết kích thước của mảng, có thể sử dụng phương pháp tìm kiếm đã cho ở trên. Mặt khác, ví dụ sau đây cho thấy cách tìm kiếm khi không biết kích thước

SELECT * FROM monthly_savings WHERE 10000 = ANY [saving_per_quarter];

Các loại tổng hợp

Loại này đại diện cho một danh sách các tên trường và kiểu dữ liệu của chúng, tôi. e. , cấu trúc của một hàng hoặc bản ghi của một bảng

Khai báo các loại hợp chất

Ví dụ sau đây cho thấy cách khai báo một kiểu tổng hợp

XMLPARSE [DOCUMENT '

PostgreSQL Tutorial 
   ...
']

XMLPARSE [CONTENT 'xyzbarfoo']
0

Kiểu dữ liệu này có thể được sử dụng trong các bảng tạo như bên dưới -

XMLPARSE [DOCUMENT '

PostgreSQL Tutorial 
   ...
']

XMLPARSE [CONTENT 'xyzbarfoo']
1

Đầu vào giá trị tổng hợp

Các giá trị tổng hợp có thể được chèn dưới dạng hằng số bằng chữ, bao gồm các giá trị trường trong dấu ngoặc đơn và phân tách chúng bằng dấu phẩy. Một ví dụ được hiển thị bên dưới -

XMLPARSE [DOCUMENT '

PostgreSQL Tutorial 
   ...
']

XMLPARSE [CONTENT 'xyzbarfoo']
2

Điều này hợp lệ đối với inventory_item được xác định ở trên. Từ khóa ROW thực sự là tùy chọn miễn là bạn có nhiều hơn một trường trong biểu thức

Truy cập các loại tổng hợp

Để truy cập vào một trường của cột tổng hợp, hãy sử dụng dấu chấm theo sau tên trường, giống như chọn trường từ tên bảng. Ví dụ: để chọn một số trường con từ bảng ví dụ on_hand của chúng tôi, truy vấn sẽ như sau -

XMLPARSE [DOCUMENT '

PostgreSQL Tutorial 
   ...
']

XMLPARSE [CONTENT 'xyzbarfoo']
3

Bạn thậm chí có thể sử dụng tên bảng [ví dụ: trong truy vấn nhiều bảng], như thế này -

XMLPARSE [DOCUMENT '

PostgreSQL Tutorial 
   ...
']

XMLPARSE [CONTENT 'xyzbarfoo']
4

Loại phạm vi

Các loại phạm vi đại diện cho các loại dữ liệu sử dụng một phạm vi dữ liệu. Loại phạm vi có thể là phạm vi rời rạc [e. g. , tất cả các giá trị số nguyên từ 1 đến 10] hoặc phạm vi liên tục [e. g. , bất kỳ thời điểm nào giữa 10. 00am và 11. 00 giờ sáng]

Các loại phạm vi tích hợp có sẵn bao gồm các phạm vi sau -

  • int4range − Phạm vi số nguyên

  • int8range − Phạm vi của bigint

  • numrange - Phạm vi số

  • tsrange − Phạm vi dấu thời gian không có múi giờ

  • tstzrange − Phạm vi dấu thời gian với múi giờ

  • daterange - Phạm vi ngày

Có thể tạo các loại phạm vi tùy chỉnh để cung cấp các loại phạm vi mới, chẳng hạn như phạm vi địa chỉ IP sử dụng loại inet làm cơ sở hoặc phạm vi float sử dụng kiểu dữ liệu float làm cơ sở

Các loại phạm vi hỗ trợ ranh giới phạm vi bao gồm và loại trừ bằng cách sử dụng các ký tự [ ] và [ ] tương ứng. Ví dụ '[4,9]' đại diện cho tất cả các số nguyên bắt đầu từ và bao gồm 4 cho đến nhưng không bao gồm 9

Các loại định danh đối tượng

Mã định danh đối tượng [OID] được PostgreSQL sử dụng nội bộ làm khóa chính cho các bảng hệ thống khác nhau. Nếu VỚI OIDS được chỉ định hoặc biến cấu hình default_with_oids được bật, chỉ khi đó, trong những trường hợp như vậy, OID mới được thêm vào bảng do người dùng tạo. Bảng sau liệt kê một số loại bí danh. Các loại bí danh OID không có hoạt động nào của riêng chúng ngoại trừ các thủ tục đầu vào và đầu ra chuyên dụng

TênTham khảoMô tảGiá trịVí dụoidđịnh danh đối tượng dạng số564182regprocpg_procfunction namesumregprocedurepg_procfunction với các loại đối sốsum[int4]regoperpg_operatortên toán tử+regoperatorpg_operatoroperator với các loại đối số*[số nguyên,số nguyên] hoặc -[KHÔNG CÓ,số nguyên]regclasspg_classrelation namepg_typeregtypepg_typetên loại dữ liệutìm kiếmsố nguyênregregconfigtextpg_tscấu hình từ điển tiếng Anh

Các loại giả

Hệ thống loại PostgreSQL chứa một số mục nhập có mục đích đặc biệt được gọi chung là loại giả. Loại giả không thể được sử dụng làm kiểu dữ liệu cột, nhưng nó có thể được sử dụng để khai báo đối số hoặc loại kết quả của hàm

Kiểu dữ liệu nào là địa chỉ IP?

Các loại dữ liệu địa chỉ mạng IP. IPV4 và IPV6 là các loại dữ liệu trừu tượng lưu trữ địa chỉ máy chủ IPv4 và IPv6 tương ứng ở định dạng nhị phân . IPV4 là địa chỉ máy chủ 4 byte theo ký hiệu thập phân có dấu chấm [bốn số thập phân, mỗi số nằm trong khoảng từ 0 đến 255, được phân tách bằng dấu chấm]. Ví dụ. 172. 16.

Làm cách nào để lấy địa chỉ IP trong PostgreSQL?

chọn inet_client_addr[]; . .
Nếu bạn đang dùng máy tính DB [1] + máy chủ [2] + máy khách [3] và cần ip của máy khách [3], bạn phải giải quyết nó trên máy chủ [2], vì [1] không có

Kiểu dữ liệu cho địa chỉ IP trong mysql là gì?

Chúng tôi có thể lưu trữ địa chỉ IP với sự trợ giúp của INT không dấu . Trong khi sử dụng INSERT, hãy thêm INET_ATON[] và với SELECT, hãy thêm INET_NTOA[].

Địa chỉ IP ở định dạng nào?

Địa chỉ IP thường được viết bằng các chữ số thập phân, được định dạng là bốn trường 8 bit được phân tách bằng dấu chấm . Mỗi trường 8 bit đại diện cho một byte của địa chỉ IP. Hình thức biểu diễn các byte của địa chỉ IP này thường được gọi là định dạng thập phân chấm.

Chủ Đề