Типы данных: числа, текст, дата
Зачем это нужно
В Excel можно написать 890 и "890" в одну ячейку — и часто это не имеет значения.
В базе данных — имеет. Если колонка хранит числа, нельзя сравнивать её со строкой.
Тип данных определяет, что можно хранить в колонке и какие операции к ней применимы.
Основные типы данных
Числа
| Тип | Что хранит | Пример в products |
|---|---|---|
INTEGER | Целые числа | stock = 12 |
NUMERIC | Числа с дробной частью | price = 89990.00 |
-- Сравнение чисел — без кавычек
SELECT name FROM products WHERE price > 5000;
SELECT name FROM products WHERE stock = 0;
Текст
| Тип | Что хранит | Пример в products |
|---|---|---|
VARCHAR(N) | Строка не длиннее N символов | name, category |
TEXT | Строка любой длины | description |
-- Текст — в одинарных кавычках
SELECT name FROM products WHERE category = 'Книги';
Дата
| Тип | Что хранит | Пример |
|---|---|---|
DATE | Только дата | 2024-01-15 |
-- Дата — тоже в одинарных кавычках, формат YYYY-MM-DD
SELECT name FROM products WHERE created_at = '2024-01-15';
Логический тип (булев)
| Тип | Что хранит |
|---|---|
BOOLEAN | true / false |
Почему тип важен на практике
-- Правильно: число без кавычек
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' — разные типы! Кавычки делают значение текстом.
Прочитайте урок до конца — прогресс засчитается автоматически