JavaRush /Курсы /SQL SELF /Введение в типы данных в PostgreSQL

Введение в типы данных в PostgreSQL

SQL SELF
15 уровень , 0 лекция
Открыта

Это та лекция, с которой вполне можно было начать наш курс. Но тогда ваши первые задачи и лекции были бы очень скучными. Если бы вы решили поработать один день строителем, с чего бы вы хотели начать: изучить типы и формы кирпичей или порулить башенным краном 30 минут? То-то и оно :)

Ученик — это не сосуд, который нужно наполнить, это факел, который нужно зажечь (и не сжечь при этом)! Я стараюсь не рассказать вам все что знаю, а сделать сделать это так, чтобы вам было интересно. И именно сейчас самое время начать знакомиться с типами данных.

Тип данных в PostgreSQL — это указание того, какого рода информация будет храниться в определённом столбце таблицы. Например, числа, текст или даты. Это чуть похоже на то, как вы выбираете коробку для хранения: маленькая для мелочей, большая для ботинок, прозрачная для ниток, чтобы сразу понимать, что где лежит.

Пример:

  • Если вы хотите хранить возраст человека, вам подойдёт числовой тип данных.
  • Если нужно сохранить имя, вам понадобятся текстовые типы данных.
  • А чтобы отметить дату регистрации, логично использовать тип данных даты.

Зачем нужны типы данных?

Типы данных помогают:

  1. Ограничивать вводимую информацию. Например, вы не сможете вставить текст, где ожидается число.
  2. Структурировать данные. Четко понимая, что в каком столбце находится, легче строить запросы и анализировать информацию.
  3. Экономить ресурсы. Используя правильные типы, вы уменьшаете потребление памяти.
  4. Сохранять точность. Например, финансовые расчёты требуют чисел с фиксированной запятой.

Пример для вдохновения

Представьте себе таблицу для хранения информации о студентах:

id name age enrollment_date
1 Otto Mars 22 2023-01-15
2 Anna Song 19 2023-02-10

Здесь id — это уникальный идентификатор (число), name — текст, age — число возраста, а enrollment_date — дата зачисления студента. Все эти данные имеют разные типы данных, потому что они описывают разные аспекты объекта.

Классификация типов данных в PostgreSQL

PostgreSQL обладает невероятной гибкостью в работе с типами данных. Ниже приведена краткая классификация.

Основные категории типов данных:

  1. Числовые типы

    • Для хранения целых чисел (например, количество, идентификатор) и чисел с дробной частью (например, деньги).
    • Примеры: INTEGER, NUMERIC, FLOAT.
  2. Текстовые типы

    • Для хранения текстов и строк (например, имена, адреса).
    • Примеры: CHAR, VARCHAR, TEXT.
  3. Логический тип

    • Для хранения логических значений TRUE (истина) или FALSE (ложь).
    • Пример: BOOLEAN.
  4. Типы для работы с датами и временем

    • Для хранения дат, времени или их комбинации.
    • Примеры: DATE, TIME, TIMESTAMP.
  5. Специальные типы

    • Уникальные идентификаторы, JSON-объекты, массивы и многое другое.
    • Примеры: UUID, JSONB, ARRAY.

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

PostgreSQL поддерживает огромное разнообразие встроенных типов и позволяет создавать кастомные (пользовательские) типы данных. Это делает работу с этой СУБД особенно мощной для сложных систем, где нужны специфические требования к данным.

Интересно, что в PostgreSQL вы можете даже хранить географические данные или выполнять запросы вроде "Найди кафе в радиусе 500 метров от меня". Для таких задач используются специальные типы данных.

Что даёт явное указание типов данных?

Иногда кажется, что было бы удобно сделать все колонки в таблице текстовыми — ведь текст может хранить всё. Но это плохая практика! Указание подходящих типов данных позволяет:

Упрощать запросы. Если PostgreSQL знает, что в колонке только числа, он быстрее выполняет подсчёты, например SUM().

Избегать ошибок. Представьте, что случайно сохранили "тридцать два" вместо 32 в столбце, где хранятся возраста. Ловить такие ошибки будет крайне сложно.

2
Задача
SQL SELF, 15 уровень, 0 лекция
Недоступна
Подзапрос в `WHERE` с исключением записей
Подзапрос в `WHERE` с исключением записей
2
Задача
SQL SELF, 15 уровень, 0 лекция
Недоступна
Подзапрос в `FROM` с арифметическим выражением
Подзапрос в `FROM` с арифметическим выражением
Комментарии (8)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Jlamma Уровень 16
27 сентября 2025
а может кто-то объяснить, зачем во 2 задаче вообще использовать подзапрос, если весь результат в нем же? я туплю или логика вышла с курса? понимаю что задача требует, но можно было посидеть и подумать над задачами, чтобы они показали реальную область применения. а так выглядит от балды "мы обещали 400+ задач, они есть, чего вы еще хотите?"
Slevin Уровень 11
8 сентября 2025
Я стараюсь не рассказать вам все что знаю, а сделать сделать это так, чтобы вам было интересно. Сделай сделай…
Ra Уровень 35 Student
28 июля 2025
Сайты чтобы развлечься и закрепить предыдущие разделы https://sqlbolt.com/ https://www.sql-tutorial.ru https://sql-academy.org/ru/guide/
Dmitry Ivanchenko Уровень 15
21 января 2026
sql-academy выглядит намного лучше и компактнее этого водяного курса от JR
Ra Уровень 35 Student
22 января 2026
Согласен
Иван Фетисов Уровень 4
12 июля 2025
select round(discounted_price,2), product_name from ( select ROUND(price - (price * COALESCE(discount_percent, 0) / 100),2) as discounted_price, product_name from products ) as discounted_price Принял только после двойного округления, не понимаю во from же уже было округление
Slevin Уровень 11
8 сентября 2025
Тут нечего понимать - просто валидатор тупит.
Сергій Бабич Уровень 33
19 декабря 2025
похоже, что уже принимает с одним