SQLShack (Français)

Dans cet article, nous explorera le processus de suppression de la colonne SQL dune table existante. Nous comprendrons également limpact de la suppression dune colonne avec des contraintes et des objets définis.

Introduction

Dans une base de données relationnelle, nous utilisons la technique de conception de schéma Normalisations et divisons les grandes tables en petites tables. Cela permet de réduire la redondance et la dépendance des données. Nous avons plusieurs formes de normalisation spécifiées dans limage suivante.

Nous ne couvrons pas les techniques de normalisation dans cet article. Vous pouvez vous référer à larticle – Quest-ce que la normalisation de base de données dans SQL Server?

Supposons que vous ayez une table existante avec plusieurs colonnes. Certaines colonnes de ce tableau ne sont plus pertinentes pour le moment. Vous navez pas besoin de ces colonnes. Par exemple, considérons une table de produits, et dans cette table, vous avez une colonne. Nous avons mis en œuvre un mécanisme distinct pour capturer les commentaires sur les produits, et cette colonne nest plus pertinente pour le moment.

Voyons pourquoi il est essentiel de supprimer les colonnes indésirables de la table SQL. Voici la structure de ma table et nous devons supprimer la colonne ayant le type de données varchar (2000).

Cette table contient 4 millions lignes et lutilisateur a exécuté la commande pour sélectionner tous les enregistrements de cette table.

1

SELECT * FROM Produits;

Capturez le plan dexécution réel (appuyez sur CTRL + M) de cette requête avec les statistiques du client (appuyez sur Maj + Alt + S).

Dans une autre fenêtre de requête, exécutez la requête sans la colonne et capturez les statistiques similaires.

1
2
3
4

SELECT
,
,
FROM ..

Comparons le plan dexécution réel des deux requêtes dans SSMS. Vous pouvez remarquer que la requête sans colonne améliore les performances. Vous voyez de faibles valeurs de mémoire compilée, de temps CPU et de temps dattente réduits.

Loptimiseur de requêtes et le moteur de base de données SQL nécessitent un effort supplémentaire pour cette colonne alors quil nest pas utile den récupérer les données.

De même, comparez les statistiques client des deux requêtes. Vous pouvez noter une réduction significative des paquets TDS reçus du serveur. Octets envoyés au client, octets reçus du serveur, temps de traitement du client et temps de traitement total pour la requête qui ne contient pas la colonne. Cela peut également vous aider à économiser la bande passante du réseau.

Ici, jai lintention de nettoyer la base de données et de supprimer les colonnes indésirables pour améliorer également les performances des requêtes.

Explorons comment supprimer une colonne dune table SQL existante.

Colonne SQL DELETE à laide de lexplorateur dobjets SSMS

Nous pouvons supprimer une colonne à laide de lutilisateur graphique Méthode dinterface (GUI) dans SQL Server. Connectez-vous à une instance dans SSMS, développez les bases de données. Dans la base de données particulière, localisez la table particulière et développez les colonnes.

Il montre toutes les colonnes de la table particulière. Faites un clic droit sur la colonne que nous voulons supprimer et cliquez sur Supprimer comme indiqué dans limage suivante.

Cela ouvre un et répertorie le nom de la colonne à supprimer. Cliquez sur Ok, et cela supprime la colonne du tableau.

Colonnes SQL DELETE à laide du concepteur de table SSMS

Nous utilisons le concepteur de table dans SSMS pour définir les colonnes requises, les types de données et les propriétés de colonne telles que la clé primaire, les colonnes didentité. Nous pouvons également lutiliser pour supprimer une colonne dune table existante.

Faites un clic droit sur la table et allez dans Design.

Il montre toutes les colonnes dune table particulière.

Faites un clic droit sur le côté gauche dune colonne et vous obtenez loption Supprimer la colonne. Cliquez dessus pour supprimer une colonne.

Vous pouvez soit lenregistrer en appuyant sur CTRL + S, soit fermer le concepteur de table et cliquez sur Oui dans la fenêtre suivante.

SQL SUPPRIMER des colonnes en utilisant le concepteur de table T-SQL

Nous pouvons également utiliser la commande Alter table pour supprimer une colonne. La syntaxe est simple à utiliser. La commande suivante supprime la colonne de la table.

1
2
3
4

UTILISER
GO
ALTER TABLE. DROP COLUMN
GO

  • Tout dabord, spécifiez le nom de la table qui contient la colonne à supprimer
  • Ensuite, spécifiez le nom de la colonne que nous voulons supprimer

Nous pouvons également supprimer plusieurs colonnes dans une seule commande Modifier la table, mais toutes les colonnes doivent appartenir à une seule table. Cette commande supprime des colonnes dans une seule commande.

1
2
3
4

USE
GO
ALTER TABLE . DROP COLUMN,
GO

La colonne SQL DELETE contient des contraintes CHECK

Nous utilisons des contraintes CHECK pour limiter la plage de valeurs dans une colonne. Supposons que vous ayez une colonne comportant des contraintes CHECK.

Nous voulons supprimer la colonne, mais cette colonne a une contrainte CHECK dessus. Essayons de le supprimer.

1
2

ALTER TABLE. DROP COLUMN ProductPrice
GO

Vous obtenez un message derreur indiquant que les objets CK_Price_Check dépendent de la colonne.

Nous ne pouvons pas supprimer cette colonne tant quelle na pas une personne à charge objet dedans. Pour supprimer cette colonne, supprimez dabord la dépendance, puis supprimez la colonne.

Essayons de supprimer la colonne ayant la contrainte CHECK à laide du concepteur de tables. Concepteur de table ouvert pour la table.

Faites un clic droit sur la colonne et vérifiez que des contraintes CHECK existent sur cette table.

Il montre les contraintes CHECK selon limage suivante.

Maintenant, faites un clic droit sur la colonne et supprimez la colonne. Il ne donne aucun message derreur.

Fermez la fenêtre du concepteur, et il vous demande de cliquer sur Oui pour enregistrer les modifications.

Il vous donne un message davertissement de validation et donne un message sur la contrainte de vérification.

Cliquez sur Oui et la modification du tableau échoue. Il ne peut pas supprimer la colonne car la contrainte CHECK en dépend.

Nous ne pouvons pas supprimer la colonne à laide du concepteur de table si la colonne a des dépendances sur dautres objets.

Colonne SQL DELETE ayant une vue SQL définie

Créons une vue SQL pour sélectionner tous les enregistrements de la table.

1
2
3

Créer une vue vw_ProductSales
comme
SELECT * à partir de ProductSales

Cette vue dépend de toutes les colonnes du tableau. Supprimez la colonne à laide de la commande Modifier la table.

1
2

ALTER TABLE. DROP COLUMN ProductPrice
GO

Nous nobtenons aucun message derreur lors de lexécution de la requête. Essayons daccéder aux enregistrements depuis la vue.

1
2

SELECT *
FROM vw_ProductSales;

Nous recevons un message derreur car le tableau ne contient pas la colonne. Cette colonne était disponible une fois que nous avons créé la vue SQL.

  • Remarque: nous devons vérifier les dépendances des objets avant de supprimer une colonne. Cela éliminera les problèmes auxquels nous serons confrontés plus tard.

Conclusion

Dans cet article, nous avons découvert SQL Supprimer une colonne dune table existante en utilisant différentes méthodes. Nous devons être conscients de toutes ces méthodes. Vous devez être prudent dans lenvironnement de production avant de supprimer des colonnes. Vous devez supprimer toutes les dépendances et le planifier correctement.

  • Auteur
  • Messages récents
En tant que certifié MCSA et Microsoft Certified Trainer à Gurgaon, en Inde, avec 13 ans dexpérience, Rajendra travaille pour une variété de grandes entreprises se concentrant sur loptimisation des performances, la surveillance, la haute disponibilité et les stratégies et la mise en œuvre de reprise après sinistre. Il est lauteur de centaines darticles faisant autorité sur SQL Server, Azure, MySQL, Linux, Power BI, le réglage des performances, AWS / Amazon RDS, Git et les technologies associées qui ont été consultés par plus de 10 millions de lecteurs à ce jour.
Il est le créateur de lune des plus grandes collections darticles en ligne gratuits sur un seul sujet, avec sa série de 50 articles sur les groupes de disponibilité Always On SQL Server. Sur la base de sa contribution à la communauté SQL Server, il a été récompensé par divers prix dont le prestigieux « Meilleur auteur de lannée » en continu en 2020 et 2021 chez SQLShack.
Raj est toujours intéressé par de nouveaux défis, donc si vous avez besoin de conseil aide sur nimporte quel sujet traité dans ses écrits, il peut être contacté à [email protected]
Voir tous les articles de Rajendra Gupta

Derniers messages de Rajendra Gupta (voir tout)
  • Mise à niveau des versions mineures et majeures pour AWS RDS SQL Server – 29 janvier 2021
  • Déploiement dinstances AWS RDS PostgreSQL – 27 janvier 2021
  • Migration de vos bases de données SQL sur site vers AWS RDS SQL Server à laide dAWS DMS – 25 janvier , 2021

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *