web-dev-qa-db-fra.com

Comment renommer une colonne dans une table de base de données à l'aide de SQL?

Si je souhaite simplement renommer une colonne (sans changer son type ni ses contraintes, mais juste son nom) dans une base de données SQL utilisant SQL, comment puis-je le faire? Ou n'est-ce pas possible?

Ceci concerne toute base de données prétendant prendre en charge SQL. Je recherche simplement une requête spécifique à SQL qui fonctionnera indépendamment de la mise en œuvre réelle de la base de données.

107
MetroidFan2002

Sur PostgreSQL (et de nombreux autres SGBDR), vous pouvez le faire avec l’instruction ALTER TABLE normale:

=> SELECT * FROM Test1;
 id | foo | bar 
----+-----+-----
  2 |   1 |   2

=> ALTER TABLE Test1 RENAME COLUMN foo TO baz;
ALTER TABLE

=> SELECT * FROM Test1;
 id | baz | bar 
----+-----+-----
  2 |   1 |   2
94
bortzmeyer

Spécifiquement pour SQL Server, utilisez sp_rename

_USE AdventureWorks;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
_
112
Galwegian

Dans MySQL, la syntaxe est la suivante: ALTER TABLE ... CHANGE :

_ALTER TABLE <table_name> CHANGE <column_name> <new_column_name> <data_type> ...
_

Notez que vous ne pouvez pas simplement renommer et laisser le type et les contraintes tels quels; vous devez retaper le type de données et les contraintes après le nouveau nom de la colonne.

34
jaspher chloe

Malheureusement, pour une solution indépendante de la base de données, vous devez tout savoir sur la colonne. Si elle est utilisée dans d'autres tables en tant que clé étrangère, elles devront également être modifiées.

ALTER TABLE MyTable ADD MyNewColumn OLD_COLUMN_TYPE;
UPDATE MyTable SET MyNewColumn = MyOldColumn;
-- add all necessary triggers and constraints to the new column...
-- update all foreign key usages to point to the new column...
ALTER TABLE MyTable DROP COLUMN MyOldColumn;

Pour les cas les plus simples (pas de contraintes, déclencheurs, index ou clés), il faudra les 3 lignes ci-dessus. Pour quelque chose de plus compliqué, cela peut devenir très compliqué à mesure que vous remplissez les parties manquantes.

Cependant, comme mentionné ci-dessus, il existe des méthodes plus simples spécifiques à une base de données si vous savez quelle base de données vous devez modifier à l'avance.

19
Shadow Man

Je pense que c'est le moyen le plus simple de changer le nom de la colonne.

SP_RENAME 'TABLE_NAME.OLD_COLUMN_NAME','NEW_COLUMN_NAME'
19
Kunal Relan

Dans Informix, vous pouvez utiliser:

RENAME COLUMN TableName.OldName TO NewName;

Cela a été mis en œuvre avant que le standard SQL ne résolve le problème - s'il est traité dans le standard SQL. Ma copie de la norme SQL 9075: 2003 ne l'indique pas comme standard (entre autres choses, RENAME n'est pas l'un des mots clés). Je ne sais pas si c'est effectivement en SQL 9075: 2008.

9
Jonathan Leffler

Dans le serveur SQL, vous pouvez utiliser

exec sp_rename '<TableName.OldColumnName>','<NewColumnName>','COLUMN'

ou

sp_rename '<TableName.OldColumnName>','<NewColumnName>','COLUMN'
5
Bimzee

Vous pouvez utiliser la commande suivante pour renommer la colonne d'une table dans SQL Server:

exec sp_rename 'TableName.OldColumnName', 'New colunmName'
4

ALTER TABLE est le SQL standard. Mais ce n'est pas complètement implémenté dans beaucoup de systèmes de bases de données.

3
Paul Tomblin

La norme serait ALTER TABLE, mais cela ne sera pas forcément pris en charge par tous les SGBD rencontrés. Par conséquent, si vous recherchez une syntaxe complète, vous risquez de ne pas avoir de chance.

2
Rob

À la place de SQL, vous pouvez le faire dans Microsoft SQL Server Management Studio, à partir du tableau Design Panel.

Première façon

Double-clic lent sur la colonne. Le nom de la colonne deviendra une zone de texte modifiable.

Deuxième façon

SqlManagement Studio >> DataBases >> tables >> SpecificTable >> Dossier de colonnes >> Clic droit sur la colonne >> Reman

Troisième voie

Tableau >> RightClick >> Conception

0
Uzair Xlade