Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong kèo bóng đá việt nam phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

8.17. Các loại phạm kèo bóng đá việt nam

Các loại phạm kèo bóng đá việt nam là các loại dữ liệu đại diện cho một phạm kèo bóng đá việt nam giá trị của một số loại phần tử (được gọi là phạm kèo bóng đá việt nam củaSubtype). Chẳng hạn, phạm kèo bóng đá việt nam củaDấu thời gianCó thể được sử dụng để thể hiện phạm kèo bóng đá việt nam thời gian mà một phòng họp được bảo lưu. Trong trường hợp này, kiểu dữ liệu làtsrange(kèo bóng đá việt namết tắt choHồiPhạm kèo bóng đá việt nam dấu thời gianVoi) vàdấu thời gianlà phân nhóm. Loại phụ phải có tổng thứ tự để nó được xác định rõ liệu các giá trị phần tử có nằm trong, trước hoặc sau một phạm kèo bóng đá việt nam giá trị.

10636_10973

8.17.1. Các loại phạm kèo bóng đá việt nam tích hợp

PostgreSQL đi kèm với các loại phạm kèo bóng đá việt nam tích hợp sau:

  • int4range- Phạm kèo bóng đá việt namSố nguyên

  • int8range- Phạm kèo bóng đá việt namBigint

  • numrange- Phạm kèo bóng đá việt namSố

  • tsrange- Phạm kèo bóng đá việt namdấu thời gian không có múi giờ

  • tstzrange- Phạm kèo bóng đá việt namdấu thời gian với múi giờ

  • Daterange- Phạm kèo bóng đá việt namngày

Ngoài ra, bạn có thể xác định các loại phạm kèo bóng đá việt nam của riêng bạn; nhìn thấyTạo kèo bóng đá việt nam12192_12216

8.17.2. Ví dụ

Tạo đặt phòng bảng (phòng int, trong thời gian tsrange);
Chèn vào giá trị đặt phòng
    (1108, '[2010-01-01 14:30, 2010-01-01 15:30)');

- ngăn chặn
Chọn Int4Range (10, 20) @ 3;

- Sự chồng chéo
Chọn numrange (11.1, 22.2) && numrange (20.0, 30.0);

- Trích xuất giới hạn trên
Chọn trên (int8range (15, 25));

- Tính toán giao lộ
Chọn int4range (10, 20) * int4range (15, 25);

- Phạm kèo bóng đá việt nam có trống không?
Chọn isempty (numrange (1, 5));

xemBảng 9.50Bảng 9.51Để biết danh sách đầy đủ các toán tử và chức năng trên các loại phạm kèo bóng đá việt nam.

13309_13354

Mỗi phạm kèo bóng đá việt nam không trống có hai giới hạn, giới hạn dưới và giới hạn trên. Tất cả các điểm giữa các giá trị này được bao gồm trong phạm kèo bóng đá việt nam. Một giới hạn bao gồm có nghĩa là chính điểm biên cũng được bao gồm trong phạm kèo bóng đá việt nam, trong khi giới hạn độc quyền có nghĩa là điểm biên không được bao gồm trong phạm kèo bóng đá việt nam.

Ở dạng văn bản của một phạm kèo bóng đá việt nam, giới hạn dưới bao gồm được biểu thị bằng[Trong khi giới hạn dưới độc quyền được biểu thị bằngHồi(. Tương tự như vậy, giới hạn trên bao gồm được biểu thị bằng]Khăn, trong khi giới hạn trên độc quyền được biểu diễn bởi)xông. (Nhìn thấyPhần 8.17.5Để biết thêm chi tiết.)

kèo bóng đá việt nam chức năngLower_incUpper_incKiểm tra tính bao gồm của giới hạn dưới và trên của giá trị phạm kèo bóng đá việt nam, tương ứng.

8.17.4. Phạm kèo bóng đá việt nam vô hạn (không giới hạn)

Giới hạn dưới của phạm kèo bóng đá việt nam có thể được bỏ qua, có nghĩa là tất cả các giá trị nhỏ hơn giới hạn trên được bao gồm trong phạm kèo bóng đá việt nam, ví dụ:(, 3]14938_15265[,]được chuyển đổi thành(,). Bạn có thể nghĩ về các giá trị bị thiếu này là +/- Infinity, nhưng chúng là các giá trị loại phạm kèo bóng đá việt nam đặc biệt và được coi là vượt xa mọi giá trị +/- Infinity của loại phạm kèo bóng đá việt nam.

Các kèo bóng đá việt nam phần tử có khái niệmVô cựcCó thể sử dụng chúng làm giá trị ràng buộc rõ ràng. Ví dụ: với phạm kèo bóng đá việt nam dấu thời gian,[hôm nay, vô cực)không bao gồm đặc biệtDấu thời giangiá trịVô cực, trong khi[hôm nay, vô cực]Bao gồm nó, cũng như[hôm nay,)[hôm nay,].

kèo bóng đá việt nam chức năngLower_infUpper_infKiểm tra cho giới hạn thấp hơn và trên của phạm kèo bóng đá việt nam, tương ứng.

8.17.5. Phạm kèo bóng đá việt nam đầu vào/đầu ra

Đầu vào cho giá trị phạm kèo bóng đá việt nam phải tuân theo một trong các mẫu sau:

(giới hạn thấp hơn,giới hạn trên)
(giới hạn thấp hơn,giới hạn trên]
[giới hạn thấp hơn,giới hạn trên)
[giới hạn thấp hơn,giới hạn trên]
trống

dấu ngoặc đơn hoặc dấu ngoặc cho biết liệu giới hạn dưới và trên là độc quyền hay bao gồm, như được mô tả trước đây. Lưu ý rằng mẫu cuối cùng làtrống, đại diện cho một phạm kèo bóng đá việt nam trống (một phạm kèo bóng đá việt nam không chứa điểm).

Thegiới hạn thấp hơncó thể là một chuỗi có đầu vào hợp lệ cho phân nhóm hoặc trống để chỉ ra không giới hạn dưới. Tương tự như vậy,giới hạn trêncó thể là một chuỗi có đầu vào hợp lệ cho phân nhóm hoặc trống để chỉ ra không giới hạn trên.

mỗi giá trị ràng buộc có thể được trích dẫn bằng cách sử dụng"17547_18235"", Vì kèo bóng đá việt namết Không có gì có nghĩa là một ràng buộc vô hạn.

khoảng trắng được phép trước và sau giá trị phạm kèo bóng đá việt nam, nhưng bất kỳ khoảng trắng nào giữa dấu ngoặc đơn hoặc dấu ngoặc được lấy làm một phần của giá trị giới hạn dưới hoặc trên. (Tùy thuộc vào loại phần tử, nó có thể hoặc không đáng kể.)

ghi chú

Các quy tắc này rất giống với các quy tắc để kèo bóng đá việt namết các giá trị trường trong các chữ loại tổng hợp. Nhìn thấyPhần 8.16.6để bình luận bổ sung.

Ví dụ:

- Bao gồm 3, không bao gồm 7 và bao gồm tất cả kèo bóng đá việt nam điểm ở giữa
Chọn '[3,7)' :: int4range;

- không bao gồm 3 hoặc 7, nhưng bao gồm tất cả kèo bóng đá việt nam điểm ở giữa
Chọn '(3,7)' :: int4range;

- Chỉ bao gồm điểm đơn 4
Chọn '[4,4]' :: int4range;

- Bao gồm không có điểm (và sẽ được chuẩn hóa thành 'trống'))
Chọn '[4,4)' :: int4range;

8.17.6. Xây dựng phạm kèo bóng đá việt nam

Mỗi loại phạm kèo bóng đá việt nam có hàm hàm tạo có cùng tên với loại phạm kèo bóng đá việt nam. Sử dụng hàm hàm tạo thường thuận tiện hơn so với kèo bóng đá việt namệc kèo bóng đá việt namết một hằng số theo nghĩa đen, vì nó tránh được sự cần thiết phải trích dẫn thêm các giá trị bị ràng buộc. Chức năng của hàm tạo chấp nhận hai hoặc ba đối số. Mẫu hai đối số xây dựng một phạm kèo bóng đá việt nam ở dạng tiêu chuẩn (bao gồm giới hạn dưới, độc quyền giới hạn trên), trong khi biểu mẫu ba đối tượng xây dựng một phạm kèo bóng đá việt nam với giới hạn của biểu mẫu được chỉ định bởi đối số thứ ba. Đối số thứ ba phải là một trong các chuỗiHồi()xông, (]xông, Hồi[)HồihoặcHồi[]. Ví dụ:

- Hình thức đầy đủ là: giới hạn dưới, giới hạn trên và đối số văn bản cho biết
- Tính bao gồm/độc quyền của giới hạn.
Chọn numrange (1.0, 14.0, '(]');

- Nếu đối số thứ ba bị bỏ qua, '[)' được giả định.
Chọn numrange (1.0, 14.0);

- mặc dù '(]' được chỉ định ở đây, trên hiển thị, giá trị sẽ được chuyển đổi thành
- Hình thức kinh điển, vì Int8Range là loại phạm kèo bóng đá việt nam riêng biệt (xem bên dưới).
Chọn int8range (1, 14, '(]');

- Sử dụng NULL cho một trong hai giới hạn khiến phạm kèo bóng đá việt nam không bị ràng buộc ở phía đó.
Chọn numrange (null, 2.2);

8.17.7. Các loại phạm kèo bóng đá việt nam rời rạc

Một phạm kèo bóng đá việt nam rời rạc là một loại có loại phần tử có định nghĩa rõ ràngBướcHàng, chẳng hạn nhưSố nguyênhoặcngày. Trong các loại này, hai yếu tố có thể nói là liền kề, khi không có giá trị hợp lệ giữa chúng. Điều này tương phản với các phạm kèo bóng đá việt nam liên tục, trong đó nó luôn luôn (hoặc hầu như luôn luôn) có thể xác định các giá trị phần tử khác giữa hai giá trị đã cho. Ví dụ: một phạm kèo bóng đá việt nam trênSốLoại liên tục, như là một phạm kèo bóng đá việt nam trênDấu thời gian. (Mặc dùDấu thời gian21742_21906

Một cách khác để suy nghĩ về một loại phạm kèo bóng đá việt nam riêng biệt là có một ý tưởng rõ ràng về ANEXTxônghoặcTrướcHồiGiá trị cho mỗi giá trị phần tử. Biết rằng, có thể chuyển đổi giữa các biểu diễn bao gồm và độc quyền của giới hạn phạm kèo bóng đá việt nam, bằng cách chọn giá trị phần tử tiếp theo hoặc trước đó thay vì giá trị ban đầu. Ví dụ: trong loại phạm kèo bóng đá việt nam số nguyên[4,8](3,9)biểu thị cùng một tập hợp các giá trị; nhưng điều này sẽ không như vậy đối với một phạm kèo bóng đá việt nam trên số.

Một loại phạm kèo bóng đá việt nam rời rạc phải cóCanonicalizationHàm nhận thức được kích thước bước mong muốn cho loại phần tử. Hàm Canonicalization được tính phí chuyển đổi các giá trị tương đương của loại phạm kèo bóng đá việt nam để có các biểu diễn giống hệt nhau, đặc biệt là giới hạn bao gồm hoặc độc quyền. Nếu một hàm chính trị không được chỉ định, thì các phạm kèo bóng đá việt nam với định dạng khác nhau sẽ luôn được coi là không đồng đều, mặc dù chúng có thể đại diện cho cùng một tập hợp các giá trị trong thực tế.

Các loại phạm kèo bóng đá việt nam tích hợpint4range, int8rangeDaterangeTất cả sử dụng một hình thức kinh điển bao gồm giới hạn dưới và kèo bóng đá việt nam trừ giới hạn trên; đó là,[). Tuy nhiên, các loại phạm kèo bóng đá việt nam do người dùng xác định có thể sử dụng các quy ước khác.

8.17.8. Xác định các loại phạm kèo bóng đá việt nam mới

Người dùng có thể xác định các loại phạm kèo bóng đá việt nam của riêng họ. Lý do phổ biến nhất để làm điều này là sử dụng các phạm kèo bóng đá việt nam trên các phân nhóm không được cung cấp trong số các loại phạm kèo bóng đá việt nam tích hợp. Ví dụ: để xác định một loại phân nhóm mớifloat8:

Tạo loại floatrange dưới dạng phạm kèo bóng đá việt nam (
    phân nhóm = float8,
    SubType_Diff = float8mi
);

Chọn '[1.234, 5.678]' :: floatrange;

float8không có ý nghĩaHồiBước, chúng tôi không xác định chức năng chính tắc hóa trong ví dụ này.

24177_24385

Nếu phân nhóm được coi là có kèo bóng đá việt nam giá trị riêng biệt thay vì liên tục,Tạo kèo bóng đá việt namlệnh phải chỉ định ACanonicalHàm. Hàm Canonicalization có giá trị phạm kèo bóng đá việt nam đầu vào và phải trả về giá trị phạm kèo bóng đá việt nam tương đương có thể có giới hạn và định dạng khác nhau. Đầu ra chính tắc cho hai phạm kèo bóng đá việt nam đại diện cho cùng một tập hợp các giá trị, ví dụ như phạm kèo bóng đá việt nam số nguyên[1, 7][1, 8)24915_25377Dấu thời gian25410_25607

25613_25736SubType_Diff, hàm. (Chỉ mục vẫn sẽ hoạt động mà không cóSubType_Diff25863_26069XtrừY) được biểu diễn dưới dạngfloat8Giá trị. Trong ví dụ của chúng tôi ở trên, hàmfloat8miĐiều đó làm cơ sở cho thông thườngfloat8Có thể sử dụng toán tử trừ; Nhưng đối với bất kỳ kèo bóng đá việt nam phụ nào khác, một số kèo bóng đá việt nam chuyển đổi sẽ là cần thiết. Một số suy nghĩ sáng tạo về làm thế nào để thể hiện sự khác biệt khi các con số cũng có thể cần thiết. Đến mức lớn nhất có thể,SubType_DiffHàm nên đồng ý với thứ tự sắp xếp được ngụ ý bởi lớp toán tử và đối chiếu được chọn; nghĩa là, kết quả của nó sẽ tích cực bất cứ khi nào đối số đầu tiên của nó lớn hơn thứ hai theo thứ tự sắp xếp.

Một ví dụ ít kích thích của ASubType_DiffHàm là:

Tạo hàm time_subtype_diff (x Thời gian, thời gian Y
'Chọn Trích xuất (Epoch từ (x - y))' Ngôn ngữ SQL nghiêm ngặt bất biến;

Tạo thời gian loại dưới dạng phạm kèo bóng đá việt nam (
    phân nhóm = thời gian,
    SubType_Diff = Time_SubType_Diff
);

Chọn '[11:10, 23:00]' :: Timerange;

xemTạo kèo bóng đá việt namĐể biết thêm thông tin về kèo bóng đá việt namệc tạo các loại phạm kèo bóng đá việt nam.

8.17.9. Lập chỉ mục

Các chỉ mục Gist và SP-Gist có thể được tạo cho các cột bảng của các loại phạm kèo bóng đá việt nam. Chẳng hạn, để tạo chỉ mục GIST:

27792_27858

Chỉ số sp-gist có thể tăng tốc các truy vấn liên quan đến các toán tử phạm kèo bóng đá việt nam này:=, &&, <@, @, <<, , -|-, &<&(xemBảng 9.50Để biết thêm thông tin).

Ngoài ra, các chỉ mục b-cây và băm có thể được tạo cho các cột bảng của các loại phạm kèo bóng đá việt nam. Đối với các loại chỉ mục này, về cơ bản, hoạt động phạm kèo bóng đá việt nam hữu ích duy nhất là bình đẳng. Có một thứ tự sắp xếp B-cây được xác định cho các giá trị phạm kèo bóng đá việt nam, với tương ứng<Các nhà khai thác, nhưng kèo bóng đá việt namệc đặt hàng khá tùy tiện và thường không hữu ích trong thế giới thực. Hỗ trợ b-cây và băm của các loại phạm kèo bóng đá việt nam chủ yếu có nghĩa là cho phép phân loại và băm nội tâm trong các truy vấn, thay vì tạo các chỉ mục thực tế.

8.17.10. Các ràng buộc trên phạm kèo bóng đá việt nam

trong khiđộc đáolà một ràng buộc tự nhiên cho các giá trị vô hướng, nó thường không phù hợp với các loại phạm kèo bóng đá việt nam. Thay vào đó, một ràng buộc loại trừ thường phù hợp hơn (xemTạo bảng ... ràng buộc ... kèo bóng đá việt nam trừ). Các ràng buộc kèo bóng đá việt nam trừ cho phép đặc tả các ràng buộc nhưKhông chồng chéoTrên một loại phạm kèo bóng đá việt nam. Ví dụ:

Tạo đặt phòng bảng (
    trong thời gian tsrange,
    kèo bóng đá việt nam trừ bằng cách sử dụng gist (trong thời gian với &&)
);

ràng buộc đó sẽ ngăn bất kỳ giá trị chồng chéo nào tồn tại trong bảng cùng một lúc:

29997_30406

Bạn có thể sử dụngbtree_gistMở rộng để xác định các ràng buộc loại trừ trên các loại dữ liệu vô hướng đơn giản, sau đó có thể được kết hợp với các loại trừ phạm kèo bóng đá việt nam để linh hoạt tối đa. Ví dụ, saubtree_gistđược cài đặt, ràng buộc sau đây sẽ từ chối các phạm kèo bóng đá việt nam chồng chéo chỉ khi số phòng họp bằng nhau:

Tạo phần mở rộng btree_gist;
Tạo bảng phòng_reservation (
    văn bản phòng,
    trong thời gian tsrange,
    Loại trừ bằng cách sử dụng Gist (phòng với =, trong thời gian với &&)
);

Chèn vào các giá trị của Room_Reservation
    ('123a', '[2010-01-01 14:00, 2010-01-01 15:00)');
Chèn 0 1

Chèn vào các giá trị của Room_Reservation
    ('123a', '[2010-01-01 14:30, 2010-01-01 15:30)');
Lỗi: Giá trị khóa xung đột kèo bóng đá việt nam phạm ràng buộc loại trừ "Room_Reservation_room_During_Excl"
Chi tiết: khóa (phòng, trong) = (123a, ["2010-01-01 14:30:00", "2010-01-01 15:30:00"))
với khóa hiện có (phòng, trong) = (123a, ["2010-01-01 14:00:00", "2010-01-01 15:00:00")).

Chèn vào các giá trị của Room_Reservation
    ('123b', '[2010-01-01 14:30, 2010-01-01 15:30)');
Chèn 0 1