Опустіть кілька таблиць за один кадр у mysql


102

Як скинути кілька таблиць з однієї бази даних за одну команду. щось на зразок,

> use test; 
> drop table a,b,c;

де a, b, c - таблиці тесту бази даних.


17
ви вже відповідаєте собі
ajreal

відповідно до наведених нижче відповідей, у HeidiSQL ви можете фільтрувати таблиці за їх іменем (верхнє текстове поле), записувати DROP TABLE в запит і двічі клацнути кожну потрібну таблицю, щоб додати її ім'я до запиту (поставити між ними кома), після чого натисніть F9 для виконання. Трохи поза темою, але я прийшов сюди для цього.
Вілла Івана Феррера

Для людей , які бажають скинути кілька таблиць з тим самим префіксом, так як DROP TABLE table_prefix_*не працює із зіркою характеру: stackoverflow.com/questions/6758652 / ...
baptx

Відповіді:


135

Приклад:

Скажімо, у таблиці A є двоє дітей B і C. Тоді ми можемо використовувати наступний синтаксис, щоб скинути всі таблиці.

DROP TABLE IF EXISTS B,C,A;

Це може бути розміщено на початку сценарію, а не окремо опускати кожну таблицю.


29
Можливо, варто зазначити, що таблиці взагалі не повинні мати жодних стосунків. Вони можуть бути повністю незалежними, і цей синтаксис все одно буде працювати.
crmpicco

76
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS a,b,c;
SET foreign_key_checks = 1;

Тоді вам не доведеться турбуватися про те, щоб викинути їх у правильному порядку, а також чи існують вони насправді.

Зверніть увагу: це лише для MySQL (як у питанні). Інші бази даних, ймовірно, мають різні методи для цього.


3
Ви врятували мене від безлічі клопотів, повернувши fkey чеки (y).
HungryCoder

0

Ледачий спосіб зробити це, якщо є багато таблиць, які потрібно видалити.

  1. Отримайте таблицю, використовуючи наведене нижче

    • Для sql-сервера - SELECT CONCAT (ім'я, ',') Таблиця_Імена від SYS.tables;
    • Для oralce - SELECT CONCAT (TABLE_NAME, ',') З SYS.ALL_TABLES;
  2. Скопіюйте та вставте назви таблиць із набору результатів та вставте їх після команди DROP.


-3
declare @sql1 nvarchar(max) 
SELECT @sql1 =
  STUFF(
         (
           select ' drop table dbo.[' + name + ']'

           FROM sys.sysobjects AS sobjects
           WHERE (xtype = 'U') AND (name LIKE 'GROUP_BASE_NEW_WORK_%')
           for xml path('')
        ),
     1, 1, '')

  execute sp_executesql @sql1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.