Atualmente, estou tendo a seguinte tabela MySQL: Employees (empID, empName, department);
Quero alterar a tabela para o seguinte: Employees (empID, department, empName);
Como isso pode ser feito usando ALTER
instruções?
Nota: quero alterar apenas as posições da coluna.
SELECT *
comunicado. (Com certeza, se a ordem de valores é importante, deve-se incluí-los explicitamente na declaração, mas que talvez OP não tem total controle aqui.)SELECT
declaraçãoAFTER column
pode ser usadoALTER TABLE ADD column
. (para a próxima vez que você adicionar alguns campos).Respostas:
Se empName for uma coluna VARCHAR (50):
EDITAR
Pelos comentários, você também pode fazer isso:
Observe que a repetição de
empName
é deliberada. Você precisa dizer ao MySQL que deseja manter o mesmo nome de coluna.Você deve estar ciente de que as duas versões de sintaxe são específicas para o MySQL. Eles não funcionam, por exemplo, no PostgreSQL ou em muitos outros DBMSs.
Outra edição: como apontado por @Luis Rossi em um comentário, você precisa especificar completamente a definição de coluna alterada antes do
AFTER
modificador. Os exemplos acima apenas têmVARCHAR(50)
, mas se você precisar de outras características (comoNOT NULL
ou um valor padrão), precisará incluí-las também. Consulte os documentosALTER TABLE
para obter mais informações.fonte
COLUMN
palavra-chave é opcional nasALTER TABLE
declarações. Prefiro usá-lo porque acho que torna a declaração mais legível.NOT NULL DEFAULT 1
, isso é feito logo após o tipo de coluna no exemploVARCHAR(50)
Alterar posição da coluna:
Se você precisar movê-lo para a primeira posição, deverá usar o termo PRIMEIRO no final da consulta ALTER TABLE CHANGE [COLUMN]:
fonte
O phpMyAdmin fornece uma GUI para isso na exibição de estrutura de uma tabela. Marque para selecionar a coluna que deseja mover e clique na ação de alteração na parte inferior da lista de colunas. Você pode alterar todas as propriedades da coluna e encontrará a função 'mover coluna' na extremidade direita da tela.
É claro que tudo isso é apenas construir as consultas na resposta superior perfeitamente boa, mas os fãs da GUI podem apreciar a alternativa.
minha versão do phpMyAdmin é 4.1.7
fonte
Eu tive que executar isso para uma coluna introduzida nos estágios posteriores de um produto, em mais de 10 tabelas. Então, escrevi esse script desarrumado e rápido para gerar o comando alter para todas as tabelas 'relevantes'.
fonte