Удалить несколько таблиц в MySQL: 2 Способа

Опубликовано: 8 Января, 2023

Оператор DROP в системе управления реляционными базами данных (RDBMS) используется для удаления объекта базы данных, такого как таблица, индекс или представление. Его также можно использовать для удаления всей базы данных. Общий синтаксис команды DROP следующий:

Синтаксис:

DROP object object_name;

Example:

DROP DATABASE db;

В сценариях повседневной жизни и живых проектах мы обычно имеем дело с несколькими таблицами и несколькими объектами базы данных. Иногда нам может потребоваться удалить несколько объектов вместе. Команда DROP также позволяет одновременно выполнять несколько удалений. Давайте посмотрим, как удалить несколько объектов базы данных с помощью команды DROP:

Способ 1: Удаление нескольких таблиц с помощью DROP

Прежде чем мы выполним операцию по удалению нескольких таблиц, давайте создадим 2 таблицы в нашей базе данных:

Шаг 1: Создание базы данных.

Запрос:

CREATE DATABASE db;

Шаг 2: Установите текущую базу данных как db.

Запрос:

USE DATABASE db;

Шаг 3: Создайте таблицы в базе данных.

Запрос:

CREATE TABLE A(
  ID INT PRIMARY KEY,
  Name VARCHAR(20)
  );
  
  CREATE TABLE B(
  ID INT PRIMARY KEY,
  Name VARCHAR(20)
  );

Шаг 4: Удаление обеих таблиц с помощью команды DROP.

Запрос:

DROP TABLE IF EXISTS A, B;

Выход:

На изображении выше видно, что при выполнении команды таблицы A и B удаляются из базы данных.

Примечание. IF EXISTS используется для проверки наличия таблиц в базе данных. Мы можем просто использовать следующую команду, чтобы удалить таблицы:

DROP TABLE A, B;

Но это может привести к ошибке, если таблицы отсутствуют в базе данных. Поэтому мы используем предложение IF EXISTS.

Способ 2: Удаление нескольких таблиц с ограничением внешнего ключа

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

Шаг 1: Создание таблиц с внешним ключом

Запрос:

CREATE TABLE A(
  ID INT PRIMARY KEY,
  Name VARCHAR(20)
  );
  
  CREATE TABLE B(
  ID INT PRIMARY KEY FOREIGN KEY REFERENCES A(ID),
  Name VARCHAR(20)
  );

Попробуем удалить эти таблицы с помощью той же команды DROP, что и ранее:

Запрос:

DROP TABLE IF EXISTS A, B;

Выход:

Этот запрос приводит к ошибке, так как невозможно удалить таблицу, на которую ссылаются, до удаления таблицы, которая ссылается на другую таблицу с внешним ключом. Поэтому нам нужно изменить порядок таблиц в команде DROP на B, A. Таким образом, нам нужно сначала удалить таблицу B, а затем A.

Очень сложно определить порядок таблиц, предоставляемых команде DROP, когда количество таблиц увеличивается, а количество внешних ключей также увеличивается. Таким образом, мы используем команду вместе с командой DROP для удаления таблиц, не заботясь о порядке таблиц в команде.

Запрос:

SET foreign_key_checks = 0;
DROP TABLE IF EXISTS A, B;
SET foreign_key_checks = 1;

Оператор SET Foreign_key_checks = 0; делает проверку ограничения внешнего ключа False и при удалении таблиц в любом порядке не возникает ошибки.

Примечание. Этот оператор можно использовать только в MySQL. Другие базы данных могут иметь другие команды или синтаксис для одного и того же.