Domanda

Se desidero semplicemente rinominare una colonna (non modificarne il tipo o i vincoli, solo il suo nome) in un database SQL usando SQL, come posso farlo? O non è possibile?

Questo è per qualsiasi database che afferma di supportare SQL, sto semplicemente cercando una query specifica per SQL che funzionerà indipendentemente dall'implementazione effettiva del database.

È stato utile?

Soluzione

Su PostgreSQL (e molti altri RDBMS), puoi farlo con la normale istruzione ALTER TABLE :

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

Altri suggerimenti

In particolare per SQL Server, utilizzare sp_rename

USE AdventureWorks;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO

In MySQL, la sintassi è ALTER TABLE ... CHANGE :

ALTER TABLE <table_name> CHANGE <column_name> <new_column_name> <data_type> ...

Nota che non puoi semplicemente rinominare e lasciare il tipo e i vincoli così come sono; devi digitare nuovamente il tipo di dati e i vincoli dopo il nuovo nome della colonna.

Penso che questo sia il modo più semplice per cambiare il nome della colonna.

SP_RENAME 'TABLE_NAME.OLD_COLUMN_NAME','NEW_COLUMN_NAME'

Sfortunatamente, per una soluzione indipendente dal database, dovrai sapere tutto sulla colonna. Se viene utilizzato in altre tabelle come chiave esterna, dovranno essere modificati anche.

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;

Per i casi più semplici (senza vincoli, trigger, indici o chiavi), verranno prese le 3 righe sopra. Per qualcosa di più complicato può diventare molto disordinato mentre si riempiono le parti mancanti.

Tuttavia, come menzionato sopra, esistono metodi più semplici specifici per il database se si conosce quale database è necessario modificare in anticipo.

In Informix, è possibile utilizzare:

RENAME COLUMN TableName.OldName TO NewName;

Questo è stato implementato prima che lo standard SQL risolvesse il problema, se è stato risolto nello standard SQL. La mia copia dello standard SQL 9075: 2003 non lo mostra come standard (tra le altre cose, RENAME non è una delle parole chiave). Non so se sia effettivamente in SQL 9075: 2008.

Nel server sql puoi usare

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

o

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

È possibile utilizzare il comando seguente per rinominare la colonna di qualsiasi tabella in SQL Server:

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

ALTER TABLE è SQL standard. Ma non è completamente implementato in molti sistemi di database.

Lo standard sarebbe ALTER TABLE , ma non è necessariamente supportato da tutti i DBMS che potresti incontrare, quindi se stai cercando una sintassi onnicomprensiva, potresti non essere fortuna.

In alternativa a SQL , puoi farlo in Microsoft SQL Server Management Studio, dal pannello Design della tabella.

First Way

Doppio clic lento sulla colonna. Il nome della colonna diventerà una casella di testo modificabile.

Seconda via

  

SqlManagement Studio > > DataBases > > tables > > specificTable > > Column   Cartella > > fai clic con il tasto destro sulla colonna > > Reman

Terza via

Tabella > > RightClick > > design

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top