Привет! В прошлый раз мы разобрались с главным: любая таблица состоит из столбцов (что мы хотим знать) и строк (о ком мы это знаем). Это наш фундамент.
Сегодня мы добавим на этот фундамент еще один ключевой элемент — типы данных. А еще поговорим о том, что делать, когда данных нет. Этот урок поможет тебе понять, почему нельзя сложить два имени пользователя, но можно посчитать средний чек, и почему «неизвестно» — это тоже важная информация.
Что мы сегодня изучим:
- Основные типы данных: разберемся, как база данных отличает текст от чисел и дат.
- Понятие
NULL: узнаем, как SQL обозначает отсутствующую или неизвестную информацию.
Это последняя теоретическая остановка перед тем, как мы начнем писать код и работать с данными вживую!
1. Что это такое простыми словами
Типы данных — это как правила для каждого столбца в таблице, которые говорят: «Здесь можно хранить только текст», «а здесь — только целые числа», «а вот тут — дату и время».
Представь, что у тебя есть три контейнера: один для яблок, другой для воды, третий для песка. Ты же не будешь лить воду в контейнер для яблок? С данными то же самое. База данных должна четко понимать, с чем она работает, чтобы выполнять наши команды правильно.

Основные категории данных:
-
Строковые (Текст): Все, что можно написать словами. Имена пользователей, названия товаров, адреса, промокоды. В коде такие значения обычно пишутся в одинарных кавычках, например:
'Алексей'или'New-Year-Sale-2024'.- Примеры столбцов:
user_name,email,city,product_description.
- Примеры столбцов:
-
Числовые: Любые числа, с которыми можно проводить математические операции (складывать, находить среднее и т.д.). Важно различать:
- Целые числа (в SQL их часто называют
INTилиINTEGER): количество товаров в корзине, возраст пользователя, число визитов на сайт. - Дробные числа (в SQL —
DECIMAL,NUMERICилиFLOAT): цена товара, сумма заказа, рейтинг статьи. Это критически важно для всего, что связано с деньгами. - Примеры столбцов:
price,quantity,user_age.
- Целые числа (в SQL их часто называют
-
Дата и время: Специальный тип для хранения моментов времени. Это не просто текст, а особый формат, который позволяет вычислять разницу между датами, группировать события по месяцам или дням недели.
- Примеры столбцов:
registration_date,order_timestamp,last_login_at.
- Примеры столбцов:
2. Зачем это нужно именно мне?
Понимание типов данных напрямую влияет на то, какие выводы ты сможешь сделать из данных:
-
Как продуктовый дизайнер: Ты хочешь показать на экране профиля, как давно пользователь зарегистрировался. Если дата регистрации (
registration_date) хранится в правильном формате даты, ты можешь легко посчитать разницу: «На проекте 2 года и 3 месяца». Если бы это был просто текст, такая магия была бы невозможна. -
Как маркетолог: Ты анализируешь рекламную кампанию. Чтобы посчитать общую выручку (
revenue), нужно сложить значения из столбцаorder_total. Это возможно, только еслиorder_total— числовой тип. Если бы по ошибке там был текстовый тип, SQL не смог бы выполнить сложение.
Чтобы глубже разобраться в каждой категории, давай изучим отличную статью-справочник. Она подробно описывает самые популярные типы данных.
В этой статье очень четко и по делу описаны основные типы данных. Она послужит тебе хорошей шпаргалкой в будущем.
Прочитай разделы: 'Числовые типы данных', 'Строковые типы данных' и 'Дата и время'. Не нужно запоминать все названия (вроде TINYINT или BIGINT), главное — уловить разницу между целыми числами (INT), числами с точкой (DECIMAL) и для чего нужны разные типы текста (VARCHAR, TEXT) и дат (DATE, DATETIME).
3. А если данных нет? Знакомство с NULL
Что если пользователь при регистрации не указал свой город? Или оставил поле «номер телефона» пустым? Для таких ситуаций в SQL есть специальное значение — NULL.
NULL — это не 0 и не пустая строка.
0(ноль) — это конкретное число. Например,quantity = 0означает, что товара на складе нет.quantity = NULLозначает, что мы не знаем, сколько товара на складе.''(пустая строка) — это конкретное текстовое значение.city = ''может означать, что пользователь сознательно оставил поле пустым.city = NULLозначает, что информация о городе отсутствует или неприменима.
Понимание NULL очень важно. Например, при подсчете среднего возраста пользователей те, у кого возраст NULL, не будут учитываться в расчетах. Это помогает избежать искажения результатов.
Давай прочитаем короткий отрывок, который хорошо объясняет эту концепцию.
Типы данных SQL: какие бывают и как с ними работать
Теперь давай разберемся с важной концепцией — отсутствием данных. В этой статье хорошо объясняется суть NULL.
Прочитай раздел 'Значение NULL'. Постарайся понять ключевую идею: NULL — это не ноль и не пустая строка, а именно 'неизвестное' или 'отсутствующее' значение. Обрати внимание на пример с номером телефона.
4. Практическое задание
Давай закрепим материал. Представь, что ты работаешь с базой данных интернет-магазина. Определи наиболее подходящий тип данных для каждого из полей ниже и подумай, может ли в этом поле быть значение NULL.
- Название товара (например, "Беспроводные наушники Sony WH-1000XM5")
- Цена товара (например, 34990.90)
- Количество на складе (например, 150)
- Артикул товара (например, "SN-WH1000XM5-BLK")
- Дата добавления товара на сайт
- Промокод, который применил покупатель к заказу
- Возраст покупателя
- Общая сумма заказа
💡 Мои варианты для самопроверки
- Название товара: Строковый (
VARCHARилиTEXT).NULLбыть не может, у товара должно быть название. - Цена товара: Числовой, с плавающей точкой (
DECIMALилиNUMERIC).NULLбыть не может, у товара должна быть цена (даже если она 0). - Количество на складе: Числовой, целый (
INT).NULLбыть не должно, лучше0, если товара нет. - Артикул товара: Строковый (
VARCHAR). Хотя он может состоять из цифр, с ним не делают математических операций.NULLбыть не может. - Дата добавления: Дата и время (
DATETIMEилиTIMESTAMP).NULLбыть не может. - Промокод: Строковый (
VARCHAR). Вполне может бытьNULL, если покупатель не использовал промокод. - Возраст покупателя: Числовой, целый (
INT). Может бытьNULL, так как пользователь не обязан указывать свой возраст. - Общая сумма заказа: Числовой, с плавающей точкой (
DECIMAL).NULLбыть не должно.
5. Чек-лист: что я должен уметь после этого урока
- Я могу назвать три основных типа данных (текст, числа, даты) и привести по паре примеров для каждого.
- Я понимаю, почему цена товара — это числовой тип, а номер телефона — строковый.
- Я могу объяснить разницу между
NULL, нулём (0) и пустой строкой (''). - Я понимаю, в каких случаях в данных может встретиться
NULL.
Отлично поработали! Мы завершили базовый теоретический блок. Теперь у тебя есть все необходимые знания, чтобы начать работать с реальной базой данных.
В следующем уроке мы сделаем последний подготовительный шаг: откроем и настроим онлайн-редактор SQL, чтобы у тебя было готовое рабочее место для практики. После этого — только код и анализ данных