Question

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 cherche simplement une requête spécifique à SQL qui fonctionnera quelle que soit la mise en oeuvre réelle de la base de données.

Était-ce utile?

La solution

Sous PostgreSQL (et de nombreux autres SGBDR), vous pouvez le faire avec une instruction ALTER TABLE classique:

=> 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

Autres conseils

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.

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'

Malheureusement, pour une solution indépendante de la base de données, vous devez tout connaître de 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), les 3 lignes ci-dessus sont nécessaires. 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 à la base de données si vous savez quelle base de données vous devez modifier à l'avance.

Dans Informix, vous pouvez utiliser:

RENAME COLUMN TableName.OldName TO NewName;

Ceci a été implémenté avant que le standard SQL ne règle 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 s'il s'agit réellement de SQL 9075: 2008.

Sur le serveur SQL, vous pouvez utiliser

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

ou

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

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

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

ALTER TABLE est le SQL standard. Mais cela n’est pas complètement implémenté dans de nombreux systèmes de bases de données.

La norme serait ALTER TABLE , mais cela n’est pas nécessairement supporté par tous les SGBD rencontrés. Par conséquent, si vous recherchez une syntaxe complète, vous risquez de ne pas chance.

Alternativement avec SQL , vous pouvez le faire dans Microsoft SQL Server Management Studio, à partir du tableau Design Panel.

Première voie

Double-cliquez lentement sur la colonne. Le nom de la colonne deviendra une zone de texte modifiable.

Deuxième voie

  

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

Troisième voie

Tableau > > RightClick > > Design

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top