Как из базы удалить все таблицы sql
Перейти к содержимому

Как из базы удалить все таблицы sql

  • автор:

3 способа удалениях всех таблицы в базе данных MySQL, MariaDB

Часто возникает вопрос, как удалить все таблицы в базе данных MySQL, MariaDB. Ниже рассмотрим несколько вариантов.

В общем случае удалить таблицы из базы данных можно командой в консоли mysql:

mysql> USE databasename; mysql> DROP table00 table01, table02;

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

1 способ

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

mysql -u root -p SHOW DATABASES; DROP DATABASE [IF EXISTS] database_name;

2 способ

В SQL запросе ниже замените testdb на имя базы данных, которую вы хотите удалить. Будет сгенерирован пакет операторов SQL, вам нужно снова запустить набор результатов, которые удалят все таблицы без удаления базы данных.

SELECT concat('DROP TABLE IF EXISTS ', TABLE_NAME, ';') FROM information_schema.tables WHERE table_schema = 'testdb';

В консоли вы получите такой набор команд:

+----------------------------------------------------+ | concat('DROP TABLE IF EXISTS ', TABLE_NAME, ';') | +----------------------------------------------------+ | DROP TABLE IF EXISTS cm_options; | | DROP TABLE IF EXISTS cm_usermeta; | | DROP TABLE IF EXISTS cm_users; | | DROP TABLE IF EXISTS cm_term_taxonomy; | | DROP TABLE IF EXISTS cm_termmeta; | | DROP TABLE IF EXISTS cm_commentmeta; | +----------------------------------------------------+

3 способ

Выше 2 способа позволяли удалять таблицы из консоли mysql, но если у вас установлен phpmyadmin, тогда проще удалить через него.

Обзор игрового хостинга Realms Hosting: Minecraft, RUST, Counter-Strike.

10 Самых Популярных Статей

  1. 7 способов сравнения файлов по содержимому в Windows или Linux
  2. Что такое страны tier 1,2,3 и как правильно выбрать ГЕО для рекламной кампании
  3. Настройка, использование GitLab CI/CD
  4. Китайский VPN Shadowsocks простая установка и настройка
  5. Настройка и использование сервера OpenVPN в Linux
  6. PostgreSQL: создать БД, пользователя, таблицу, установить права
  7. top, htop, atop определение загрузки ОС (Load average, LA)
  8. Использование rsync в примерах
  9. my.cnf примеры конфигурации MySQL, MariaDB
  10. dig проверка DNS сервера

10 Самых Популярных Обзоров

  1. ТОП 4 лучших антидетект браузеров в 2024 (Бесплатные & Платные)
  2. Обзор и отзывы о Namecheap в 2024 году
  3. ТОП 4 Лучших Игровых Хостингов в 2024
  4. Обзор браузера Dolphin
  5. ТОП 3 Проверенных VPN, Прокси, Хостинг VPS Турция в 2024
  6. Что такое Оффшорный хостинг, абузоустойчивый хостинг, DMCA игнорируется | ТОП 4 провайдеров в 2024
  7. Обзор и отзывы AstroProxy в 2024 году
  8. Обзор и отзывы о PQ Hosting в 2024 году
  9. Проверенные VPS / VDS хостинг провайдеры
  10. Обзор и отзывы о AÉZA (Аеза) в 2024 году: преимущества и недостатки

SQL-Ex blog

Удалить все таблицы в SQL Server и сгенерировать список объектов на удаление

Добавил Sergey Moiseenko on Среда, 8 февраля. 2023

Проблема

Я создал 5 таблиц, 15 представлений и четыре хранимых процедуры в тестовой среде Microsoft SQL Server. Когда я завершил тестирование, то перенес все в рабочую среду. Теперь мне нужно удалить все объекты тестового SQL Server для подготовки следующего проекта.

Я знаю, что могу создать несколько скриптов SQL Server (DROP TABLE, DROP VIEW и DROP PROC), но необходимо ли делать это для каждого из 24 объектов. Как мне удалить все эти объекты более эффективно?

Решение

В этом руководстве мы обсудим простой вариант для удаления всех 24 объектов SQL Server с помощью всего лишь трех операторов SQL. Обычно приходится писать оператор DROP для каждого объекта; однако вы можете удалить все ваши таблицы в одном операторе SQL, все представления в другом операторе SQL и все ваши хранимые процедуры в еще одном.

DROP Table для всех таблиц в базе данных SQL Server

Решение простое — перечислите все таблицы в вашей базе данных, например, в одном операторе DROP, разделив их запятыми.

DROP TABLE table1, table2, table3, table4, table5;

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

Для простоты все пять таблиц будут идентичны за исключением имен. Сначала давайте создадим начальную таблицу и наполним ее данными.

CREATE TABLE Students1( 
colID INT
, name VARCHAR(20)
, subject VARCHAR(20)
);
GO
INSERT INTO Students1(name, subject)
VALUES ('Student1', 'Science')
, ('Student2', 'Science')
, ('Student3', 'History');
GO

Теперь создадим еще четыре таблицы, используя процесс «копирования таблицы».

SELECT * 
INTO Students2
FROM Students1;
GO
SELECT *
INTO Students3
FROM Students2;
GO
SELECT *
INTO Students4
FROM Students3;
GO
SELECT *
INTO Students5
FROM Students4;
GO

Вы можете удалить все эти таблицы сразу с помощью одного запроса SQL.

DROP TABLE 
Students1,
Students2,
Students3,
Students4,
Students5;
GO

Преимущества и недостатки

Как многое в SQL и в жизни, часто преимущества сопровождаются недостатками. Это также справедливо и для операторов массового удаления. Чтобы вы могли определить, в каком сценарии это даст выгоду, ниже приводится краткая сводка преимуществ и недостатков этой возможности.

Преимущества

  • Вариант массового удаления совместим со всеми версиями SQL Server, включая Azure.
  • Вы можете сэкономить время за счет сокращения кода.
  • Если один из объектов в списке не существует или не может быть удален из-за зависимостей, это не влияет на остальные объекты в операторе DROP. Все остальные объекты в списке будут удалены.

Вот скриншот наших таблиц, находящихся сейчас в тестовой базе данных. Если вы уже удалили их, повторите выполнение скриптов CREATE TABLE.

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

DROP TABLE 
Students1,
Students2,
Students33,
Students4,
Students5;
GO

Вы должны получить похожее сообщение об ошибке:

Обратите внимание, что тут ничего не сказано о других таблицах, а только о Students33, которой не существует. Поэтому, когда мы обновим таблицы в браузере объектов, все таблицы кроме Students3 исчезнут.

Недостатки

  • Вы не можете использовать IF EXISTS в операторе массового удаления.
  • Вы не можете удалить одновременно объекты разных типов. Другими словами, вы должны удалить одной командой все таблицы, другой — все представления и т.д.

Нахождение имен объектов SQL

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

Давайте проясним этот вопрос, используя созданные ранее тестовые таблицы. Мы можем использовать некоторые инструменты, встроенные в SQL Server Management Studio (SSMS): 1) «sys.objects» и 2) возможность вернуть результаты запроса в виде текстового файла.

Сначала мы создадим скрипт SQL для перечисления имен наших таблиц. Вы можете так же перечислить ваши представления, хранимые процедуры и т.д., используя «sys.objects».

SELECT * 
FROM sys.objects;
GO

Результаты (неполный список):

Однако нам обычно не требуется так много информации, но полезно выполнить этот скрипт, чтобы ознакомиться с возвращаемыми значениями. Вы можете ограничить результаты, чтобы вернуть только имя и тип объектов в базе данных, таким образом:

select name + ', ', TYPE 
from sys.objects

Теперь продолжим чистку, чтобы убрать все системные объекты.

select name + ', ', TYPE 
from sys.objects
where type_desc != 'SYSTEM_TABLE'
AND type != 'IT'
AND type != 'SQ'

  • U означает TABLE (таблица),
  • V означает VIEW (представление),
  • P означает PROCEDURE (процедура), например, хранимую процедуру.
select name + ', ' 
from sys.objects
where type = 'U'
AND create_date >= '2022-09-28';
GO

Теперь вы можете скопировать и вставить результаты в вашу команду DROP TABLE.

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Автор не разрешил комментировать эту запись

Как массово очистить все таблицы сразу в MsSql?

Всем привет!
Как массово очистить все таблицы сразу в MsSql?
Чтобы каждой таблице не писать truncate table.

  • Вопрос задан более трёх лет назад
  • 1784 просмотра

Комментировать
Решения вопроса 0
Ответы на вопрос 3

AndyKorg

Кнопконажиматель и припоерасплавлятель
Что то типа такого:

declare @s nvarchar(max) = '' select @s = @s + 'truncate table '+TABLE_NAME+';' from INFORMATION_SCHEMA.TABLES exec (@s)

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Готовые решения — не подаю, но.

Дурацкий, но «бронебойный» вариант:

DECLARE @execute_cmd varchar(max)= ''; -- выбрать один из трех вариантов по вкусу --SELECT @execute_cmd = @execute_cmd+'begin try truncate table ['+name+'] end try begin catch end catch ' FROM sys.tables WHERE type_desc = 'USER_TABLE'; --SELECT @execute_cmd = @execute_cmd+'begin try truncate table ['+TABLE_NAME+'] end try begin catch end catch ' FROM information_schema.tables WHERE TABLE_TYPE = 'BASE TABLE'; --SELECT @execute_cmd = @execute_cmd+'begin try truncate table ['+Name+'] end try begin catch end catch ' FROM dbo.sysobjects WHERE xtype = 'U'; EXECUTE @execute_cmd;

и потом многократно «долбить» последнюю строку.

ибо foreign key и просто так удалить таблицу, на которую ссылаются данные из другой таблицы — не вариант

Как очистить таблицу в MySQL

В статье мы расскажем, как в MySQL очистить таблицу. Мы покажем два способа и объясним разницу между ними.

Очистить таблицу можно при помощи одной из команд:

Разница между TRUNCATE и DELETE

Команда TRUNCATE является оператором DDL. DDL (Data Definition Language) — это язык определения данных. Операторы языка DDL управляют объектами баз данных: удаляют, создают или переименовывают объекты БД.

Пример команды TRUNCATE

Команда DELETE является DML-оператором. DML (Data Manipulation Language) — это язык манипуляции данными. Операторы языка DML позволяют вставить, удалить, изменить, извлечь или обновить данные в базе.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *