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 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
Tài cách đọc kèo bóng đá 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 cách đọc kèo bóng đá phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

Chương 8. Dữ cách đọc kèo bóng đá Loại

PostgreSQLcó một bộ phong phú Các loại dữ cách đọc kèo bóng đá bản địa có sẵn cho người dùng. Người dùng có thể thêm các loại mới vàoPostgreSQLSử dụngTạo cách đọc kèo bóng đálệnh.

Bảng 8-1Hiển thị tất cả tích hợp các loại dữ cách đọc kèo bóng đá đa năng. Hầu hết các thay thế Tên được liệt kê trong"Bí danh"Cột cách đọc kèo bóng đá tên được sử dụng trong nội bộ bởiPostgreSQLVì lý do lịch sử. TRONG Ngoài ra, một số cách đọc kèo bóng đá được sử dụng nội bộ hoặc không dùng nữa có sẵn, Nhưng chúng không được liệt kê ở đây.

Bảng 8-1. Kiểu dữ cách đọc kèo bóng đá

tên Bí danh Mô tả
Bigint INT8 Đã ký số nguyên tám byte
BigSerial serial8 Autoincrementing Eight-byte Integer
bit Chuỗi bit có độ dài cố định
Bit khác nhau (n) varbit (n) Chuỗi bit có độ dài biến đổi
Boolean bool Boolean logic (Đúng/Sai)
Box Hộp hình chữ nhật trong mặt phẳng
bytea Dữ cách đọc kèo bóng đá nhị phân
Nhân vật khác nhau (n) Varchar (n) Chuỗi ký tự có độ dài thay đổi
ký tự (n) char (n) Chuỗi ký tự có độ dài cố định
CIDR IPv4 hoặc địa chỉ mạng IPv6
Circle vòng tròn trong mặt phẳng
ngày Ngày lịch (năm, tháng, ngày)
Double Precision float8 Số điểm nổi chính xác gấp đôi
inet IPv4 hoặc địa chỉ máy chủ IPv6
Số nguyên int, INT4 Đã ký Byte Integer
Khoảng thời gian (P) Khoảng thời gian
Line dòng vô hạn trong mặt phẳng (không hoàn toàn đã triển khai)
LSEG Phân đoạn dòng trong mặt phẳng
MacAddr Địa chỉ MAC
tiền Số tiền tiền tệ
Số [(P, S)] thập phân [(P, S)] Số chính xác với độ chính xác có thể chọn
đường dẫn Đường dẫn hình học mở và đóng trong mặt phẳng
điểm Điểm hình học trong mặt phẳng
Polygon 19653_19689
Real float4 Số điểm nổi chính xác đơn
SmallInt int2 Đã ký hai byte
sê -ri serial4 Số nguyên bốn byte tự động
Text Chuỗi ký tự độ dài biến
Thời gian [(P)] [Không có múi giờ ] Thời gian trong ngày
Thời gian [(P)] với múi giờ Timetz Thời gian trong ngày, bao gồm múi giờ
dấu thời gian [(P)] [Không có múi giờ ] Dấu thời gian Ngày và giờ
dấu thời gian [(P)] với múi giờ TIMESTAMPTZ Ngày và giờ, bao gồm múi giờ

Khả năng tương thích:cách đọc kèo bóng đá loại sau (hoặc chính tả của nó) được chỉ định bởiSQL: 21603_21608, Bit thay đổi, Boolean, char, Nhân vật khác nhau, ký tự, Varchar, ngày, Double Độ chính xác, Số nguyên, Khoảng, Số, 22043_22052, Real, SmallInt, thời gian(có hoặc không có múi giờ),dấu thời gian(có hoặc không có múi giờ).

Mỗi loại dữ cách đọc kèo bóng đá có biểu diễn bên ngoài được xác định bởi Chức năng đầu vào và đầu ra của nó. Nhiều loại tích hợp có các định dạng bên ngoài rõ ràng. Tuy nhiên, một số loại là duy nhất choPostgreSQL, chẳng hạn như đường dẫn mở và đóng, hoặc có một số khả năng cho cách đọc kèo bóng đá định dạng, chẳng hạn như cách đọc kèo bóng đá loại ngày và thời gian. Một số đầu vào và đầu ra cách đọc kèo bóng đá chức năng không thể đảo ngược. Nghĩa là kết quả của đầu ra chức năng có thể mất độ chính xác khi so sánh với bản gốc đầu vào.

Một số toán tử và chức năng (ví dụ: bổ sung và phép nhân) không thực hiện kiểm tra lỗi thời gian chạy trong Lợi ích của việc cải thiện tốc độ thực hiện. Trên một số hệ thống, cho Ví dụ, các toán tử số cho một số loại dữ cách đọc kèo bóng đá có thể âm thầm Nguyên nhân Dòng chảy hoặc tràn.

8.1. cách đọc kèo bóng đá loại số

cách đọc kèo bóng đá loại số bao gồm hai, bốn, bốn và tám byte số nguyên, số lượng nổi bốn và tám byte, và Số thập phân có chính xác cố định.Bảng 8-2liệt kê cách đọc kèo bóng đá loại có sẵn.

Bảng 8-2. cách đọc kèo bóng đá loại số

tên Kích thước lưu trữ Mô tả phạm vi
SmallInt 2 byte Số nguyên phạm vi nhỏ -32768 đến +32767
Số nguyên 4 byte Lựa chọn thông thường cho số nguyên -2147483648 đến +2147483647
Bigint 8 byte Số nguyên phạm vi lớn -9223372036854775808 đến 9223372036854775807
thập phân biến Độ chính xác do người dùng chỉ định, chính xác Không giới hạn
Số Biến Độ chính xác do người dùng chỉ định, chính xác Không giới hạn
Real 4 byte biến đổi chính xác, không chính xác 6 chữ số thập phân chính xác
Double Precision 8 byte biến đổi chính xác, không chính xác 15 chữ số thập phân chính xác
sê -ri 4 byte Số nguyên tự động 1 đến 2147483647
BigSerial 8 byte Số nguyên tự động lớn 1 đến 9223372036854775807

Cú pháp của hằng số cho cách đọc kèo bóng đá loại số được mô tả TRONGPhần 4.1.2. cách đọc kèo bóng đá loại số có một bộ đầy đủ tương ứng cách đọc kèo bóng đá toán tử và chức năng số học. Tham khảoChương 9Để biết thêm thông tin. cách đọc kèo bóng đá cách đọc kèo bóng đá phần sau mô tả cách đọc kèo bóng đá loại một cách chi tiết.

8.1.1. cách đọc kèo bóng đá loại số nguyên

cách đọc kèo bóng đá loạiSmallInt, Số nguyênBigintCửa hàng toàn bộ số, nghĩa là cách đọc kèo bóng đá số không có phân số cách đọc kèo bóng đá thành phần, của cách đọc kèo bóng đá phạm vi khác nhau. Nỗ lực lưu trữ cách đọc kèo bóng đá giá trị ngoài phạm vi được phép sẽ dẫn đến lỗi.

cách đọc kèo bóng đáSố nguyênlà thông thường sự lựa chọn, vì nó cung cấp sự cân bằng tốt nhất giữa phạm vi, lưu trữ Kích thước và hiệu suất. Thesmallint27135_27213Bigintcách đọc kèo bóng đá chỉ nên được sử dụng nếu TheSố nguyênPhạm vi không đủ, bởi vì cái sau chắc chắn nhanh hơn.

TheBigintLoại không thể hoạt động chính xác trên tất cả cách đọc kèo bóng đá nền tảng, vì nó dựa vào trình biên dịch Hỗ trợ cho số nguyên tám byte. Trên máy không có ủng hộ,Biginthoạt động giống nhưSố nguyên(nhưng vẫn chiếm tám byte lưu trữ). Tuy nhiên, chúng tôi không biết về bất kỳ hợp lý nào nền tảng nơi này thực sự là trường hợp.

SQLChỉ chỉ định cách đọc kèo bóng đá loại số nguyênSố nguyên(hoặcint) vàsmallint. cách đọc kèo bóng đáBigintvà tên cách đọc kèo bóng đáINT2, INT4INT8là cách đọc kèo bóng đá phần mở rộng, được chia sẻ với khác nhauSQLCơ sở dữ cách đọc kèo bóng đá hệ thống.

Lưu ý:Nếu bạn có một cột cách đọc kèo bóng đáSmallInthoặcBigintvới một chỉ mục, bạn có thể gặp sự cố khi nhận được hệ thống để sử dụng chỉ mục đó. Chẳng hạn, một mệnh đề của biểu mẫu

... trong đó smallint_column = 42

sẽ không sử dụng chỉ mục, vì hệ thống gán cách đọc kèo bóng đáSố nguyênvới hằng số 42 vàPostgreSQLHiện tại không thể sử dụng một chỉ mục khi hai loại dữ cách đọc kèo bóng đá khác nhau có liên quan. Một cách giải quyết là để duy nhất không đổi, Do đó:

... trong đó smallint_column = '42'

Điều này sẽ khiến hệ thống trì hoãn độ phân giải cách đọc kèo bóng đá và sẽ gán đúng cách đọc kèo bóng đá cho hằng số.

8.1.2. Độ chính xác tùy ý Số

cách đọc kèo bóng đáSốCó thể lưu trữ số với tối đa 1000 chữ số chính xác và thực hiện cách đọc kèo bóng đá tính toán chính xác. Nó đặc biệt được khuyến nghị để lưu trữ tiền tệ Số lượng và cách đọc kèo bóng đá số lượng khác khi cần độ chính xác. Tuy nhiên,SốLoại rất chậm so với cách đọc kèo bóng đá loại điểm nổi được mô tả trong phần tiếp theo phần.

Trong phần tiếp theo, chúng tôi sử dụng cách đọc kèo bóng đá thuật ngữ sau:Scalecủa ASố30091_30200chính xáccủa ASốlà tổng số số cách đọc kèo bóng đá chữ số quan trọng trong toàn bộ số, nghĩa là, số chữ số cho cả hai bên của số thập phân điểm. Vì vậy, số 23.5141 có độ chính xác là 6 và tỷ lệ trong số 4. cách đọc kèo bóng đá số nguyên có thể được coi là có tỷ lệ bằng không.

Cả độ chính xác và tỷ lệ của cách đọc kèo bóng đá số có thể được cấu hình. Để khai báo một cột cách đọc kèo bóng đáSốSử dụng cú pháp

Số (độ chính xác, Scale)

Độ chính xác phải dương, tỷ lệ 0 hoặc tích cực. Ngoài ra,

Số (chính xác)

Chọn thang đo 0. Chỉ định

Số

Không có bất kỳ độ chính xác hoặc tỷ lệ nào tạo ra một cột trong đó giá trị số của bất kỳ độ chính xác và tỷ lệ nào có thể được lưu trữ, lên đến giới hạn thực hiện về độ chính xác. Một cột của cái này Loại sẽ không ép buộc cách đọc kèo bóng đá giá trị đầu vào cho bất kỳ quy mô cụ thể nào, trong khiSốcách đọc kèo bóng đá cột có được khai báo Thang đo sẽ ép buộc cách đọc kèo bóng đá giá trị đầu vào cho thang đo đó. (TheSQL31566_31788

31801_32051

cách đọc kèo bóng đá loạithập phânSốtương đương. Cả hai cách đọc kèo bóng đá đều là một phần của TheSQLtiêu chuẩn.

8.1.3. cách đọc kèo bóng đá loại điểm nổi

Các loại dữ cách đọc kèo bóng đáRealđộ chính xác gấp đôi32700_32818IEEETiêu chuẩn 754 cho số học dấu phẩy nổi nhị phân (đơn và đơn và độ chính xác gấp đôi, tương ứng), đến mức Bộ xử lý cơ bản, hệ điều hành và hỗ trợ trình biên dịch Nó.

Không chính xác có nghĩa là một số giá trị không thể được chuyển đổi chính xác đến định dạng nội bộ và được lưu trữ dưới dạng xấp xỉ, vì vậy Việc lưu trữ và in lại một giá trị có thể hiển thị nhẹ sự khác biệt. Quản lý cách đọc kèo bóng đá lỗi này và cách chúng lan truyền thông qua cách đọc kèo bóng đá tính toán là chủ đề của toàn bộ nhánh của Toán học và Khoa học Máy tính và sẽ không được thảo luận Xa hơn ở đây, ngoại trừ cách đọc kèo bóng đá điểm sau:

  • Nếu bạn yêu cầu lưu trữ và tính toán chính xác (chẳng hạn như Đối với số tiền tiền tệ), hãy sử dụngSốcách đọc kèo bóng đá thay thế.

  • Nếu bạn muốn thực hiện cách đọc kèo bóng đá tính toán phức tạp với những điều này cách đọc kèo bóng đá loại cho bất cứ điều gì quan trọng, đặc biệt là nếu bạn dựa vào một số hành vi trong cách đọc kèo bóng đá trường hợp biên (vô cực, dòng chảy), bạn nên đánh giá cẩn thận việc triển khai.

  • So sánh hai giá trị dấu phẩy động cho sự bình đẳng có thể hoặc có thể không hoạt động như mong đợi.

Trên hầu hết cách đọc kèo bóng đá nền tảng,Realcách đọc kèo bóng đá có một phạm vi ít nhất 1E-37 đến 1E+37 với độ chính xác của AT ít nhất 6 chữ số thập phân. TheDouble Độ chính xácLoại thường có phạm vi khoảng 1E-307 đến 1e+308 với độ chính xác ít nhất 15 chữ số. Giá trị đó Quá lớn hoặc quá nhỏ sẽ gây ra lỗi. Vòng tròn có thể diễn ra nếu độ chính xác của một số đầu vào quá cao. cách đọc kèo bóng đá số quá gần với số 0 không thể đại diện cho khác biệt với số 0 sẽ gây ra lỗi dòng chảy.

POSTGRESQLCũng hỗ trợ cách đọc kèo bóng đá ký hiệu tiêu chuẩn SQLfloatfloat (P)Để chỉ định số không chính xác cách đọc kèo bóng đá. Đây,P35040_35110PostgreSQLChấp nhậnFloat (1)đếnFloat (24)như ChọnRealcách đọc kèo bóng đá, trong khiFloat (25)đếnFloat (53)ChọnDouble Độ chính xác35433_35447PBên ngoài phạm vi được phép vẽ lỗi.floatKhông có độ chính xác được chỉ định được đưa đến nghĩa làDouble Precision.

Lưu ý:trướcPOSTGRESQL7.4, độ chính xác trongfloat (P)Đã được coi là rất nhiều chữ số thập phân. Điều này đã được sửa chữa để phù hợp với SQL tiêu chuẩn, trong đó chỉ định rằng độ chính xác được đo lường trong cách đọc kèo bóng đá chữ số nhị phân. Giả định rằngRealDouble Độ chính xác36210_36455Pđược sử dụng trên tất cả nền tảng.

8.1.4. cách đọc kèo bóng đá loại nối tiếp

Các loại dữ cách đọc kèo bóng đásê -riBigSerialkhông phải là loại đúng, mà chỉ là một Notational thuận tiện cho việc thiết lập định danh duy nhất cách đọc kèo bóng đá cột (tương tự nhưauto_incrementthuộc tính được hỗ trợ bởi một số cơ sở dữ cách đọc kèo bóng đá khác). Trong việc thực hiện hiện tại, Chỉ định

Tạo bảngTableName(colnameSê -ri
);

tương đương với chỉ định:

Tạo chuỗiTableName_colname_SEQ;
Tạo bảngTableName(colnameSố nguyên mặc định NextVal ('TableName_colname_seq ') không phải null
);

Vì vậy, chúng tôi đã tạo một cột số nguyên và được sắp xếp cho cách đọc kèo bóng đá giá trị mặc định của nó được gán từ một trình tạo chuỗi. MỘTkhông null38062_38218độc đáohoặcKhóa chínhràng buộc để ngăn chặn trùng lặp cách đọc kèo bóng đá giá trị từ việc bị chèn vào do tai nạn, nhưng điều này không tự động.

​​Lưu ý:trướcPOSTGRESQL7.3,nối tiếpngụ ýđộc đáo. Điều này không còn tự động. Nếu như bạn muốn một cột nối tiếp ở trong một ràng buộc duy nhất hoặc một khóa chính, bây giờ nó phải được chỉ định, giống như với bất kỳ Kiểu dữ cách đọc kèo bóng đá khác.

Để chèn giá trị tiếp theo của chuỗi vàosê -riCột, chỉ định rằngnối tiếpCột nên được gán giá trị mặc định. Điều này có thể được thực hiện bằng cách loại trừ cột từ danh sách cách đọc kèo bóng đá cột trongChèncâu lệnh hoặc thông qua việc sử dụngMặc địnhTừ khóa.

tên cách đọc kèo bóng đásê -riserial4là tương đương: cả hai đều tạoSố nguyênCột. Tên cách đọc kèo bóng đáBigSerialserial8làm việc giống như vậy, ngoại trừ việc họ tạo ra mộtBIGINTCột.BigSerialnên được sử dụng nếu bạn dự đoán việc sử dụng nhiều hơn 231Định danh trong suốt vòng đời của bàn.

Trình tự được tạo cho ANối tiếpCột bị bỏ tự động khi cột sở hữu là Bị bỏ, và không thể bị cách đọc kèo bóng đá bỏ khác. (Điều này không đúng TRONGPostgreSQLPhát hành trước 7.3. Lưu ý rằng liên kết thả tự động này sẽ không xảy ra cho một chuỗi được tạo bằng cách tải lại một bãi rác từ một Cơ sở dữ cách đọc kèo bóng đá trước 7.3; Tệp kết xuất không chứa thông tin cần thiết để thiết lập liên kết phụ thuộc.) Hơn nữa, sự phụ thuộc này giữa trình tự và cột là chỉ làm chosê -riCột chính; Nếu bất kỳ cột nào khác tham chiếu chuỗi (có lẽ bằng cách gọi thủ côngNextValHàm), chúng sẽ bị phá vỡ nếu trình tự bị xóa. Sử dụng Asê -richuỗi của cột trong Một thời trang như vậy được coi là hình thức xấu; Nếu bạn muốn cho ăn một số cột từ cùng một trình tạo chuỗi, tạo trình tự như một đối tượng độc lập.