Mọi kiểu dữ liệu cột PostgreSQL phổ biến, nhóm theo họ: số nguyên, số thập phân, văn bản, thời gian, boolean và UUID, JSON, địa chỉ mạng, kiểu tổ hợp và kiểu từ extension. Mỗi dòng cho thấy kiểu đó lưu gì và khi nào nên chọn nó.
PostgreSQL có hàng chục kiểu, nhưng thiết kế schema hằng ngày chỉ dùng một bộ lõi. Các lựa chọn lặp lại là: integer hay numeric cho số, varchar hay text cho chuỗi (text thường đã đủ), timestamp hay timestamptz (ưu tiên timestamptz cho mọi dữ liệu thực tế) và json hay jsonb (ưu tiên jsonb — nhị phân và đánh chỉ mục được). Chọn kiểu cụ thể nhất mà vẫn vừa vặn; cơ sở dữ liệu sẽ thực thi giúp bạn.
Bảng tham chiếu · 46 mục
Kiểu dữ liệu PostgreSQLExplained
46 of 46 rows
Số nguyên
Số nguyên 2 byte từ -32768 đến 32767.
Hiếm khi; chỉ khi bắt buộc phải tiết kiệm không gian.
Số nguyên 4 byte, khoảng cộng/trừ 2 tỷ.
Cột số nguyên mặc định.
Số nguyên 8 byte, khoảng cộng/trừ 9 tỷ tỷ.
Bộ đếm rất lớn hoặc ID từ hệ thống ngoài.
Số nguyên 4 byte tự động tăng.
Khóa tự đánh số kiểu cũ; từ PG 10, GENERATED AS IDENTITY là lựa chọn thay thế được khuyến nghị.
Biến thể 2 byte và 8 byte của serial.
Tự đánh số tương ứng với cột smallint hoặc bigint.
Số nguyên do bảng tự sinh cho bạn (GENERATED ALWAYS AS IDENTITY).
Serial hiện đại; theo chuẩn SQL và an toàn hơn trước việc chèn thủ công.
Số thập phân và dấu phẩy động
Số thập phân chính xác với độ chính xác tùy ý.
Tiền tệ và mọi thứ không chấp nhận sai số làm tròn.
Số thực độ chính xác đơn 4 byte.
Giá trị khoa học gần đúng khi độ chính xác không quan trọng.
Số thực độ chính xác kép 8 byte.
Giá trị địa lý, thống kê và đặc trưng ML.
Số tiền tệ gắn với một locale cố định.
Ít khi dùng; numeric kèm mã tiền tệ phía ứng dụng linh hoạt hơn.
Văn bản
Văn bản độ dài cố định, đệm bằng khoảng trắng.
Mã có độ rộng đã biết; hiếm khi cần.
Văn bản độ dài thay đổi với giới hạn tùy chọn.
Chuỗi có giới hạn như tên người dùng hay email.
Văn bản độ dài thay đổi không giới hạn.
Cột chuỗi đa dụng; không bị phạt hiệu suất so với varchar.
Thời gian
Ngày dương lịch không kèm giờ.
Sinh nhật và hạn chót.
Giờ trong ngày, có hoặc không có múi giờ.
Báo thức hằng ngày hoặc giờ mở cửa.
Ngày và giờ không kèm múi giờ.
Schema cũ; tránh dùng cho công việc mới.
Ngày và giờ lưu dạng UTC, hiển thị theo múi giờ của client.
Lựa chọn mặc định cho mọi thời điểm thực tế; ưu tiên thay timestamp.
Khoảng thời gian, ví dụ 2 ngày hoặc 3 giờ.
Thời lượng và phép tính với ngày tháng.
Boolean, UUID và byte
Đúng hoặc sai.
Cờ và công tắc bật/tắt.
Định danh duy nhất toàn cục 128 bit.
ID không tuần tự, an toàn để công khai (sinh trong ứng dụng hoặc bằng gen_random_uuid).
Byte nhị phân thô.
Blob, hình ảnh và payload mờ; ưu tiên object storage cho tệp lớn.
Chuỗi bit độ dài cố định hoặc thay đổi.
Cờ đóng gói và trường giao thức; một giá trị bật/tắt đơn lẻ vẫn là boolean.
JSON và bán cấu trúc
JSON được phân tích thành dạng nhị phân, đánh chỉ mục được.
Dữ liệu linh hoạt hoặc lồng nhau; cột JSON được khuyến nghị (hỗ trợ chỉ mục GIN).
JSON giữ nguyên văn bản gốc.
Hiếm khi; chỉ khi cần bảo toàn thứ tự khóa hoặc khoảng trắng gốc.
Văn bản XML.
Tích hợp cũ bắt buộc dùng XML.
Biểu thức đường dẫn đã biên dịch để điều hướng dữ liệu JSON.
Lọc bên trong jsonb bằng jsonb_path_query và các toán tử SQL/JSON.
Mạng và tìm kiếm
Địa chỉ host IPv4 hoặc IPv6.
Lưu IP của client hoặc server.
Khối mạng IP, ví dụ 10.0.0.0/24.
Quy tắc tường lửa và dải subnet.
Địa chỉ MAC 6 byte hoặc 8 byte (EUI-64).
Định danh thiết bị và giao diện mạng.
Văn bản được tiền xử lý cho tìm kiếm toàn văn.
Tìm kiếm tích hợp của Postgres trước khi cần động đến máy tìm kiếm riêng.
Từ khóa tìm kiếm kết hợp bằng toán tử AND, OR và tiền tố.
Nửa truy vấn của tìm kiếm toàn văn, khớp với tsvector bằng @@.
Vị trí write-ahead log, số thứ tự của log.
Giám sát độ trễ replication và sao lưu.
Tổ hợp và nâng cao
Mảng của bất kỳ kiểu cơ sở nào, ví dụ integer[].
Danh sách giá trị đơn giản; dùng bảng con khi phần tử cần cột riêng.
Một giá trị từ danh sách cố định do bạn định nghĩa.
Trường trạng thái với tập tùy chọn ổn định.
Kiểu dòng tùy chỉnh gồm nhiều trường.
Nhóm trường lặp lại dùng chung giữa các bảng.
Khoảng liên tục giữa hai biên.
Lịch trình, dải giá và khoảng phiên bản, với các toán tử chồng lấn.
Kiểu cơ sở được bọc trong các ràng buộc do bạn định nghĩa.
Quy tắc dùng lại như email không rỗng, ép buộc tại mọi cột sử dụng nó.
Dòng không tên gồm các giá trị có kiểu.
Giá trị trả về của hàm PL/pgSQL và kết quả truy vấn trung gian.
Giá trị hình học hai chiều tích hợp sẵn.
Hình học phẳng đơn giản; vị trí thực tế cần PostGIS.
Định danh đối tượng hệ thống 4 byte không dấu.
Join catalog hệ thống; không dành cho cột của ứng dụng.
Chuỗi định danh nội bộ 63 ký tự.
Truy vấn catalog; dữ liệu hướng tới người dùng dùng text thường.
Kiểu từ extension
Cặp khóa/giá trị chuỗi trong một giá trị (extension).
Map phẳng; ngày nay jsonb làm tốt hơn.
Đường dẫn nhãn phân cấp như news.tech.ai (extension).
Cấu trúc cây với truy vấn tổ tiên và hậu duệ.
Văn bản so sánh không phân biệt hoa thường (extension).
Tính duy nhất không phân biệt hoa thường như email, không cần chỉ mục lower().
Đối tượng địa lý và hình học từ extension PostGIS.
Truy vấn khoảng cách, chứa và chỉ mục không gian.
Các hàm extension sinh giá trị UUID.
Cách sinh UUID kiểu cũ; từ PG 13 gen_random_uuid() đã tích hợp sẵn.