Como alterar a ordem das colunas em uma tabela usando a consulta SQL no SQL Server 2005?
Quero reorganizar a ordem das colunas em uma tabela usando a consulta SQL.
sql
sql-server-2005
Himadri
fonte
fonte
Respostas:
Você não pode. A ordem das colunas é apenas uma coisa "cosmética" com a qual nós, humanos, nos preocupamos - para o SQL Server, quase sempre é absolutamente irrelevante.
O que o SQL Server Management Studio faz em segundo plano quando você altera a ordem das colunas é recriar a tabela do zero com um novo
CREATE TABLE
comando, copiar os dados da tabela antiga e, em seguida, descartá-los.Não há comando SQL para definir a ordem das colunas.
fonte
INSERT
sem especificar explicitamente suas colunas!Você deve listar explicitamente os campos na ordem em que deseja que sejam retornados, em vez de usar * para a ordem 'padrão'.
consulta original:
retorna
agora escreva
fonte
de acordo com http://msdn.microsoft.com/en-us/library/aa337556.aspx
Bem, isso pode ser feito, usando
create
/ copy /drop
/ rename, conforme respondido por komma8.komma1Ou você pode usar o SQL Server Management Studio
Em seguida, clique em salvar. Na verdade, esse método elimina e recria a tabela, portanto, podem ocorrer alguns erros.
If Change Tracking opção estiver habilitada para o banco de dados e a tabela, você não deve usar este método.
Se estiver desabilitada, a opção Impedir o salvamento de alterações que exigem a recriação da tabela deve ser desmarcada no menu Ferramentas> Opções> Designers, caso contrário, ocorrerá o erro "Salvar alterações não é permitido" .
Também podem surgir problemas durante a criação da chave primária e estrangeira.
Se algum dos erros acima ocorrer, o salvamento falhará, o que o deixará com a ordem original das colunas.
fonte
This task cannot be performed using Transact-SQL statements.
" no documento estava errada. Expliquei o autor e pedi a ele que mudasse para "This task is not supported using Transact-SQL statements.
". Há cerca de um dia, o autor concordou e o documento foi corrigido. Você pode acompanhar a discussão que tivemos no GitHub .Isso é semelhante à pergunta sobre ordenar os registros no resultado de uma consulta .. e normalmente ninguém gosta da resposta formalmente correta ;-)
Então aqui vai:
select *
não força as colunas a serem retornadas em uma ordem específicacreate table' or in the
instruções alter table add `fonte
Claro, você pode alterar a ordem das colunas em uma instrução sql. No entanto, se você deseja abstrair a ordem das colunas físicas das tabelas, pode criar uma visão. ie
fonte
No SQLServer Management Studio:
Ferramentas -> Opções -> Designers -> Designers de tabelas e bancos de dados
Então:
O SQLServer Management Studio eliminará a tabela e a recriará usando os dados.
fonte
Você pode fazer isso criando uma nova tabela, copiar todos os dados, eliminar a tabela antiga e renomear a nova para substituir a antiga.
Você também pode adicionar novas colunas à tabela, copiar os dados de coluna por coluna, descartar as colunas antigas e renomear as novas colunas para corresponder às antigas. Um exemplo simples abaixo: http://sqlfiddle.com/#!3/67af4/1
fonte
No SQLServer Management Studio:
Tools
->Options
->Designers
->Table and Database Designers
Desmarque
Prevent saving changes that require table re-creation
.Agora você pode reorganizar a tabela.
fonte
O servidor SQL constrói internamente o script. Ele cria uma tabela temporária com novas alterações e copia os dados e elimina a tabela atual, em seguida, recria a inserção da tabela a partir da tabela temporária. Eu o encontro na opção "Gerar script de mudança" ssms 2014. Script como este. Daqui : Como alterar a ordem das colunas em uma tabela usando consulta sql
fonte
Se sua tabela tiver colunas suficientes, você pode tentar isso. Primeiro crie uma nova tabela com a ordem preferencial de colunas.
Agora elimine a tabela usando o comando drop
agora renomeie a tabela recém-criada com o nome da tabela antiga.
agora selecione a tabela, você tem suas colunas reorganizadas como preferia antes.
fonte
No final do dia, você simplesmente não pode fazer isso no MS SQL. Recentemente, criei tabelas em movimento (inicialização do aplicativo) usando um procedimento armazenado que lê de uma tabela de pesquisa. Quando criei uma visão que combinava isso com outra tabela que havia criado manualmente antes (mesmo esquema, com dados), ela falhou - simplesmente porque eu estava usando '' Select * UNION Select * 'para a visão. Ao mesmo tempo, se eu usar apenas aqueles criados por meio do procedimento armazenado, terei êxito.
Concluindo: Se existe alguma aplicação que dependa da ordem das colunas, não é uma boa programação e com certeza criará problemas no futuro. As colunas devem 'parecer' livres para estar em qualquer lugar e ser usadas para qualquer processo de dados (INSERT, UPDATE, SELECT).
fonte
Você pode conseguir isso com estas etapas:
remova todas as chaves estrangeiras e a chave primária da tabela original.
renomeie a tabela original.
usando CTAS, crie a tabela original na ordem que desejar.
largue a velha mesa.
aplique todas as restrições de volta à tabela original
fonte
Se as colunas a serem reordenadas tiverem sido criadas recentemente e estiverem vazias, então as colunas podem ser excluídas e adicionadas novamente na ordem correta.
Isso aconteceu comigo, estendendo um banco de dados manualmente para adicionar novas funcionalidades, e eu havia perdido uma coluna e, quando a adicionei, a sequência estava incorreta.
Depois de encontrar nenhuma solução adequada aqui, simplesmente corrigi a tabela usando o seguinte tipo de comandos.
Nota: só faça isso se você não tiver dados nas colunas que está descartando.
As pessoas disseram que a ordem das colunas não importa. Eu regularmente uso o SQL Server Management Studio para "gerar scripts" para criar uma versão de texto do esquema de um banco de dados. Para controlar de forma eficaz a versão desses scripts (git) e compará-los (WinMerge), é imperativo que a saída de bancos de dados compatíveis seja a mesma e as diferenças destacadas são diferenças genuínas de banco de dados.
A ordem das colunas é importante; mas apenas para algumas pessoas, não para todos!
fonte
Suponho que você deseja adicionar uma nova coluna em uma posição específica. Você pode criar uma nova coluna movendo as colunas atuais para a direita.
Remova todos os índices afetados e referências de chave estrangeira. Adicione uma nova coluna com exatamente o mesmo tipo de dados da última coluna e copie os dados para lá.
Altere o tipo de dados da terceira coluna para o mesmo tipo da coluna anterior e copie os dados para lá.
Renomeie colunas de acordo, recrie índices removidos e referências de chave estrangeira.
Altere o tipo de dados da segunda coluna.
Lembre-se de que a ordem das colunas é apenas uma coisa "cosmética", como marc_s disse .
fonte
Usar
que exibe a ordem padrão das colunas da tabela.
Se você deseja alterar a ordem das colunas.
Especifique o nome da coluna para exibir de forma correspondente
fonte
você pode usar a indexação .. Após a indexação, se selecionar * de XXXX os resultados devem estar de acordo com o índice, mas apenas o conjunto de resultados .. não estrutura da Tabela
fonte
Você pode alterar isso usando consulta SQL. Aqui está a consulta sql para alterar a sequência da coluna.
fonte
Para ter uma ordem de coluna específica, você precisa selecionar coluna por coluna na ordem que desejar. A ordem de seleção determina como as colunas serão ordenadas na saída.
fonte
Tente este comando:
Isso mudará a posição da idade para a primeira posição.
fonte
altere o nome da tabela modifique o nome da coluna int (5) primeiro; trará a coluna para primeiro alterar o nome da tabela modificar nome da coluna int (5) após (nome da tabela);
fonte
Exemplo: alterar a posição de field_priority após field_price no status da tabela.
fonte