Что такое CRUD?

Ответ

CRUD — это акроним, описывающий четыре фундаментальные операции для работы с персистентными (сохраняемыми) данными:

  • Create (Создание)
  • Read (Чтение)
  • Update (Обновление)
  • Delete (Удаление)

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

Связь с REST API и SQL: Часто операции CRUD напрямую соотносятся с HTTP-методами в RESTful API и командами SQL:

CRUD HTTP-метод SQL-команда
Create POST INSERT
Read GET SELECT
Update PUT / PATCH UPDATE
Delete DELETE DELETE

Пример реализации CRUD для сущности "Пользователь" с использованием SQL и REST эндпоинтов:

-- Create
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');

-- Read
SELECT * FROM users WHERE id = 1;
SELECT * FROM users;

-- Update
UPDATE users SET name = 'Alicia' WHERE id = 1;

-- Delete
DELETE FROM users WHERE id = 1;
// Соответствующие REST эндпоинты
POST   /api/users     // Создать пользователя
GET    /api/users/1   // Получить пользователя с id=1
GET    /api/users     // Получить всех пользователей
PUT    /api/users/1   // Полностью обновить пользователя
PATCH  /api/users/1   // Частично обновить пользователя
DELETE /api/users/1   // Удалить пользователя

В современных фреймворках (Laravel, Django, Spring) CRUD-операции часто автоматизируются через ORM (Object-Relational Mapping) или готовые генераторы кода (scaffolding).

Ответ 18+ 🔞

Давай разберём эту тему, как будто объясняю за кружкой пива после работы. Сидишь, значит, пытаешься понять, что за хрень такая — CRUD. А звучит-то как ругательство, правда? Типа «ну и CRUD же ты написал!». Но на самом деле всё просто, ёпта.

Представь себе обычную тетрадку. Ну, или блокнот в телефоне, куда ты записываешь, кому и сколько должен. Вот все твои действия с этой тетрадкой — это и есть CRUD. Всё, что ты можешь сделать с данными — либо записать, либо прочитать, либо исправить запись, либо вычеркнуть её нахуй. Больше вариантов нет. Вот и весь принцип. Овердохуища сложных систем в интернете — соцсети, банки, госуслуги — в своей основе просто жуют эту простую четвёрку операций.

А теперь связь с тем, что ты реально видишь в коде. Смотри, как это выглядит в мире баз данных и API.

Create (Создать). Ты заполняешь форму регистрации где-нибудь и жмёшь «Отправить». Что происходит? Браузер тыкает в сервер методом POST (типа «эй, прими данные!»), а сервер на своей стороне выполняет SQL-команду INSERT, чтобы воткнуть новую запись о тебе в таблицу users. Всё, ты в системе.

Read (Прочитать). Самый частый сценарий. Открыл страничку профиля — браузер отправил GET-запрос, а сервер в ответ выцепил тебя из базы через SELECT * FROM users WHERE id = твой_айди. И показал тебе, красавчика.

Update (Обновить). Решил сменить аватарку или исправить опечатку в имени. Жмёшь «Сохранить» — летит PUT или PATCH запрос, а в недрах базы выполняется UPDATE users SET avatar = 'new_pic.jpg' WHERE id = твой_айди. Данные поменялись.

Delete (Удалить). Наконец-то решил удалить свой аккаунт с той дурацкой соцсети. Жмёшь красную кнопку — браузер шлёт DELETE, а сервер без лишних сантиментов делает DELETE FROM users WHERE id = твой_айди. И след простыл.

Вот табличка, чтобы вообще ни хуя себе не оставалось вопросов:

Действие HTTP-метод SQL-команда По-русски
Create POST INSERT Запиши нового юзера
Read GET SELECT Найди и покажи юзера
Update PUT / PATCH UPDATE Поправь данные юзера
Delete DELETE DELETE Уёби данные юзера

А в коде это выглядит примерно так. Смотри, не пугайся:

-- C: Вписываем новую Алёну
INSERT INTO users (name, email) VALUES ('Alena', 'alena@example.com');

-- R: Ищем Алёну по айдишнику
SELECT * FROM users WHERE id = 1;

-- U: Алёна стала Алисой
UPDATE users SET name = 'Alice' WHERE id = 1;

-- D: Алёна/Алиса нас задрала, удаляем
DELETE FROM users WHERE id = 1;

И для полного счастья, как бы это выглядело в роутах какого-нибудь API:

// Вот тебе все возможные действия с юзером в одном месте
POST   /api/users     // Создать (C)
GET    /api/users/1   // Прочитать одного (R)
GET    /api/users     // Прочитать всех (R)
PUT    /api/users/1   // Обновить целиком (U)
PATCH  /api/users/1   // Обновить кусочек (U)
DELETE /api/users/1   // Удалить нахер (D)

Красота, да? Современные фреймворки это дело вообще ебать колотить как упростили. В том же Laravel или Django ты накатываешь какую-нибудь команду в консоли, и тебе автоматом генерируются все эти роуты, формы и методы контроллера. Остаётся только бизнес-логику дописать. Получается такая манда с ушами, но очень удобная.

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