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. kèo bóng đá euro số#

kèo bóng đá euro số bao gồm các số nguyên hai, bốn, và tám byte, số điểm nổi bốn và tám byte và số thập phân có thể lựa chọn.Bảng 8.2Liệt kê kèo bóng đá euro có sẵn.

Bảng 8.2. kèo bóng đá euro số

tên Kích thước lưu trữ Mô tả phạm vi
11090_11100 2 byte Số nguyên phạm vi nhỏ -32768 đến +32767
Số nguyên 4 byte Lựa chọn điển hình 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 lên đến 131072 chữ số trước điểm thập phân; Lên đến 16383 chữ số sau dấu thập phân
Số Biến Độ chính xác do người dùng chỉ định, chính xác lên đến 131072 chữ số trước điểm thập phân; Lên đến 16383 chữ số sau dấu thập phâ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 Chính xác biến, không chính xác 15 chữ số thập phân chính xác
SmallSerial 2 byte Số nguyên nhỏ tự động 1 đến 32767
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 kèo bóng đá euro số được mô tả trongPhần 4.1.2. kèo bóng đá euro số có đầy đủ các toán tử và chức năng số học tương ứng. Tham khảoChương 9Để biết thêm thông tin. Các phần sau mô tả kèo bóng đá euro một cách chi tiết.

8.1.1. kèo bóng đá euro số nguyên#

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

kèo bóng đá euroSố nguyênlà lựa chọn phổ biến, vì nó cung cấp sự cân bằng tốt nhất giữa phạm vi, kích thước lưu trữ và hiệu suất. TheSmallIntkèo bóng đá euro thường chỉ được sử dụng nếu không gian đĩa ở mức cao. TheBigintkèo bóng đá euro được thiết kế để sử dụng khi phạm vi củaSố nguyênkèo bóng đá euro không đủ.

SQLChỉ xác định kèo bóng đá euro số nguyênSố nguyên(hoặcint),SmallIntBigint. Tên kèo bóng đá euroINT2, INT4INT8là kèo bóng đá euro tiện ích mở rộng, cũng được sử dụng bởi một số khácSQLHệ thống cơ sở dữ liệu.

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

kèo bóng đá euroSốCó thể lưu trữ số với số lượng rất lớn kèo bóng đá euro chữ số. Nó đặc biệt được khuyến nghị để lưu trữ số lượng tiền tệ và kèo bóng đá euro số lượng khác khi cần độ chính xác. Tính toán vớiSốGiá trị mang lại kết quả chính xác nếu có thể, ví dụ: bổ sung, trừ, nhân. Tuy nhiên, tính toán trênSốGiá trị rất chậm so với kèo bóng đá euro số nguyên hoặc kèo bóng đá euro điểm nổi được mô tả trong phần tiếp theo.

Chúng tôi sử dụng kèo bóng đá euro thuật ngữ sau đây: Thechính xáccủa ASố16735_16870tỷ lệcủa ASốlà số lượng kèo bóng đá euro chữ số thập phân trong phần phân số, ở bên phải của điểm thập phân. Vì vậy, số 23.5141 có độ chính xác là 6 và tỷ lệ 4. kèo bóng đá euro số nguyên có thể được coi là có tỷ lệ bằng không.

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

Số (Precision, tỷ lệ)

Độ chính xác phải dương, trong khi thang đo có thể dương hoặc âm (xem bên dưới). Cách khác:

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 raSố không bị ràng buộc17935_18115Sốkèo bóng đá euro cột có thang đo được khai báo sẽ ép buộc kèo bóng đá euro giá trị đầu vào theo thang đo đó. (TheSQLTiêu chuẩn yêu cầu tỷ lệ mặc định là 0, tức là, ép buộc với độ chính xác số nguyên. Chúng tôi thấy điều này một chút vô dụng. Nếu bạn quan tâm đến tính di động, hãy luôn chỉ định độ chính xác và tỷ lệ rõ ràng.)

Lưu ý

Độ chính xác tối đa có thể được chỉ định rõ ràng trong ASốkèo bóng đá euro khai báo là 1000.Số18697_18745Bảng 8.2.

Nếu tỷ lệ của giá trị được lưu trữ lớn hơn tỷ lệ khai báo của cột, hệ thống sẽ làm tròn giá trị đến số chữ số phân số được chỉ định. Sau đó, nếu số chữ số ở bên trái của điểm thập phân vượt quá độ chính xác được khai báo trừ thang đo được khai báo, một lỗi được nêu ra. Ví dụ: một cột được khai báo là

Số (3, 1)

Sẽ làm tròn kèo bóng đá euro giá trị đến 1 thập phân và có thể lưu trữ kèo bóng đá euro giá trị trong khoảng từ -99,9 đến 99,9, bao gồm.

Bắt đầu trongPostgreSQL15, nó được phép khai báo ASốCột có thang đo âm. Sau đó, kèo bóng đá euro giá trị sẽ được làm tròn sang bên trái của dấu thập phân. Độ chính xác vẫn đại diện cho số lượng chữ số không tròn tối đa. Do đó, một cột được khai báo là

Số (2, -3)

19784_20185

Số (3, 5)

Sẽ làm tròn kèo bóng đá euro giá trị đến 5 vị trí thập phân và có thể lưu trữ kèo bóng đá euro giá trị trong khoảng -0.00999 đến 0,00999, bao gồm.

Lưu ý

PostgreSQLcho phép thang đo trong ASốkèo bóng đá euro khai báo là bất kỳ giá trị nào trong phạm vi -1000 đến 1000. Tuy nhiên,SQLTiêu chuẩn yêu cầu tỷ lệ phải nằm trong phạm vi 0 đếnchính xác. Sử dụng kèo bóng đá euro thang đo bên ngoài phạm vi đó có thể không di động cho kèo bóng đá euro hệ thống cơ sở dữ liệu khác.

kèo bóng đá euro giá trị số được lưu trữ vật lý mà không cần thêm bất kỳ số 0 dẫn đầu hoặc theo dõi. Do đó, độ chính xác và tỷ lệ được khai báo của một cột là tối đa, không phân bổ cố định. (Theo nghĩa nàySốkèo bóng đá euro gần giống vớiVarchar (n)hơnchar (n).) Yêu cầu lưu trữ thực tế là hai byte cho mỗi nhóm bốn chữ số thập phân, cộng với ba đến tám byte trên đầu.

Ngoài kèo bóng đá euro giá trị số thông thường,Sốkèo bóng đá euro có một số giá trị đặc biệt:


Vô cực
-Infinity
NAN

Chúng được điều chỉnh từ tiêu chuẩn IEEE 754 và đại diệnVô cựcxông, HồiInfinity tiêu cựcHàng22142_22145Not-A-NumberHồi, tương ứng. Khi viết kèo bóng đá euro giá trị này dưới dạng hằng số trong lệnh SQL, bạn phải đặt báo giá xung quanh chúng, ví dụBảng cập nhật đặt x = '-infinity'22370_22492INF-inf.

kèo bóng đá euro giá trị vô cực hoạt động theo kỳ vọng toán học. Ví dụ,Vô cựccộng với bất kỳ giá trị hữu hạn nào bằngVô cực, cũng nhưVô cựccộngVô cực; NhưngVô cựctrừVô cựcsản lượngNAN(không phải là một số), vì nó không có cách giải thích được xác định rõ. Lưu ý rằng một vô cực chỉ có thể được lưu trữ trong một không bị ràng buộcSốCột, vì nó vượt quá bất kỳ giới hạn độ chính xác hữu hạn nào.

TheNAN(không phải là số) giá trị được sử dụng để biểu thị kết quả tính toán không xác định. Nói chung, mọi hoạt động cóNANĐầu vào mang lại cái khácNAN. Ngoại lệ duy nhất là khi kèo bóng đá euro đầu vào khác của hoạt động là cùng một đầu ra sẽ thu được nếuNANđã được thay thế bằng bất kỳ giá trị số hữu hạn hoặc vô hạn nào; Sau đó, giá trị đầu ra đó được sử dụng choNANquá. (Một ví dụ về nguyên tắc này làNANđược nâng lên thành nguồn điện không mang lại một.)

Lưu ý

Trong hầu hết kèo bóng đá euro triển khai củaHồiNot-A-NumberHồiKhái niệm,nankhông được coi là bằng bất kỳ giá trị số nào khác (bao gồmnan). Để cho phépSố24185_24240PostgreSQLTreatsNANGiá trị bằng nhau và lớn hơn tất cả khôngNANgiá trị.

kèo bóng đá eurothập phânSốtương đương. Cả hai kèo bóng đá euro là một phần củaSQLtiêu chuẩn.

Khi làm tròn kèo bóng đá euro giá trị,SốNhập kèo bóng đá euro vòng liên kết cách xa số không, trong khi (trên hầu hết kèo bóng đá euro máy)RealDouble Precisionkèo bóng đá euro mối quan hệ tròn với số chẵn gần nhất. Ví dụ:

Chọn x,
  vòng (x :: số) như num_round,
  vòng (x :: độ chính xác gấp đôi) như dbl_round
Từ Generate_Series (-3,5, 3.5, 1) là x;
  x | num_round | dbl_round
------+-----------+-----------
 -3,5 |        -4 |        -4
 -2,5 |        -3 |        -2
 -1,5 |        -2 |        -2
 -0,5 |        -1 |        -0
  0,5 |         1 |         0
  1.5 |         2 |         2
  2.5 |         3 |         2
  3.5 |         4 |         4
(8 hàng)

8.1.3. kèo bóng đá euro điểm nổi#

kèo bóng đá euro dữ liệuRealDouble Precisionlà kèo bóng đá euro số không chính xác, chính xác. Trên tất cả các nền tảng được hỗ trợ hiện đang được hỗ trợ, kèo bóng đá euro này là triển khaiIEEE26203_26388

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 sang định dạng nội bộ và được lưu trữ dưới dạng xấp xỉ, để lưu trữ và truy xuất một giá trị có thể hiển thị sự khác biệt nhỏ. Quản lý kèo bóng đá euro lỗi này và cách chúng tuyên truyền thông qua kèo bóng đá euro tính toán là chủ đề của toàn bộ ngành toán học và khoa học máy tính và sẽ không được thảo luận ở đây, ngoại trừ kèo bóng đá euro đ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ư số tiền tiền tệ), hãy sử dụngSốkèo bóng đá euro thay thế.

  • Nếu bạn muốn thực hiện các tính toán phức tạp với kèo bóng đá euro này cho bất cứ điều gì quan trọng, đặc biệt nếu bạn dựa vào một số hành vi nhất định trong các 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 thực hiện.

  • So sánh hai giá trị điểm nổi cho sự bình đẳng có thể không phải lúc nào cũng hoạt động như mong đợi.

27535_27579Realkèo bóng đá euro có phạm vi khoảng 1e-37 đến 1e+37 với độ chính xác ít nhất 6 chữ số thập phân. TheDouble PrecisionLoại có phạm vi khoảng 1e-307 đến 1e+308 với độ chính xác ít nhất 15 chữ số. kèo bóng đá euro giá trị quá lớn hoặc quá nhỏ sẽ gây ra lỗi. Làm tròn có thể diễn ra nếu độ chính xác của số đầu vào quá cao. kèo bóng đá euro số quá gần với số 0 không thể đại diện vì số 0 sẽ gây ra lỗi dòng chảy.

Theo mặc định, kèo bóng đá euro giá trị điểm nổi được đầu ra ở dạng văn bản ở biểu diễn thập phân chính xác ngắn nhất của chúng; Giá trị thập phân được tạo ra gần với giá trị nhị phân được lưu trữ thực hơn so với bất kỳ giá trị nào khác có thể thể hiện trong cùng một độ chính xác nhị phân. (Tuy nhiên, giá trị đầu ra hiện không bao giờchính xác28417_28636float8Giá trị và tối đa 9 chữ số chofloat4Giá trị.

Lưu ý

Định dạng đầu ra ngắn nhất này nhanh hơn nhiều để tạo ra so với định dạng tròn lịch sử.

Để tương thích với đầu ra được tạo bởi kèo bóng đá euro phiên bản cũ hơn củaPostgreSQLvà để cho phép giảm độ chính xác đầu ra,Extra_float_digitstham số có thể được sử dụng để chọn đầu ra thập phân tròn thay thế. Đặt giá trị là 0 khôi phục mặc định trước đó là làm tròn giá trị thành 6 (chofloat4) hoặc 15 (chofloat8) kèo bóng đá euro chữ số thập phân đáng kể. Đặt giá trị âm làm giảm số lượng chữ số hơn nữa; Ví dụ: -2 sẽ làm tròn đầu ra tương ứng với 4 hoặc 13 chữ số.

Bất kỳ giá trị nào củaExtra_float_digitslớn hơn 0 chọn định dạng ngắn nhất.

Lưu ý

kèo bóng đá euro ứng dụng muốn kèo bóng đá euro giá trị chính xác trong lịch sử phải đặtExtra_float_digitsđến 3 để có được chúng. Để tương thích tối đa giữa kèo bóng đá euro phiên bản, chúng nên tiếp tục làm như vậy.

Ngoài các giá trị số thông thường, kèo bóng đá euro điểm nổi có một số giá trị đặc biệt:


Vô cực
-Infinity
NAN

Chúng đại diện cho kèo bóng đá euro giá trị đặc biệt của IEEE 754MạnhVô cựcxông, Infinity tiêu cựcHồiNot-A-NumberHồi, tương ứng. Khi viết kèo bóng đá euro giá trị này dưới dạng hằng số trong lệnh SQL, bạn phải đặt báo giá xung quanh chúng, ví dụBảng cập nhật đặt x = '-infinity'30984_31106INF-inf.

Lưu ý

IEEE 754 Chỉ định rằngNANKhông nên so sánh bằng bất kỳ giá trị điểm nổi nào khác (bao gồmNAN). Để cho phép kèo bóng đá euro giá trị điểm nổi được sắp xếp và sử dụng trong kèo bóng đá euro chỉ mục dựa trên cây,PostgreSQLTreatsNANGiá trị bằng nhau và lớn hơn tất cả khôngNANGiá trị.

PostgreSQLcũng hỗ trợ kèo bóng đá euro ký hiệu tiêu chuẩn SQLfloatfloat (P)Để chỉ định kèo bóng đá euro số không chính xác. Đây,PChỉ định độ chính xác có thể chấp nhận tối thiểu trongnhị phânchữ số.PostgreSQLChấp nhậnFloat (1)đếnFloat (24)32193_32213Realkèo bóng đá euro, trong khiFloat (25)đếnFloat (53)Chọnđộ chính xác gấp đôi. Giá trị củaPBên ngoài phạm vi được phép vẽ lỗi.floatKhông có độ chính xác được chỉ định được thực hiện để có nghĩa làđộ chính xác gấp đôi.

8.1.4. kèo bóng đá euro nối tiếp#

Lưu ý

33454_33620Phần 5.3.

kèo bóng đá euro dữ liệuSmallSerial, Nối tiếpBigSerialkhông phải là loại đúng, mà chỉ là một sự thuận tiện đáng chú ý để tạo kèo bóng đá euro cột định danh duy nhất (tương tự nhưauto_incrementthuộc tính được hỗ trợ bởi một số cơ sở dữ liệu khác). Trong triển khai hiện tại, chỉ định:

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

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

Tạo chuỗiTableName_colname34481_34513TableName(colnameSố nguyên không phải là mặc định NEXTVAL ('TableName_colname_seq ')
);
Thay đổi trình tựTableName_colname_SEQ thuộc sở hữu củaTableName.colname;

Do đó, chúng tôi đã tạo một cột số nguyên và được sắp xếp cho kèo bóng đá euro giá trị mặc định của nó được gán từ trình tạo chuỗi. MỘTkhông nullràng buộc được áp dụng để đảm bảo rằng giá trị null không thể được chèn. (Trong hầu hết kèo bóng đá euro trường hợp, bạn cũng muốn đính kèmđộc đáohoặcKhóa chínhràng buộc để ngăn kèo bóng đá euro giá trị trùng lặp được chèn vào tình cờ, nhưng điều này không tự động.) Cuối cùng, trình tự được đánh dấu làMạnhĐược sở hữu bởiCột, để nó bị hủy nếu cột hoặc bảng bị rơi.

Lưu ý

SmallSerial, sê -riBigSerialĐược triển khai bằng cách sử dụng kèo bóng đá euro chuỗi, có thể có "lỗ hổng" hoặc khoảng cách trong chuỗi kèo bóng đá euro giá trị xuất hiện trong cột, ngay cả khi không có hàng nào bị xóa. Một giá trị được phân bổ từ chuỗi vẫn "được sử dụng" ngay cả khi một hàng chứa giá trị đó không bao giờ được chèn thành công vào cột bảng. Điều này có thể xảy ra, ví dụ, nếu việc chèn giao dịch quay trở lại. Nhìn thấynextVal ()inPhần 9.17Để biết chi tiết.

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

tên kèo bóng đá eurosê -riserial4tương đương: cả hai đều tạoSố nguyênCột. Tên kèo bóng đá euroBigSerialserial8Làm việc theo cùng một cách, ngoại trừ việc chúng 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ảng. Tên kèo bóng đá euroSmallSerialserial2Cũng hoạt động theo cùng một cách, ngoại trừ việc chúng tạo ra mộtSmallIntcột.

Trình tự được tạo cho Asê -riCột bị bỏ tự động khi cột sở hữu bị rơi. Bạn có thể bỏ trình tự mà không bỏ cột, nhưng điều này sẽ buộc kèo bóng đá euro bỏ biểu thức mặc định cột.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không phù hợp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.