В данной статье мы выбрали Todolist в качестве примера для изучения PostgreSQL по нескольким важным причинам. Todolist — это популярное приложение, использующее базу данных для управления задачами, и оно отлично подходит для демонстрации основ PostgreSQL. Мы углубимся в создание таблиц и схем, основы SQL и другие важные аспекты. В ходе этой статьи вы узнаете, как PostgreSQL упрощает хранение и управление данными. Готовы начать это практическое изучение? Давайте приступим и освоим основы операций с данными, таблицами и схемами.

Немного про PostgreSQL

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

Ее особенности включают в себя:

  1. Открытое ПО: PostgreSQL является open source и бесплатным для использования. Это значит, что вы можете использовать его в любых проектах без необходимости платить лицензионные сборы.
  2. Расширяемость: PostgreSQL поддерживает пользовательские функции и расширения, что позволяет создавать собственные типы данных и функции.
  3. Транзакции: СУБД обеспечивает высокую надежность и целостность данных с помощью транзакций, позволяя вам выполнять несколько операций как одну атомарную операцию.
  4. Поддержка JSON и JSONB: PostgreSQL поддерживает хранение и манипуляции данными в формате JSON, что делает его отличным выбором для современных веб-приложений.

Сравнение PostgreSQL с MySQL

PostgreSQL как мудрая библиотека.

Представьте себе PostgreSQL как мудрую библиотеку, где книги (данные) хранятся аккуратно и упорядочено. Она особенно хорошо умеет хранить и организовывать большие объемы данных, и вы можете создавать свои собственные инструкции для поиска и доступа к информации в этой библиотеке. PostgreSQL поддерживает множество специальных «полок» для разных видов данных, что делает его гибким и мощным инструментом для хранения и поиска информации.

MySQL как дружелюбный архивариус.

В то время как PostgreSQL — это библиотека, MySQL можно представить как дружелюбного архивариуса. Он тоже хранит данные, но более прост и легок в использовании, подобно тому, как архивариус может быстро найти нужную книгу. Он хорошо работает с малыми и средними объемами данных и предоставляет простые инструменты для поиска и доступа к ним. MySQL обычно выбирают, когда важна быстрая и надежная работа с данными.

Итак, разница в том, что PostgreSQL — это мощный и гибкий инструмент для хранения больших объемов данных и поддерживает сложные запросы, в то время как MySQL — это более простой и быстрый выбор для небольших проектов. Как выбрать зависит от того, какие задачи вам нужно решить и какой подход вам более удобен, будь то умный библиотекарь или дружелюбный архивариус.

Таблицы в PostgreSQL

В PostgreSQL, как и в большинстве реляционных баз данных, данные организованы в таблицах. Вы можете представить таблицу как своеобразную электронную таблицу или книгу, где каждая строка представляет собой запись, а каждая колонка — поле данных.

Допустим, у нас есть таблица tasks для хранения задач в нашем Todolist приложении:

idtitledescriptiondue_datecompleted
1Первая задачаОписание задачи2023-09-01true
2Вторая задачаДругое описание2023-09-05true
3Третья задачаЕще одно описание2023-09-10false
  • В колонке id хранятся уникальные идентификаторы задач.
  • Колонка title содержит заголовки задач.
  • Колонка description может содержать более подробное описание задачи.
  • Колонка due_date указывает на дату, когда задача должна быть завершена.

Тип данных completed в SQL обычно называется «BOOLEAN». Тип данных BOOLEAN используется для хранения логических значений, таких как «true» или «false», что идеально подходит для отображения статуса выполнения задачи в вашей таблице.

Схемы в PostgreSQL

Схемы — это способ организации и структурирования таблиц в PostgreSQL. Вы можете представить схему как папку, в которой можно размещать таблицы и другие объекты базы данных. Это помогает организовать и изолировать различные части вашей базы данных.

Для нашего Todolist приложения, мы можем создать схему todolist, чтобы группировать все связанные с ним таблицы и объекты базы данных:

todolist
├── tasks
│   └── id, title, description, due_date
├── categories
│   └── id, name
└── users
    └── id, username, email

Таким образом, у нас есть схема todolist, в которой содержатся таблицы tasks, categories и users. Это помогает поддерживать порядок и избегать конфликтов имён, особенно если у вас есть несколько приложений, использующих одну базу данных.

Важно знать, что схемы в PostgreSQL по умолчанию — это public schema. Если вы не указываете схему при создании таблицы, она будет создана в схеме public. Но при наличии нескольких схем вы можете явно указывать, в какой схеме создавать таблицы и другие объекты базы данных.

Базовые операции SQL (и PostgreSQL)

Давайте рассмотрим создание таблицы tasks в PostgreSQL более подробно. Создание таблицы — это первый шаг в организации данных в вашей базе данных. Вам нужно определить, какие типы данных будут использоваться для хранения информации о задачах в вашем Todolist приложении.

Создание таблицы tasks

Для создания таблицы tasks в PostgreSQL, используйте команду CREATE TABLE. Это будет выглядеть следующим образом:

CREATE TABLE tasks (
    id serial PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    description TEXT,
    due_date DATE,
    completed BOOLEAN
);

В этой команде мы указываем следующие важные элементы:

  • CREATE TABLE tasks: Здесь мы говорим PostgreSQL создать новую таблицу с именем tasks.
  • id serial PRIMARY KEY: Это создает столбец id, который будет автоматически генерировать уникальные числовые значения (serial) и устанавливать его как первичный ключ (PRIMARY KEY). Первичный ключ используется для уникальной идентификации каждой записи в таблице.
  • title VARCHAR(255) NOT NULL: Здесь мы создаем столбец title с типом данных VARCHAR, который может хранить строку длиной до 255 символов. NOT NULL указывает, что это поле не может быть пустым.
  • description TEXT: Столбец description имеет тип данных TEXT, который может хранить более длинные текстовые значения без явной ограниченной длины.
  • due_date DATE: Этот столбец будет хранить дату выполнения задачи, и для него выбран тип данных DATE.
  • completed BOOLEAN: столбец completed типа BOOLEAN, который будет хранить логические значения (true или false), указывающие на выполнение задачи.

Добавление задачи в таблицу

Для добавления задачи в таблицу tasks, используйте следующий SQL-запрос

INSERT INTO tasks (title, description, due_date, completed)
VALUES ('Новая задача', 'Описание новой задачи', '2023-09-15', false);

Этот запрос добавит новую задачу с указанным заголовком, описанием, датой выполнения и статусом выполнения (в данном случае, false) в таблицу tasks.

Чтение задач из таблицы

Для чтения задач из таблицы tasks, используйте запрос SELECT. Например, чтобы выбрать все задачи, выполните следующий запрос:

SELECT * FROM tasks;

Для чтения задач из таблицы tasks с определенным условием, вы можете использовать SQL-запрос с ключевым словом WHERE. Например, чтобы выбрать задачи с определенным статусом выполнения (completed), выполните следующий запрос:

SELECT * FROM tasks
WHERE completed = true;

В этом запросе:

  • SELECT * выбирает все столбцы из таблицы tasks.
  • FROM tasks указывает, из какой таблицы выбирать данные.
  • WHERE completed = true фильтрует только те строки, в которых столбец completed имеет значение true.

Вы можете изменять условие WHERE в запросе, чтобы выбирать задачи в соответствии с вашими требованиями, например, выбирать задачи, которые еще не выполнены (completed = false) или задачи с определенным сроком (due_date).

Обновление задачи

Для обновления задачи в таблице tasks, используйте запрос UPDATE. Например, чтобы изменить заголовок задачи с id равным 1, выполните следующий запрос:

UPDATE tasks
SET title = 'Измененный заголовок'
WHERE id = 1;

Этот запрос обновит заголовок задачи с указанным id.

Удаление задачи

Для удаления задачи из таблицы tasks, используйте запрос DELETE. Например, чтобы удалить задачу с id равным 2, выполните следующий запрос:

DELETE FROM tasks
WHERE id = 2;

Удаление таблицы tasks

Команда DROP TABLE удаляет существующую таблицу и все её данные. Эта команда следует использовать с осторожностью. Пример:

DROP TABLE tasks;

Эти команды являются основными для выполнения различных операций в базах данных с использованием SQL. Начните с изучения их и применения ваших навыков на простых примерах, чтобы лучше понять, как работать с данными в SQL.