Comment puis-je renommer une colonne dans une table de base de données en utilisant SQL?
si je souhaite simplement renommer une colonne (sans changer son type ou ses contraintes, juste son nom) dans une base de données SQL en utilisant SQL, comment faire? Ou n'est-il pas possible?
c'est pour toute base de données prétendant supporter SQL, je suis simplement à la recherche d'une requête spécifique à SQL qui fonctionnera indépendamment de l'implémentation réelle de la base de données.
11 réponses
sur PostgreSQL( et beaucoup D'autres RDBM), vous pouvez le faire avec la déclaration régulière ALTER TABLE
:
essais=> SELECT * FROM Test1;
id | foo | bar
----+-----+-----
2 | 1 | 2
essais=> ALTER TABLE Test1 RENAME COLUMN foo TO baz;
ALTER TABLE
essais=> SELECT * FROM Test1;
id | baz | bar
----+-----+-----
2 | 1 | 2
dans MySQL, la syntaxe est 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 la façon la plus facile 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 aurez besoin de tout savoir sur la colonne. Si elle est utilisée dans d'autres tableaux de clé étrangère, ils auront besoin d'être modifié.
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 prendra les 3 lignes ci-dessus. Pour quelque chose de plus compliqué, il peut être très salissant que vous remplissez les parties manquantes.
toutefois, comme indiqué ci-dessus, il y a des méthodes spécifiques de base de données plus simples si vous savez quelle base de données vous devez modifier à l'avance.
dans Informix, vous pouvez utiliser:
RENAME COLUMN TableName.OldName TO NewName;
cela a été mis en œuvre avant que la norme SQL ne règle la question - si elle est traitée dans la norme SQL. Ma copie du standard SQL 9075: 2003 ne le montre pas comme étant standard (entre autres choses, RENAME n'est pas un des mots clés). Je ne sais pas si C'est en fait en SQL 9075:2008.
dans sql server vous pouvez utiliser
exec sp_rename '<TableName.OldColumnName>','<NewColumnName>','COLUMN'
ou
sp_rename '<TableName.OldColumnName>','<NewColumnName>','COLUMN'
ALTER TABLE is standard SQL. Mais il n'est pas complètement implémenté dans de nombreux systèmes de bases de données.
vous pouvez utiliser la commande suivante pour renommer la colonne de N'importe quelle table dans le serveur SQL:
exec sp_rename 'TableName.OldColumnName', 'New colunmName'
le standard serait ALTER TABLE
, mais ce N'est pas nécessairement supporté par tous les SGBD que vous êtes susceptible de rencontrer, donc si vous êtes à la recherche d'une syntaxe globale, vous pourriez être sans chance.
alternativement à SQL
, vous pouvez le faire dans Microsoft SQL Server Management Studio, à partir du Panneau de configuration de la table.
Première Manière
double-cliquez lentement sur la colonne. Le nom de la colonne deviendra une zone de texte modifiable.
Deuxième Manière
SqlManagement Studio>>bases de données>>tables>>specificTable>>colonne Dossier>>Clic Droit sur la colonne>>Remis à neuf
Troisième Voie
Table>>Clic Droit>>Conception