Записки и мысли: Типы данных в PostgreSQL
PostgreSQL — это объектно-реляционная система управления базами данных (СУБД), которая поддерживает широкий спектр типов данных. В этой статье мы рассмотрим различные типы данных, поддерживаемые PostgreSQL, и приведём примеры их использования.
Числовые типы данных¶
PostgreSQL поддерживает несколько числовых типов данных, включая целые числа, числа с плавающей точкой и числа с фиксированной точкой. Вот некоторые из них:
-- Целое число без знака
CREATE TABLE integers (
id SERIAL PRIMARY KEY,
value INTEGER NOT NULL
);
-- Целое число со знаком
CREATE TABLE signed_integers (
id SERIAL PRIMARY KEY,
value SMALLINT NOT NULL
);
-- Число с плавающей точкой
CREATE TABLE floats (
id SERIAL PRIMARY KEY,
value FLOAT NOT NULL
);
-- Число с фиксированной точкой
CREATE TABLE fixed_point (
id SERIAL PRIMARY KEY,
value DECIMAL(10,2) NOT NULL
);
Символьные типы данных¶
PostgreSQL также поддерживает символьные типы данных для хранения строк текста. Вот некоторые из них:
-- Строка фиксированной длины
CREATE TABLE fixed_length_strings (
id SERIAL PRIMARY KEY,
value CHAR(10) NOT NULL
);
-- Строка переменной длины
CREATE TABLE variable_length_strings (
id SERIAL PRIMARY KEY,
value VARCHAR(100) NOT NULL
);
-- Пустая строка
CREATE TABLE empty_strings (
id SERIAL PRIMARY KEY,
value TEXT NOT NULL
);
-- Символ
CREATE TABLE characters (
id SERIAL PRIMARY KEY,
value CHARACTER(1) NOT NULL
);
-- Биннарный объект
CREATE TABLE binary_objects (
id SERIAL PRIMARY KEY,
value BYTEA NOT NULL
);
-- Уникод
CREATE TABLE unicode_strings (
id SERIAL PRIMARY KEY,
value UNICODE NOT NULL
);
Дата и время¶
PostgreSQL предоставляет несколько типов данных для работы с датами и временем:
-- Дата
CREATE TABLE dates (
id SERIAL PRIMARY KEY,
value DATE NOT NULL
);
-- Время
CREATE TABLE times (
id SERIAL PRIMARY KEY,
value TIME NOT NULL
);
-- Дата и время
CREATE TABLE datetimes (
id SERIAL PRIMARY KEY,
value TIMESTAMP NOT NULL
);
-- Интервал времени
CREATE TABLE time_intervals (
id SERIAL PRIMARY KEY,
value INTERVAL NOT NULL
);
-- Позиционное время
CREATE TABLE timestamps_with_timezone (
id SERIAL PRIMARY KEY,
value TIME WITH TIME ZONE NOT NULL
);
-- Таймстемпы с поддержкой микросекунд
CREATE TABLE timestamps_with_microseconds (
id SERIAL PRIMARY KEY,
value TIMESTAMP WITH TIME ZONE NOT NULL
);
Битовые типы данных¶
Помимо стандартных числовых и символьных типов данных, PostgreSQL также поддерживает битовые типы данных:
-- Битовый вектор
CREATE TABLE bit_vectors (
id SERIAL PRIMARY KEY,
value BIT VECTOR NOT NULL
);
-- Битовая строка
CREATE TABLE bit_strings (
id SERIAL PRIMARY KEY,
value BIT STRING NOT NULL
);
Геометрические типы данных¶
PostgreSQL также поддерживает геометрические типы данных для работы с пространственными данными:
-- Точка
CREATE TABLE points (
id SERIAL PRIMARY KEY,
value POINT NOT NULL
);
-- Линия
CREATE TABLE lines (
id SERIAL PRIMARY KEY,
value LINE NOT NULL
);
-- Полигон
CREATE TABLE polygons (
id SERIAL PRIMARY KEY,
value POLYGON NOT NULL
);
Типы данных JSON¶
PostgreSQL также поддерживает типы данных JSON для работы с структурированными данными:
-- JSON документ
CREATE TABLE json_documents (
id SERIAL PRIMARY KEY,
value JSON NOT NULL
);
-- JSON массив
CREATE TABLE json_arrays (
id SERIAL PRIMARY KEY,
value JSON ARRAY NOT NULL
);
Другие типы данных¶
Помимо вышеперечисленных типов данных, PostgreSQL также поддерживает множество других типов данных, таких как массивы, UUID, деньги, идентификаторы и так далее.