SQLLab
Теория· 8 мин· 10 XP

Типы данных: числа, текст, дата

Зачем это нужно

В Excel можно написать 890 и "890" в одну ячейку — и часто это не имеет значения. В базе данных — имеет. Если колонка хранит числа, нельзя сравнивать её со строкой. Тип данных определяет, что можно хранить в колонке и какие операции к ней применимы.

Основные типы данных

Числа

ТипЧто хранитПример в products
INTEGERЦелые числаstock = 12
NUMERICЧисла с дробной частьюprice = 89990.00
sql
-- Сравнение чисел — без кавычек
SELECT name FROM products WHERE price > 5000;
SELECT name FROM products WHERE stock = 0;

Текст

ТипЧто хранитПример в products
VARCHAR(N)Строка не длиннее N символовname, category
TEXTСтрока любой длиныdescription
sql
-- Текст — в одинарных кавычках
SELECT name FROM products WHERE category = 'Книги';

Дата

ТипЧто хранитПример
DATEТолько дата2024-01-15
sql
-- Дата — тоже в одинарных кавычках, формат YYYY-MM-DD
SELECT name FROM products WHERE created_at = '2024-01-15';

Логический тип (булев)

ТипЧто хранит
BOOLEANtrue / false

Почему тип важен на практике

sql
-- Правильно: число без кавычек
WHERE price > 5000

-- Плохая практика: число в кавычках
WHERE price > '5000'

-- Ошибка: неправильный формат даты
WHERE created_at = '15.01.2024'  -- нужно YYYY-MM-DD

Частые ошибки

Кавычки вокруг числа — WHERE stock = '0' сработает, но лучше писать WHERE stock = 0. Для числовых колонок кавычки не нужны.

Неправильный формат даты — PostgreSQL понимает '2024-01-15', но не '15.01.2024'. Всегда используйте формат YYYY-MM-DD.

Регистр в тексте — 'Книги' и 'книги' — разные значения. SQL чувствителен к регистру при сравнении через =.

Запомни

Числа пишутся без кавычек. Текст и даты — в одинарных кавычках '...'.


Микро-практика

Сопоставьте значение и его тип данных:

ЗначениеТип
'Иван'?
2024-03-15?
1500?
true?
'1500'?

Варианты: число, текст, дата, булево

Ответы
ЗначениеТип
'Иван'текст
2024-03-15дата
1500число
trueбулево
'1500'текст

Обратите внимание: 1500 и '1500' — разные типы! Кавычки делают значение текстом.

Прочитайте урок до конца — прогресс засчитается автоматически