Je ne veux pas taper le nom de toutes les tables pour les supprimer toutes. Est-ce possible avec une seule requête?
sql
sql-server
Majid
la source
la source
Réponses:
Utilisez la vue INFORMATION_SCHEMA.TABLES pour obtenir la liste des tables. Générez des scripts Drop dans l'instruction select et supprimez-le à l'aide de Dynamic SQL:
Version de Sys.Tables
Remarque: si vous en avez
foreign Keys
défini entre les tables, exécutez d'abord la requête ci-dessous pour désactiver tout ce qui estforeign keys
présent dans votre base de données.Pour plus d'informations, cliquez ici .
la source
[sys]
vues de schéma si la portabilité à travers rdbms n'est pas requise. stackoverflow.com/a/3654313/251174Print @sql
avantexec
. Ensuite,sp_executesql
Si vous souhaitez utiliser une seule requête SQL pour supprimer toutes les tables, vous pouvez utiliser ceci:
Il s'agit d'une procédure stockée cachée dans le serveur SQL et sera exécutée pour chaque table de la base de données à laquelle vous êtes connecté.
Remarque: vous devrez peut-être exécuter la requête plusieurs fois pour supprimer toutes les tables en raison de dépendances.
Remarque 2: pour éviter la première note, avant d'exécuter la requête, vérifiez d'abord s'il existe des relations de clés étrangères avec une table. S'il y en a, désactivez simplement la contrainte de clé étrangère en exécutant la requête ci-dessous:
la source
Si vous ne voulez pas taper, vous pouvez créer les instructions avec ceci:
Ensuite, copiez et collez dans une nouvelle fenêtre SSMS pour l'exécuter.
la source
QUOTENAME
également utiliser ce qui a l'air soigné.'DROP TABLE ' + QUOTENAME(name) + ';'
Vous pouvez également utiliser le script suivant pour tout supprimer, y compris les éléments suivants:
https://michaelreichenbach.de/how-to-drop-everything-in-a-mssql-database/
la source
Je ferais juste une petite modification à la réponse et à l'utilisation de @ NoDisplayName
QUOTENAME()
sur laTABLE_NAME
colonne et j'inclurais également laTABLE_SCHEMA
colonne encerclant les tables ne sont pas dans ledbo
schéma.Ou en utilisant des
sys
vues de schéma (selon le commentaire de @ swasheck):la source
[sys]
vues de schéma si la portabilité à travers rdbms n'est pas requise. stackoverflow.com/a/3654313/251174Pour faire suite à la réponse de Dave.Gugg, ce serait le code dont quelqu'un aurait besoin pour obtenir toutes les lignes DROP TABLE dans MySQL:
la source
Le moyen le plus simple est de supprimer toute la base de données et de la créer à nouveau:
C'est tout.
la source
Si quelqu'un d'autre a eu un problème avec la meilleure solution de réponse (y compris la désactivation des clés étrangères), voici une autre solution de ma part :
la source
Pas tout à fait une requête, encore assez courte et douce:
la source
Utilisez le script suivant pour
drop
tousconstraints
:Ensuite, exécutez ce qui suit pour supprimer toutes les tables:
Cela a fonctionné pour moi dans Azure SQL Database où
'sp_msforeachtable'
n'était pas disponible!la source
Je sais que cette question est très ancienne mais chaque fois que j'ai besoin de ce code .. au fait, si vous avez des tables et des vues et des fonctions et des procédures, vous pouvez tout supprimer par ce script .. alors pourquoi je poste ce script ?? parce que si vous supprimez toutes les tables, vous devrez supprimer toutes les vues et si vous avez des fonctions et des procédures, vous devez les supprimer aussi
j'espère que cela aidera quelqu'un
la source