Ответ
Типы данных в SQL определяют характер информации, которая может храниться в столбце таблицы. Их можно разделить на несколько категорий.
1. Числовые типы (Numeric)
| Тип | Описание | Пример |
|---|---|---|
INT / INTEGER |
Целое число стандартного размера. | age INT |
SMALLINT, BIGINT |
Меньший/больший диапазон целых чисел. | id BIGINT |
DECIMAL(p, s) / NUMERIC(p, s) |
Точные числа с фиксированной точностью. p — общее число цифр, s — цифр после запятой. Идеально для финансовых расчетов. |
price DECIMAL(10, 2) (например, 12345678.99) |
FLOAT / REAL / DOUBLE |
Приближенные числа с плавающей точкой. Подходят для научных данных, но могут накапливать ошибки округления. | temperature FLOAT |
2. Строковые типы (Character/String)
| Тип | Описание | Пример использования |
|---|---|---|
CHAR(n) |
Строка фиксированной длины n. Если строка короче, дополняется пробелами. Быстрее для поиска, если длина постоянна. |
country_code CHAR(2) ('US', 'RU') |
VARCHAR(n) |
Строка переменной длины до n символов. Занимает место только по необходимости. Самый частый выбор для текста. |
username VARCHAR(50) |
TEXT / CLOB |
Для хранения больших объемов текста (статьи, описания). Ограничения зависят от СУБД. | article_body TEXT |
3. Типы даты и времени (Date/Time)
| Тип | Описание | Пример значения |
|---|---|---|
DATE |
Только дата (год, месяц, день). | '2023-11-30' |
TIME |
Только время (часы, минуты, секунды). | '14:30:00' |
DATETIME / TIMESTAMP |
Дата и время вместе. TIMESTAMP часто автоматически обновляется и учитывает временные зоны. |
'2023-11-30 14:30:00' |
4. Логический тип (Boolean)
BOOLEAN/BOOL: ХранитTRUE,FALSEилиNULL. Реализован какTINYINT(1)в MySQL, как отдельный тип в PostgreSQL.
5. Бинарные типы (Binary)
BLOB(Binary Large Object): Для хранения бинарных данных (изображения, PDF-файлы). Лучше хранить ссылки на файлы в файловой системе или объектном хранилище.BINARY,VARBINARY: Для хранения байтовых строк фиксированной/переменной длины.
6. Специальные тисы
ENUM: Список допустимых строковых значений. Удобно, но менее гибко, чем отдельная таблица-справочник.JSON/XML: Для хранения структурированных данных в соответствующем формате (поддерживается в современных СУБД).
Пример создания таблицы с выбором типов:
CREATE TABLE products (
-- Числовые
id BIGINT PRIMARY KEY AUTO_INCREMENT, -- Большой диапазон для ID
price DECIMAL(10, 2) NOT NULL, -- Точная цена с двумя знаками после запятой
weight_kg FLOAT, -- Приближенный вес
-- Строковые
sku CHAR(10) UNIQUE NOT NULL, -- Фиксированный код товара
name VARCHAR(255) NOT NULL, -- Название переменной длины
description TEXT, -- Длинное описание
-- Дата/время и логические
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Автоматическая дата создания
is_active BOOLEAN DEFAULT TRUE -- Флаг активности
);
Важно: Конкретные имена типов и их детали (например, максимальная длина VARCHAR) могут отличаться между СУБД (MySQL, PostgreSQL, SQLite).