SQL - DELETE Запрос: Доброжелательное руководство для начинающих

Здравствуйте,野心勃勃 SQL энтузиасты! Сегодня мы окунемся в мир SQL DELETE запросов. Не волнуйтесь, если вы новички в программировании - я проведу вас через это шаг за шагом, как я делал это для countless студентов за годы преподавания. Так что возьмите杯 кофе (или чай, если это ваше дело), и давайте начнем!

SQL - Delete Query

SQL DELETE Statement

Представьте, что вы организуете свою цифровую фотоальбом. Иногда вы хотите удалить определенные фотографии, верно? Именно это делает оператор DELETE в SQL - он помогает нам удалить нежелательные данные из наших таблиц баз данных.

Вот базовая синтаксис оператора DELETE:

DELETE FROM table_name
WHERE condition;

Давайте разберем это:

  • DELETE FROM: Это говорит SQL, что мы хотим удалить что-то из определенной таблицы.
  • table_name: Замените это названием вашей таблицы.
  • WHERE: Это необязательно, но важно. Он specifies, какие строки删除.
  • condition: Это место, где вы устанавливаете критерии для удаления.

Пример 1: Удаление одной строки

Давайте представим, что у нас есть таблица под названием students, и мы хотим удалить студента по имени John Doe:

DELETE FROM students
WHERE name = 'John Doe';

Этот запрос удалит строку, где имя exactly 'John Doe'. Будьте осторожны, однако! Если есть несколько John Does, они все будут удалены.

Пример 2: Удаление на основе числового условия

Теперь давайте удалим всех студентов, которые старше 25 лет:

DELETE FROM students
WHERE age > 25;

Это удалит все строки, где возраст больше 25. Это как если бы вы сказали базе данных: "Эй, удали всех, кто старше enough чтобы арендовать машину без额外 платы!"

Удаление нескольких строк

Иногда вы можете хотите удалить несколько строк, которые соответствуют определенным критериям. Давайте рассмотрим несколько примеров.

Пример 3: Удаление строк с несколькими условиями

Предположим, что мы хотим удалить всех студентов, которые старше 30 и имеют GPA ниже 2.5:

DELETE FROM students
WHERE age > 30 AND gpa < 2.5;

Этот запрос combines два условия с использованием AND. Это как если бы вы сказали: "Удалите студентов, которые старше 30 и akademicheski struggling."

Пример 4: Удаление строк на основе списка значений

Что, если мы хотим удалить студентов из определенного списка городов? Мы можем использовать оператор IN:

DELETE FROM students
WHERE city IN ('New York', 'Los Angeles', 'Chicago');

Этот запрос удалит всех студентов, которые из New York, Los Angeles или Chicago. Это как если бы у вас был список VIP, но для удаления!

Удаление всех записей из таблицы

Иногда вы можете хотите очистить всю таблицу. Это как если бы вы решили опустошить свой гардероб, чтобы начать сначала. Вот как это сделать:

DELETE FROM table_name;

Например, чтобы удалить все записи из нашей таблицы students:

DELETE FROM students;

⚠️ Предупреждение: Будьте extremely careful с этим командой! Это как использовать огнемет для уборки комнаты - эффективно, но потенциально катастрофически, если используется неправильно.

Удаление записей в нескольких таблицах

Теперь давайте поднимем уровень. Иногда вам нужно удалить записи из нескольких связанных таблиц одновременно. Это где вещи становятся немного сложнее, но не волнуйтесь - я проведу вас через это.

Пример 5: Удаление из нескольких таблиц с использованием JOIN

Предположим, у нас есть две таблицы: students и enrollments. Мы хотим удалить все регистрации и записи студентов, которые не оплатили свои сборы:

DELETE students, enrollments
FROM students
JOIN enrollments ON students.id = enrollments.student_id
WHERE students.fees_paid = 0;

Этот запрос делает несколько вещей:

  1. Он объединяет таблицы students и enrollments.
  2. Он ищет студентов, которые не оплатили свои сборы.
  3. Он удаляет соответствующие записи из обеих таблиц.

Это как если бы вы очищали свой список контактов и одновременно удаляли этих контактов из всех групповых чатов!

Пример 6: Использование подзапросов для удаления

Иногда вам может нужно удалить на основе данных в другой таблице, не объединяя их. Вот пример:

DELETE FROM enrollments
WHERE student_id IN (
SELECT id
FROM students
WHERE graduation_year < 2020
);

Этот запрос удаляет все регистрации для студентов, которые graduated до 2020 года. Это как если бы вы сказали: "Удалите все invitations к событиям для людей, которые уже уехали."

Резюме методов DELETE

Вот quick reference таблица методов DELETE, которые мы рассмотрели:

Метод Описание Пример
Basic DELETE Удаляет строки на основе условия DELETE FROM students WHERE name = 'John Doe';
DELETE с несколькими условиями Удаляет строки, соответствующие нескольким критериям DELETE FROM students WHERE age > 30 AND gpa < 2.5;
DELETE с использованием предложения IN Удаляет строки на основе списка значений DELETE FROM students WHERE city IN ('New York', 'Los Angeles', 'Chicago');
DELETE всех записей Удаляет все строки из таблицы DELETE FROM students;
DELETE с использованием JOIN Удаляет связанные записи из нескольких таблиц DELETE students, enrollments FROM students JOIN enrollments ON students.id = enrollments.student_id WHERE students.fees_paid = 0;
DELETE с использованием подзапроса Удаляет на основе результатов другого запроса DELETE FROM enrollments WHERE student_id IN (SELECT id FROM students WHERE graduation_year < 2020);

И вот и все! Вы только что узнали о внутренностях SQL DELETE запросов. Помните, с великой силой приходит великая ответственность. Всегда дважды проверяйте свои WHERE предложения перед выполнением запроса DELETE, и если возможно, начните с SELECT, чтобы предпросмотреть, что вы собираетесь удалить.

Практикуйте эти запросы, экспериментируйте с ними, и вскоре вы будете удалять данные как профессионал! Просто помните - в реальном мире часто лучше archieve данные, чем удалять их навсегда. Счастливо работайте с базами данных и пусть ваши базы данных всегда остаются чистыми и организованными!

Credits: Image by storyset