Các kiểu dữ liệu PostgreSQL: Ký tự - Số - Nhị phân - Boolean

Mục lục:

Anonim

PostgreSQL cung cấp một tập hợp các kiểu dữ liệu gốc phong phú cho người dùng. Người dùng có thể thêm các kiểu mới với sự trợ giúp của lệnh CREATE TYPE. Nó cũng làm cho các truy vấn đơn giản hơn và dễ đọc hơn.

Các kiểu dữ liệu trong PostgreSQL

PostgreSQL hỗ trợ các kiểu dữ liệu sau:

  • Các loại văn bản
  • Loại số
  • Ngày và giờ
  • XML
  • JSON
  • Boolean
  • Chút ít
  • Dữ liệu nhị phân
  • Mạng lưới
  • Mảng
  • Tạo loại dữ liệu của bạn
  • Boolean
  • Thời gian
  • UUID
  • Mảng
  • JSON
  • Các kiểu dữ liệu đặc biệt để lưu trữ địa chỉ mạng và dữ liệu hình học.

Chúng ta hãy nghiên cứu chi tiết các kiểu dữ liệu PostgreSQL

  • Kiểu dữ liệu nhân vật
  • Kiểu dữ liệu số
  • Kiểu dữ liệu nhị phân
  • Loại địa chỉ mạng
  • Loại tìm kiếm văn bản
  • Kiểu dữ liệu ngày / giờ
  • Loại Boolean
  • Các kiểu dữ liệu hình học
  • Các loại được liệt kê
  • Loại phạm vi
  • Loại UUID
  • Kiểu XML
  • Loại JSON
  • Loại giả

Kiểu dữ liệu nhân vật

PostgreSQL hỗ trợ các kiểu dữ liệu ký tự để lưu trữ các giá trị văn bản. PostgreSQL xây dựng các kiểu dữ liệu ký tự từ các cấu trúc bên trong giống nhau. PostgreSQL cung cấp ba kiểu dữ liệu ký tự: CHAR (n), VARCHAR (n) và TEXT.

Tên Sự miêu tả
varchar (n) Cho phép bạn khai báo độ dài thay đổi với một giới hạn
Char (n) Chiều dài cố định, có đệm trống
Bản văn Sử dụng có thể sử dụng kiểu dữ liệu này để khai báo một biến có độ dài không giới hạn

Kiểu dữ liệu số

PostgreSQL hỗ trợ hai loại số riêng biệt:

  • Số nguyên
  • Số dấu phẩy động
Tên Quy mô cửa hàng Phạm vi
lửa nhỏ 2 byte -32768 đến +32767
số nguyên 4 byte -2147483648 đến +2147483647
bigint 8 byte -9223372036854775808 đến 9223372036854775807
thập phân Biến đổi Nếu bạn đã khai báo nó là loại dữ liệu thập phân, phạm vi từ 131072 chữ số trước dấu thập phân đến 16383 chữ số sau dấu thập phân
số Biến đổi Nếu bạn khai báo nó dưới dạng số, bạn có thể bao gồm số lên tới 131072 chữ số trước dấu thập phân đến 16383 chữ số sau dấu thập phân
thực tế 4 byte 6 chữ số thập phân chính xác
gấp đôi 8 byte 15 chữ số thập phân chính xác

Kiểu dữ liệu nhị phân

Chuỗi nhị phân là một chuỗi các octet hoặc byte. Kiểu dữ liệu Binary Postgres được chia theo hai cách.

  • Chuỗi nhị phân cho phép lưu trữ tỷ lệ cược có giá trị bằng không
  • Các octet không in được

Các chuỗi ký tự không cho phép các octet bằng không và cũng không cho phép bất kỳ giá trị và chuỗi ký tự nào khác không hợp lệ theo quy tắc mã hóa bộ ký tự của cơ sở dữ liệu.

Tên Kích thước lưu trữ Sự miêu tả
Byte 1 đến 4 byte cộng với kích thước của chuỗi nhị phân Chuỗi nhị phân có độ dài thay đổi

Loại địa chỉ mạng

Nhiều ứng dụng lưu trữ thông tin mạng như địa chỉ IP của người dùng hoặc

cảm biến. PostgreSQL có ba kiểu gốc giúp bạn tối ưu hóa dữ liệu mạng.

Tên Kích thước Sự miêu tả
rượu táo 7 hoặc 19 byes Mạng IPV4 và IPv6
Inet 7 hoặc 19 byte Máy chủ và mạng IPV4 và IPV5
macaddr 6 byte Địa chỉ MAC

Sử dụng các loại địa chỉ mạng có những ưu điểm sau

  1. Tiết kiệm không gian lưu trữ
  2. Kiểm tra lỗi đầu vào
  3. Các chức năng như tìm kiếm dữ liệu bằng mạng con

Loại tìm kiếm văn bản

PostgreSQL cung cấp hai kiểu dữ liệu được thiết kế để hỗ trợ tìm kiếm toàn văn bản. Tìm kiếm toàn văn bản là tìm kiếm thông qua một bộ sưu tập các tài liệu ngôn ngữ tự nhiên để tìm kiếm những tài liệu phù hợp nhất với một truy vấn.

  • Tìm kiếm văn bản Tsvector Các kiểu biến PostgreSQL đại diện cho một tài liệu ở dạng được tối ưu hóa cho tìm kiếm văn bản
  • Loại truy vấn tìm kiếm văn bản lưu trữ các từ khóa cần được tìm kiếm

Kiểu dữ liệu ngày / giờ

Dấu thời gian PostgreSQL cung cấp độ chính xác micro giây thay vì độ chính xác thứ hai. Hơn nữa, bạn cũng có tùy chọn lưu trữ theo múi giờ hoặc không. PostgreSQL sẽ chuyển đổi dấu thời gian với múi giờ thành UTC trên đầu vào và lưu trữ nó.

Nhập ngày và giờ được chấp nhận ở nhiều định dạng khác nhau, bao gồm Postgres truyền thống, ISO 8601. Tương thích với SQL, v.v.

PostgreSQL hỗ trợ đặt hàng Ngày / Tháng / Năm. Các định dạng được hỗ trợ là DMY, MDY, YMD

Các loại dữ liệu tạm thời

Tên Kích thước Phạm vi Độ phân giải
Dấu thời gian không có múi giờ 8 byte 4713 trước Công nguyên đến 294276 sau Công nguyên 1microsecond / 14 chữ số
Dấu thời gian với múi giờ 8 byte 4713 trước Công nguyên đến 294276 sau Công nguyên 1microsecond / 14 chữ số
ngày 4 byte 4713 trước Công nguyên đến 294276 sau Công nguyên Một ngày
Thời gian không có múi giờ 8 byte 00:00:00 đến 24:00:00 1microsecond / 14 chữ số
Thời gian với múi giờ 12 byte 00:00:00 + 1459 đến 24: 00: 00-1459 1microsecond / 14 chữ số
Khoảng thời gian 12 byte -178000000 đến 178000000 năm 1microsecond / 14 chữ số

Ví dụ:

Đầu vào Sự miêu tả
2025-09-07 ISO 8601, ngày 7 tháng 9 với bất kỳ kiểu ngày nào (định dạng được khuyến nghị)
Ngày 7 tháng 9 năm 2025 Ngày 7 tháng 9 với bất kỳ kiểu hẹn hò nào
9/7/2025 Ngày 7 tháng 9 với MDY, ngày 9 tháng 7 với DMY
9/7/25 Ngày 7 tháng 9 năm 2025, với MDY
2025-7 / 9 Ngày 7 tháng 9 với bất kỳ kiểu hẹn hò nào
-7-2018 Ngày 7 tháng 9 với bất kỳ kiểu hẹn hò nào
7-9-25 Ngày 7 tháng 9 năm 2025, với YMD
20250907 ISO 8601,7 tháng 9 năm 20225 ở bất kỳ chế độ nào
2025.250 năm và ngày trong năm, trong trường hợp này là ngày 7 tháng 9 năm 2025
J25250 Ngày Julian

Thời gian / thời gian với đầu vào múi giờ

Đầu vào Sự miêu tả
11: 19: 38.507 11:19:38 11:19 111938 ISO 8601
11:19 sáng Giống như 11:19
11:19 chiều giống như 23:19
23: 19-3 23: 19-03: 00 231900-03 ISO 8601, giống như 11:19 PM EST
23:19 EST múi giờ được chỉ định là EST, giống như 11:19 PM EST

Loại Boolean

Kiểu dữ liệu Boolean có thể giữ

  • Thật
  • Sai
  • vô giá trị

các giá trị.

Bạn sử dụng từ khóa bool hoặc boolean để khai báo một cột có kiểu dữ liệu Boolean.

Khi bạn chèn các giá trị vào một cột boolean, Postgre sẽ chuyển đổi các giá trị như

  • Đúng
  • y
  • 1
  • t
  • thật

thành 1.

Trong khi các giá trị như

  • Không
  • N
  • 0
  • F
  • Sai

được chuyển đổi thành 0

Trong khi chọn dữ liệu, các giá trị lại được chuyển đổi lại thành có, đúng, y, v.v.

Các kiểu dữ liệu hình học

Các kiểu dữ liệu hình học đại diện cho các đối tượng không gian hai chiều. Chúng giúp thực hiện các hoạt động như xoay, chia tỷ lệ, dịch, v.v.

Tên Kích thước lưu trữ Đại diện Sự miêu tả
Điểm 16 byte Chỉ trên một mặt phẳng (x, y)
Hàng 32 byte Dòng vô hạn ((xl.yl). (x2.y2))
Lseg 32 byte Đoạn thẳng hữu hạn ((xl.yl). (x2.y2))
Cái hộp 32 byte Hộp hình chữ nhật ((xl.yl). (x2.y2))
Con đường 16n + 16n byte Đóng và mở đường dẫn ((xl.yl),…)
Đa giác 40 + 16n byte Đa giác [(xl.yl)….]
Vòng tròn 24 byte Vòng tròn <(xy) .r> (tâm điểm và bán kính)

Các loại được liệt kê

Kiểu dữ liệu PostgreSQL được liệt kê rất hữu ích để biểu diễn thông tin hiếm khi thay đổi như mã quốc gia hoặc id chi nhánh. Kiểu dữ liệu Enumerated được biểu diễn trong một bảng với các khóa ngoại để đảm bảo tính toàn vẹn của dữ liệu.

Thí dụ:

Màu tóc khá tĩnh trong cơ sở dữ liệu nhân khẩu học

CREATE TYPE hair_color AS ENUM('brown','black','red','grey','blond')

Loại phạm vi

Nhiều ứng dụng kinh doanh yêu cầu dữ liệu trong phạm vi. Thông thường, hai cột (ví dụ: ngày bắt đầu, ngày kết thúc) được xác định để xử lý các phạm vi. Điều này vừa không hiệu quả vừa khó duy trì.

Postgre đã xây dựng các loại phạm vi như sau

  • int4range - Hiển thị phạm vi số nguyên
  • int8range - Phạm vi hiển thị của bigint
  • numrange - Hiển thị phạm vi số
  • tstrange - Giúp bạn hiển thị dấu thời gian không có múi giờ
  • lạ - Cho phép bạn hiển thị dấu thời gian với múi giờ
  • phạm vi ngày - Phạm vi ngày

Loại UUID

Số nhận dạng duy nhất phổ biến (UUID) là một đại lượng 128 bit được tạo ra bởi một thuật toán. Rất ít khả năng cùng một số nhận dạng sẽ được tạo bởi một người khác trên thế giới bằng cách sử dụng cùng một thuật toán. Đó là lý do tại sao đối với các hệ thống phân tán, các mã định danh này là một lựa chọn lý tưởng vì nó cung cấp tính duy nhất trong một cơ sở dữ liệu duy nhất. UUID được viết dưới dạng một nhóm các chữ số thập lục phân viết thường, với các nhóm khác nhau được phân tách bằng dấu gạch ngang.

PostgreSQL có kiểu dữ liệu UUID gốc sử dụng 16 byte dung lượng lưu trữ… UUID là kiểu dữ liệu lý tưởng cho các khóa chính.

Thí dụ:

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre cũng chấp nhận các dạng đầu vào UUID thay thế như tất cả các chữ hoa, không có dấu gạch nối, dấu ngoặc nhọn, v.v.

Kiểu XML

PostgreSQL cho phép bạn lưu trữ dữ liệu XML trong một kiểu dữ liệu, nhưng nó chỉ là một phần mở rộng cho kiểu dữ liệu văn bản. Nhưng ưu điểm là nó kiểm tra xem XML đầu vào có được định dạng tốt hay không.

Thí dụ:

XMLPARSE (DOCUMENT 'Data Type')

Loại JSON

Để lưu trữ dữ liệu JSON, PostgreSQL cung cấp 2 kiểu dữ liệu

  1. JSON
  2. JSONB
json Jsonb
Một phần mở rộng đơn giản của kiểu dữ liệu văn bản với xác thực JSON Biểu diễn nhị phân của dữ liệu JSON
Chèn nhanh nhưng truy xuất dữ liệu tương đối chậm. Chèn chậm nhưng hãy chọn (truy xuất dữ liệu nhanh)
Lưu dữ liệu đã nhập chính xác theo cách nó bao gồm khoảng trắng. Hỗ trợ lập chỉ mục. Có thể tối ưu hóa khoảng trắng để truy xuất nhanh hơn.
Xử lý lại khi truy xuất dữ liệu Không cần xử lý lại khi truy xuất dữ liệu

Kiểu dữ liệu JSON được sử dụng rộng rãi nhất đã sử dụng chúng tôi jsonb trừ khi có một số nhu cầu chuyên biệt để sử dụng kiểu dữ liệu JSON.

Thí dụ:

CREATE TABLE employee (id integer NOT NULL,age integer NOT NULL,data jsonb);
INSERT INTO employee VALUES (1, 35, '{"name": "Tom Price", "tags": ["Motivated", "SelfLearner"], "onboareded": true}');

Loại giả

PostgreSQL có nhiều mục có mục đích đặc biệt được gọi là kiểu giả. Bạn không thể sử dụng kiểu giả làm kiểu cột PostgreSQL. Có được sử dụng để khai báo hoặc đối số của hàm hoặc kiểu trả về.

Mỗi kiểu giả có sẵn đều hữu ích trong các tình huống mà tài liệu về hành vi của một hàm không tương ứng với việc chỉ lấy hoặc trả về một giá trị của một kiểu dữ liệu SQL cụ thể.

Tên Sự miêu tả
Bất kì Hàm chấp nhận tất cả kiểu dữ liệu đầu vào.
Một mảng Hàm chấp nhận bất kỳ kiểu dữ liệu mảng nào.
Bất kỳ phần tử nào Hàm chấp nhận bất kỳ kiểu dữ liệu nào.
Bất kỳ enum Hàm chấp nhận bất kỳ kiểu dữ liệu enum nào.
Nonarray Hàm chấp nhận bất kỳ kiểu dữ liệu không phải là mảng nào.
Chuỗi C Hàm chấp nhận hoặc trả về chuỗi C kết thúc bằng null.
Nội bộ Hàm nội bộ chấp nhận hoặc trả về kiểu dữ liệu máy chủ-nội bộ.
Language_handler Nó được khai báo để trả về trình xử lý ngôn ngữ.
Ghi lại Tìm một hàm trả về loại hàng không xác định.
Kích hoạt Một hàm kích hoạt được sử dụng để trả về trình kích hoạt.

Điều quan trọng là người dùng đang sử dụng hàm này cần đảm bảo rằng hàm sẽ hoạt động an toàn khi một kiểu giả được sử dụng làm kiểu đối số.

Các phương pháp hay nhất sử dụng Loại dữ liệu

  • Sử dụng kiểu dữ liệu "văn bản" trừ khi bạn muốn giới hạn đầu vào
  • Không bao giờ sử dụng "char."
  • Số nguyên sử dụng "int." Chỉ sử dụng bigint khi bạn có những con số thực sự lớn
  • Sử dụng "số" hầu như luôn luôn
  • Sử dụng float trong PostgreSQL nếu bạn có nguồn dữ liệu IEEE 754

Tóm lược

  • PostgreSQL cung cấp một tập hợp các kiểu dữ liệu gốc phong phú cho người dùng
  • PostgreSQL hỗ trợ các kiểu dữ liệu ký tự để lưu trữ các giá trị văn bản
  • PostgreSQL hỗ trợ hai loại số riêng biệt: 1. Số nguyên, 2. Số dấu phẩy động
  • Chuỗi nhị phân là một chuỗi byte hoặc bộ tám
  • PostgreSQL có Kiểu địa chỉ mạng để giúp bạn tối ưu hóa việc lưu trữ dữ liệu mạng
  • Tìm kiếm văn bản Cấu trúc dữ liệu PostgreSQL được thiết kế để hỗ trợ tìm kiếm toàn văn bản
  • Ngày / giờ Các kiểu dữ liệu PSQL cho phép thông tin ngày và giờ ở các định dạng khác nhau
  • Các kiểu trường Boolean Postgres có thể chứa ba giá trị 1. Đúng 2. Sai 3. Không
  • Kiểu dữ liệu hình học PostgreSQL đại diện cho các đối tượng không gian hai chiều
  • Các kiểu dữ liệu được liệt kê trong PostgreSQL rất hữu ích để thể hiện thông tin hiếm khi thay đổi như mã quốc gia hoặc id chi nhánh
  • Số nhận dạng duy nhất phổ biến (UUID) là một đại lượng 128 bit được tạo ra bởi một thuật toán
  • PostgreSQL có nhiều mục mục đích đặc biệt được gọi là kiểu giả
  • Cách tốt nhất là sử dụng kiểu dữ liệu "văn bản" trừ khi bạn muốn giới hạn đầu vào