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 kèo bóng đá c1 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 đá c1 phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

Chương 5. Dữ kèo bóng đá c1 Loại

PostgreSQLcó một bộ phong phú Các loại dữ kèo bóng đá c1 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 kèo bóng đá c1lệnh.

Bảng 5-1Hiển thị tất cả Các loại dữ kèo bóng đá c1 đa năng bao gồm trong phân phối tiêu chuẩn. Hầu hết các tên thay thế được liệt kê trong"Bí danh"Cột là tên được sử dụng bên trong bởiPostgreSQLĐối với lịch sử lý do. Ngoài ra, một số kèo bóng đá c1 được sử dụng trong 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 5-1. Kiểu dữ kèo bóng đá c1

tên kèo bóng đá c1 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 2D
bytea Dữ kèo bóng đá c1 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 Địa chỉ mạng IP
Circle 16517_16537
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 Địa chỉ máy chủ IP
Số nguyên int, INT4 Đã ký Byte Integer
Khoảng thời gian (P) Khoảng thời gian sử dụng chung
Line dòng vô hạn trong mặt phẳng 2D (không được triển khai)
LSEG Phân đoạn dòng trong mặt phẳng 2D
MacAddr Địa chỉ MAC
tiền Số tiền tiền tệ
18070_18083P, S)] thập phân [(P, S)] Số chính xác với độ chính xác có thể chọn
Path Đường dẫn hình học mở và đóng trong mặt phẳng 2D
điểm Điểm hình học trong mặt phẳng 2D
Polygon Đường dẫn hình học đóng trong mặt phẳng 2D
Real float4 Số điểm nổi chính xác đơn
SmallInt INT2 Đã ký hai byte
sê -ri serial4 Autoincrementing Four-byte Integer
Text Chuỗi ký tự có độ dài thay đổi
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 19970_20004
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ờ

Tương thích:Các kèo bóng đá c1 sau (hoặc chính tả của nó) được chỉ định bởiSQL: bit, Bit thay đổi, Boolean, Char, Nhân vật khác nhau, Nhân vật, Varchar, ngày, 21051_21075, Số nguyên, Khoảng, Số, thập phân, Real, 21269_21279, Thời gian, Timestamp(cả hai có hoặc không có thời gian vùng).

Mỗi loại dữ kèo bóng đá c1 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ác định dạng, chẳng hạn như các kèo bóng đá c1 ngày và thời gian. Hầu hết các đầu vào và đầu ra các chức năng tương ứng với các kèo bóng đá c1 cơ sở (ví dụ: số nguyên và Số điểm nổi) Làm một số kiểm tra lỗi. Một số đầu vào và các chức năng đầu ra không thể đảo ngược. Đó là kết quả của Hàm đầu ra có thể mất độ chính xác khi so sánh với Đầu vào gốc.

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ữ kèo bóng đá c1 có thể âm thầm Dòng chảy hoặc tràn.

5.1. Các kèo bóng đá c1 số

Các kèo bóng đá c1 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 5-2Liệt kê Các kèo bóng đá c1 có sẵn.

Bảng 5-2. Các kèo bóng đá c1 số

tên kèo bóng đá c1 Kích thước lưu trữ Mô tả phạm vi
SmallInt 2 byte Phạm vi nhỏ có chính xác -32768 đến +32767
Số nguyên 4 byte Lựa chọn thông thường cho chính xác cố định -2147483648 đến +2147483647
Bigint 8 byte Phạm vi lớn có chính xác -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 Chính xác biến, không chính xác 6 chữ số thập phân chính xác
độ chính xác gấp đôi 25112_25121 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ác kèo bóng đá c1 số được mô tả TRONGPhần 1.1.2. Các kèo bóng đá c1 số có một bộ đầy đủ tương ứng Các toán tử và chức năng số học. Tham khảoChương 6Để biết thêm thông tin. Các Các phần sau mô tả các kèo bóng đá c1 một cách chi tiết.

5.1.1. Các kèo bóng đá c1 số nguyên

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

kèo bóng đá c1Số 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. TheSmallIntkèo bóng đá c1 thường chỉ được sử dụng nếu không gian đĩa ở mức cao. TheBigintkèo bóng đá c1 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.

TheBigintkèo bóng đá c1 không thể hoạt động chính xác trên tất cả các 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ác kèo bóng đá c1 số nguyênSố nguyên(hoặcint) vàsmallint. kèo bóng đá c1Bigintvà tên kèo bóng đá c1INT2, INT4INT8là kèo bóng đá c1 phần mở rộng, được chia sẻ với khác nhauSQLCơ sở dữ kèo bóng đá c1 hệ thống.

Lưu ý:Nếu bạn có một cột kèo bóng đá c1SmallInthoặ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 kèo bóng đá c1Số 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ữ kèo bóng đá c1 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 kèo bóng đá c1 và sẽ gán đúng kèo bóng đá c1 cho hằng số.

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

kèo bóng đá c1SốCó thể lưu trữ số với tối đa 1.000 chữ số của độ chính xác và thực hiện kèo bóng đá c1 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à kèo bóng đá c1 số lượng khác khi cần độ chính xác. Tuy nhiên,Sốkèo bóng đá c1 rất chậm so với các kèo bóng đá c1 đ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 kèo bóng đá c1 thuật ngữ sau:Scalecủa ASốIS số lượng kèo bóng đá c1 chữ số thập phân trong phần phân đoạn, cho Quyền của số thập phân. ThePrecisioncủa ASố29761_30028

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

Nếu độ chính xác hoặc tỷ lệ của giá trị lớn hơn tuyên bố độ chính xác hoặc tỷ lệ của một cột, hệ thống sẽ cố gắng làm tròn giá trị. Nếu giá trị không thể được làm tròn như vậy Để đáp ứng kèo bóng đá c1 giới hạn được khai báo, một lỗi được nêu ra.

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

5.1.3. Các kèo bóng đá c1 điểm nổi

Các loại dữ kèo bóng đá c1RealĐộ chính xác gấp đôikhông chính xác, chính xác biến đổi Các kèo bóng đá c1 số. Trong thực tế, những kèo bóng đá c1 này thường là triển khaiIEEETiê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ý kèo bóng đá c1 lỗi này và cách chúng lan truyền thông qua kèo bóng đá c1 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ừ kèo bóng đá c1 đ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ốkèo bóng đá c1 thay thế.

  • Nếu bạn muốn thực hiện các tính toán phức tạp với những điều này Các kèo bóng đá c1 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á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 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.

Thông thường,Realkèo bóng đá c1 có phạm vi ít nhất -1e+37 đến+1e+37 với độ chính xác ít nhất là 6 chữ số thập phân. TheDouble Precisionkèo bóng đá c1 bình thường có phạm vi khoảng -1e+308 đến+1e+308 với một Độ chính xác của ít nhất 15 chữ số. 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 một số đầu vào là quá cao. Số quá gần đến 0 không thể đại diện là khác biệt với ý chí bằng không gây ra lỗi dòng chảy.

5.1.4. Các kèo bóng đá c1 nối tiếp

Thesê -riKiểu dữ kèo bóng đá c1 không phải là đúng Loại, nhưng chỉ là một sự thuận tiện về công chứng các cột định danh (tương tự nhưAuto_incrementthuộc tính được hỗ trợ bởi một số cơ sở dữ kèo bóng đá c1 khác). Trong việc thực hiện hiện tại, Chỉ định

Tạo bảngTableName(colname34867_34880

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 kèo bóng đá c1 giá trị mặc định của nó được gán từ một trình tạo chuỗi. MỘTkhông nullràng buộc được áp dụng cho đảm bảo rằng một giá trị null không thể được chèn rõ ràng, hoặc. Trong hầu hết kèo bóng đá c1 trường hợp, bạn cũng muốn đính kèmđộc đáohoặcKhóa chínhràng buộc để ngăn chặn trùng lặp kèo bóng đá c1 giá trị từ việc bị chèn vào do tai nạn, nhưng điều này không tự động.

Để sử dụng Asê -riCột để chèn Giá trị tiếp theo của chuỗi vào bảng, chỉ định rằngsê -riCột nên được gán giá trị mặc định. Điều này có thể được thực hiện hoặc được kèo bóng đá c1 trừ khỏi cột từ danh sách các 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 đá c1nối tiếpserial4là tương đương: cả hai đều tạoSố nguyênCột. Tên kèo bóng đá c136474_36485serial8Công 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 bởi Asê -rikèo bóng đá c1 được tự động bỏ khi cột sở hữu là Bị bỏ, và không thể bị kèo bóng đá c1 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ữ kèo bóng đá c1 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 chonối tiếpCộ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ôngnextVal ()) chức năng), chúng có thể bị phá vỡ nếu trình tự bị xóa. Sử dụng37649_37657Cột trong thời trang là được coi là hình thức xấu.

Lưu ý:trướcPostgreSQL7.3,Nối tiếpngụ ýđộc đáo37959_38036độc đáohoặc AChính CHÌA KHÓABây giờ nó phải được chỉ định, giống như bất kỳ Kiểu dữ kèo bóng đá c1.