Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Ajouter des colonnes à une table existante dans la base de données SQL Server

Présentation

Une table est une structure logique bidimensionnelle et le moyen fondamental de stockage de données dans les systèmes de gestion de bases de données relationnelles. Son format "ligne et colonne" ressemble beaucoup à l'organisation de la feuille de calcul.

Chaque nouvel enregistrement introduit dans une table est une ligne (également appelée enregistrement ou tuple), tandis que les lignes sont regroupées dans un ensemble fini de colonnes (également appelées champs ou attributs). Chaque colonne a un nom et un type de données, et elle sert de référence pour afficher les ensembles de résultats lors de l'interrogation de données à partir de systèmes de bases de données relationnelles.

Dans cet article, nous explorons les options actuelles nous permettant d'ajouter de nouvelles colonnes à une table existante dans la base de données SQL Server. Le cas d'utilisation peut se présenter à plusieurs reprises. En particulier, cela se produit lorsqu'il y a des mises à jour pour une application et qu'elles exigent l'ajout de nouvelles colonnes.

Créer un tableau

Pour commencer notre courte série d'expériences, créons un petit tableau à quatre colonnes contenant des informations de base sur une entreprise :

-- Listing 1: Create New Table ntab
use AU
go
create table ntab (
ID INT identity (1,1)
, CompanyName varchar(100)
, CompanyAddress varchar(200)
, DateofIncorporation datetime
);

Ajouter une seule colonne

Pour ajouter une seule colonne au ntab table, nous exécutons le code fourni dans le Listing 2. Le résultat est un tableau à cinq colonnes, comme illustré à la Figure 1. Nous avons généré ces métadonnées sur notre table avec les sp_columns procédure stockée.

-- Listing 2: Add ManagingDirector Column to Empty Table

alter table ntab add ManagingDirector varchar(50);

exec sp_columns ntab;

En utilisant le code du Listing 3, nous remplissons une nouvelle table avec 1000 lignes.

-- Listing 3: Add Column to Empty Table
insert into ntab values ('Simplex Technologies','Plot 121 Nova Ridge II, Appolonia City','20201023','Kenneth Igiri');
GO 1000

Ensuite, nous ajoutons une autre colonne TaxIdentityNumber – nous pouvons le faire avec succès sans surcharge de performance apparente :

-- Listing 4: Add Column to Populated Table

alter table ntab add TaxIdentityNumber varchar(20);

exec sp_columns ntab;

Supprimer ou ajouter plusieurs colonnes en utilisant la commande ALTER TABLE

Dans une seule instruction, nous pouvons également supprimer ou ajouter des colonnes. Important :lorsque nous supprimons des colonnes d'une table contenant des données, nous perdons les données très rapidement. Ce n'est certainement pas une commande avec laquelle jouer en production.

La commande ALTER TABLE est une commande DDL (Data Definition Language) similaire à TRUNCATE. L'opération n'est pas enregistrée dans le journal des transactions et il est impossible de l'annuler. Si vous avez des raisons de le faire en production, vous devriez avoir une sauvegarde afin de pouvoir revenir à l'état précédent.

-- Listing 5: Drop Column from Table

alter table ntab drop column ManagingDirector, TaxIdentityNumber;

alter table ntab add ManagingDirector varchar(50), TaxIdentityNumber varchar(20);

select * from ntab;

Important :Lorsque vous tentez de supprimer une colonne ayant un index, cela renvoie une erreur (voir l'image). Tout d'abord, vous devez sauvegarder et supprimer l'index.

Utilisation de l'interface graphique – Table Designer

Avant de continuer, notez que vous devez vous assurer d'utiliser la dernière version de SQL Server Management Studio. S'il y a une incompatibilité entre la version de la base de données et votre version SSMS, vous obtiendrez l'erreur suivante :

Pour modifier la structure de la table, ouvrez le Concepteur de table sur SSMS :cliquez avec le bouton droit sur la table et cliquez sur Design.

Vous verrez le ntab détails du tableau :

Dans Table Designer, nous ajoutons les noms des colonnes que nous voulons ajouter et spécifions les types de données et la possibilité de valeur nulle comme vous le souhaitez.

Une fois cela fait, nous enregistrons le tableau en utilisant l'une des options disponibles. Par exemple, reportez-vous à l'option disponible dans le menu de la barre SSMS :

Il existe un paramètre SQL Server Management Studio, qui peut empêcher l'enregistrement de la table avec les colonnes nouvellement ajoutées. Vous devrez peut-être désactiver ce paramètre :

Outils > Options > Concepteurs> Concepteurs de tables et de bases de données

En arrière-plan, SQL Server exécute le même SQL que nous avons montré précédemment (Liste 5). Nous l'avons extrait à l'aide de SQL Profiler. Vous pouvez obtenir les mêmes données avec les événements étendus :

Une fois que nous avons terminé, nous pouvons voir les mêmes résultats qu'avant :

dbForge Studio pour SQL Server

dbForge Studio for SQL Server de la société Devart offre une interface fonctionnelle robuste pour interagir avec SQL Server. Comme la solution est similaire à SSMS, elle est facile à utiliser. Il se connecte de manière transparente à l'instance SQL Server et permet à l'utilisateur d'interagir en douceur avec les objets SQL Server. Vous pouvez télécharger l'édition express ici .

Pour modifier une table dans dbForge Studio, cliquez avec le bouton droit sur cette table pour afficher les propriétés détaillées.

Vous ajoutez une nouvelle colonne de la même manière que dans le Concepteur de tables de SQL Server. Cependant, notez le niveau de détail affiché pour la table, y compris la table DDL. Il est beaucoup plus robuste que celui disponible dans SSMS.

dbForge Studio suit les mêmes règles d'ajout de colonnes aux tables que SQL Server Management Studio. Le DDL de la table est mis à jour dès que vous ajoutez une colonne. Cependant, vous devez cliquer sur ENREGISTRER pour conserver les modifications :

Conclusion

Cet article a démontré les méthodes que nous pouvons utiliser pour ajouter des colonnes à une table existante dans SQL Server, que cette table contienne des données ou non.

Nous avons également illustré l'impact de la suppression de colonnes lorsque la table contient des données. Nous avons précisé que la commande ALTER TABLE est une commande DDL. Il n'y a pas de journaux et aucun impact significatif sur les performances non plus. Utilisez le Concepteur de tables pour insérer des colonnes entre les colonnes existantes plutôt qu'à la fin de la liste des colonnes.

Nous avons également examiné la fonctionnalité Devart dbForge Studio 2019. Il a une interface beaucoup plus robuste et pratique pour cette tâche et d'autres tâches similaires. Il peut également offrir de nombreuses autres fonctionnalités pour faciliter la gestion de la base de données SQL Server.

Références

  1. Impact sur les performances des commandes ALTER TABLE
  2. Modifier la table dans T-SQL
  3. Fonctionnalité de concepteur de table dans dbForge Studio pour SQL Server