Modifier une table SQL Server (ALTER TABLE)

Comment modifier une table SQL Server à l’aide de la commande ALTER TABLE ? Il suffit de se connecter au serveur hébergeant l’instance, la base de données et la table et d’exécuter une requête ALTER TABLE SQL Server. Le but est de mettre à jour une table déjà existante pour adapter sa structure par exemple. Ou les contraintes associées à la table.

Le script d’exemple ci-dessous modifie la table Sales précédemment créée, en changeant la longueur de la colonne Month Name. Bien sûr, il faut l’adapter aux besoins du projet.

Script pour modifier une table SQL Server avec la commande ALTER TABLE

Par ailleurs, le mot-clé ALTER en SQL permet d’ajouter une colonne ou de supprimer une colonne. Utilisez la commande ALTER deux fois : la première fois pour spécifier la table cible et la seconde pour spécifier la colonne à modifier.

Utiliser la table des ventes créée dans cet article comme exemple de base.

Modifier la longueur d’une colonne avec un script SQL (ALTER COLUMN)

Dans le script il y a deux lignes, l’une utilise ALTER TABLE et l’autre le mot-clé ALTER COLUMN pour changer explicitement la longueur de la colonne.

-- Changer la longueur à 100 initialement 50
ALTER TABLE [dbo].[SALES]
	ALTER COLUMN [MonthName] NVARCHAR(100);
GO

Ainsi, dans les scripts pour gérer les tables SQL Server, un article explique précédemment comment créer une table. Et aussi, comment modifier une table SQL. Maintenant pour aller plus loin, consulter cet article pour supprimer une table SQL Server.

Noter que pour réduire la taille de la colonne et que des données sont déjà présentes, le système de base de données effectue un contrôle pour vérifier la taille des données.

Donc pour réduire la taille à 20, c’est OK. Mais pour insérer des noms de mois (jusqu’à 9 caractères pour septembre), le système émet une erreur si la longueur est inférieure, comme 8 par exemple.

En effet, veuillez noter que le contenu doit être compatible avec la nouvelle longueur choisie.

Si la longueur diminue, l’opération nécessite une étape supplémentaire qui consiste à sauvegarder le contenu dans une autre table ou à raccourcir la longueur du contenu.

ALTER TABLE [dbo].[SALES] ALTER COLUMN [MonthName] NVARCHAR(20);

insert into [dbo].[SALES] ([MonthName]) values ('January'); 
insert into [dbo].[SALES] ([MonthName]) values ('February'); 
insert into [dbo].[SALES] ([MonthName]) values ('March'); 
insert into [dbo].[SALES] ([MonthName]) values ('April'); 
insert into [dbo].[SALES] ([MonthName]) values ('May'); 
insert into [dbo].[SALES] ([MonthName]) values ('June'); 
insert into [dbo].[SALES] ([MonthName]) values ('July'); 
insert into [dbo].[SALES] ([MonthName]) values ('August'); 
insert into [dbo].[SALES] ([MonthName]) values ('September'); 
insert into [dbo].[SALES] ([MonthName]) values ('October'); 
insert into [dbo].[SALES] ([MonthName]) values ('November'); 
insert into [dbo].[SALES] ([MonthName]) values ('December');

ALTER TABLE [dbo].[SALES] ALTER COLUMN [MonthName] NVARCHAR(5);

L’erreur affichée est la suivante :

Msg 2628, Level 16, State 1, Line 29
Les données chaîne ou binaires seront tronquées dans la table ‘Expert-Only.dbo.SALES’, colonne ‘MonthName’. Valeur tronquée : « . L’instruction a été arrêtée.

Voici le message en Anglais:

Msg 2628, Level 16, State 1, Line 29
String or binary data would be truncated in table ‘Expert-Only.dbo.SALES’, column ‘MonthName’. Truncated value: ”.

En effet, la taille d’une colonne ne peut pas être réduite plus que le contenu actuel.

Ajouter ou supprimer des colonnes d’une table SQL Server (ADD et DROP COLUMN)

La commande Alter Table permet également d’ajouter ou de supprimer des colonnes dans une table donnée.

-- Script pour ajouter une colonne à la table sales
ALTER TABLE [dbo].[SALES] 
     ADD NewColumnA VARCHAR(10) NULL;
GO

-- Ajout de plusieurs colonnes à la table des ventes
ALTER TABLE [dbo].[SALES] 
	ADD NewColumnB VARCHAR(10) NULL, 
     NewColumnC INT NULL;
GO

-- Script pour supprimer une colonne d'une table SQL Server
ALTER TABLE [dbo].[SALES] 
     DROP COLUMN NewColumnA;
GO

-- Script pour supprimer plusieurs colonnes d'une table SQL Server 
ALTER TABLE [dbo].[SALES]  
     DROP COLUMN NewColumnB, NewColumnC;
GO

Pour aller plus loin, consulter la section sur les fonctions SQL Server pour créer un code réutilisable qui renvoie une valeur à partir de tables ou de fonctions et procédures SQL intégrées.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*