MySQL'de tek seferde birden fazla tabloyu bırakın


103

Tek bir veritabanından birden çok tabloyu tek komutta nasıl bırakabilirsiniz gibi bir şey,

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

a, b, c veritabanı testindeki tablolardır.


17
zaten kendinize cevap
verdiniz

Aşağıdaki cevaplara göre, HeidiSQL'de tabloları adlarına göre filtreleyebilir (üstteki metin kutusu), DROP TABLE bir sorguya yazabilir ve istediğiniz her tabloyu çift tıklayarak adını sorguya ekleyebilirsiniz (aralarına virgül koyun) ardından çalıştırmak için F9'a basın. Biraz konu dışı ama bunun için buraya geldim.
Ivan Ferrer Villa

DROP TABLE table_prefix_*Yıldız karakteriyle çalışmadığı için aynı ön
eke

Yanıtlar:


136

Misal:

Diyelim ki tablo A'da iki çocuk B ve C var. O zaman tüm tabloları kaldırmak için aşağıdaki sözdizimini kullanabiliriz.

DROP TABLE IF EXISTS B,C,A;

Bu, her tabloyu ayrı ayrı düşürmek yerine komut dosyasının başına yerleştirilebilir.


29
Belki de tabloların herhangi bir ilişkiye sahip olması gerekmediğini belirtmeye değer. Tamamen bağımsız olabilirler ve bu sözdizimi yine de çalışacaktır.
crmpicco

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

O zaman onları doğru sırayla bırakmaktan veya gerçekten var olup olmadıklarından endişelenmenize gerek kalmaz.

Not: Bu yalnızca MySQL içindir (soruda olduğu gibi). Diğer veritabanlarının bunu yapmak için muhtemelen farklı yöntemleri vardır.


3
Fkey kontrollerini (y) çevirerek beni birçok güçlükten kurtardınız.
HungryCoder

0

Silinecek çok sayıda tablo varsa bunu yapmanın tembel bir yolu.

  1. Aşağıdakileri kullanarak tablo alın

    • Sql sunucusu için - CONCAT SEÇİN (ad, ',') SYS.tables'dan Table_Name;
    • Oralce için - SYS.ALL_TABLES'DEN CONCAT (TABLE_NAME, ',') SEÇİN;
  2. Sonuç kümesinden tablo adlarını kopyalayıp yapıştırın ve DROP komutundan sonra yapıştırın.


-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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.