Comment modifier l'ordre des colonnes dans une table à l'aide d'une requête SQL dans SQL Server 2005?
Je souhaite réorganiser l'ordre des colonnes dans une table à l'aide d'une requête SQL.
sql
sql-server-2005
Himadri
la source
la source
Réponses:
Vous ne pouvez pas. L'ordre des colonnes est juste une chose «cosmétique» dont les humains se soucient - pour SQL Server, il est presque toujours absolument hors de propos.
Ce que SQL Server Management Studio fait en arrière-plan lorsque vous modifiez l'ordre des colonnes, recrée la table à partir de zéro avec une nouvelle
CREATE TABLE
commande, copie les données de l'ancienne table, puis la supprime.Il n'y a pas de commande SQL pour définir l'ordre des colonnes.
la source
INSERT
sans spécifier explicitement vos colonnes de toute façon!Vous devez répertorier explicitement les champs dans l'ordre dans lequel vous souhaitez qu'ils soient renvoyés au lieu d'utiliser * pour l'ordre «par défaut».
requête d'origine:
Retour
maintenant écris
la source
selon http://msdn.microsoft.com/en-us/library/aa337556.aspx
Eh bien, cela peut être fait, en utilisant
create
/ copy /drop
/ rename, comme répondu par komma8.komma1Ou vous pouvez utiliser SQL Server Management Studio
Cliquez ensuite sur Enregistrer. Cette méthode supprime et recrée la table, de sorte que des erreurs peuvent survenir.
Si l' option de suivi des modifications est activée pour la base de données et la table, vous ne devez pas utiliser cette méthode.
Si elle est désactivée, l' option Empêcher l'enregistrement des modifications nécessitant la recréation de la table doit être désactivée dans le menu Outils> Options> Concepteurs, sinon l' erreur «L'enregistrement des modifications n'est pas autorisé» se produira.
Des problèmes peuvent également survenir lors de la création de clés primaires et étrangères.
Si l'une des erreurs ci-dessus se produit, l'enregistrement échoue, ce qui vous laisse avec l'ordre d'origine des colonnes.
la source
This task cannot be performed using Transact-SQL statements.
" dans le document était erronée. J'ai expliqué l'auteur et lui ai demandé de le changer en "This task is not supported using Transact-SQL statements.
". Il y a environ un jour, l'auteur a accepté et le document a été corrigé. Vous pouvez suivre la discussion que nous avons eue sur GitHub .Ceci est similaire à la question sur l'ordre des enregistrements dans le résultat d'une requête .. et généralement personne n'aime la réponse formellement correcte ;-)
Alors voilà:
select *
ne force pas le renvoi des colonnes dans un ordre particuliercreate table' or in the
instructions alter table add `la source
Vous pouvez bien sûr modifier l'ordre des colonnes dans une instruction SQL. Cependant, si vous souhaitez abstraire l'ordre des colonnes physiques des tables, vous pouvez créer une vue. c'est à dire
la source
Dans SQLServer Management Studio:
Outils -> Options -> Concepteurs -> Concepteurs de tables et de bases de données
Ensuite:
SQLServer Management Studio supprimera la table et la recréera à l'aide des données.
la source
Vous pouvez le faire en créant une nouvelle table, en copiant toutes les données, en supprimant l'ancienne table, puis en renommant la nouvelle pour remplacer l'ancienne.
Vous pouvez également ajouter de nouvelles colonnes à la table, copier les données colonne par colonne, supprimer les anciennes colonnes, puis renommer les nouvelles colonnes pour qu'elles correspondent aux anciennes. Un exemple simple ci-dessous: http://sqlfiddle.com/#!3/67af4/1
la source
Dans SQLServer Management Studio:
Tools
->Options
->Designers
->Table and Database Designers
Désélectionner
Prevent saving changes that require table re-creation
.Vous pouvez maintenant réorganiser la table.
la source
Le serveur SQL crée le script en interne. Il crée une table temporaire avec de nouvelles modifications et copie les données et supprime la table actuelle, puis recrée l'insertion de table à partir de la table temporaire. Je le trouve dans l'option "Générer le script de changement" ssms 2014. Script comme celui-ci. À partir de là: Comment modifier l'ordre des colonnes dans une table à l'aide d'une requête SQL
la source
Si votre table contient suffisamment de colonnes, vous pouvez essayer ceci. Créez d'abord une nouvelle table avec l'ordre des colonnes préféré.
Maintenant, supprimez la table à l'aide de la commande drop
renommez maintenant la table nouvellement créée avec votre ancien nom de table.
maintenant, sélectionnez le tableau, vous avez vos colonnes réorganisées comme vous le souhaitiez auparavant.
la source
À la fin de la journée, vous ne pouvez tout simplement pas faire cela dans MS SQL. J'ai récemment créé des tables sur le pouce (démarrage de l'application) à l'aide d'une procédure stockée qui lit à partir d'une table de recherche. Lorsque j'ai créé une vue qui les combinait avec une autre table que j'avais créée manuellement plus tôt (même schéma, avec des données), cela a échoué - simplement parce que j'utilisais `` Select * UNION Select * '' pour la vue. En même temps, si j'utilise uniquement ceux créés via la procédure stockée, je réussis.
En conclusion: s'il y a une application qui dépend de l'ordre de la colonne, ce n'est vraiment pas une bonne programmation et cela créera certainement des problèmes à l'avenir. Les colonnes doivent «se sentir» libres d'être n'importe où et être utilisées pour n'importe quel processus de données (INSERT, UPDATE, SELECT).
la source
Vous pouvez y parvenir avec ces étapes:
supprimez toutes les clés étrangères et la clé primaire de la table d'origine.
renommer la table d'origine.
à l'aide de CTAS, créez la table d'origine dans l'ordre souhaité.
laissez tomber l'ancienne table.
appliquer toutes les contraintes à la table d'origine
la source
Si les colonnes à réorganiser ont été créées récemment et sont vides, les colonnes peuvent être supprimées et ajoutées de nouveau dans le bon ordre.
Cela m'est arrivé, en étendant manuellement une base de données pour ajouter de nouvelles fonctionnalités, et j'avais manqué une colonne, et quand je l'ai ajoutée, la séquence était incorrecte.
Après n'avoir trouvé aucune solution adéquate ici, j'ai simplement corrigé le tableau en utilisant le type de commandes suivant.
Remarque: ne faites cela que si vous n'avez pas de données dans les colonnes que vous supprimez.
Les gens ont dit que l'ordre des colonnes n'avait pas d'importance. J'utilise régulièrement SQL Server Management Studio "générer des scripts" pour créer une version texte du schéma d'une base de données. Pour contrôler efficacement la version de ces scripts (git) et les comparer (WinMerge), il est impératif que la sortie des bases de données compatibles soit la même, et les différences mises en évidence sont de véritables différences de base de données.
L'ordre des colonnes est important; mais juste pour certaines personnes, pas pour tout le monde!
la source
Je suppose que vous souhaitez ajouter une nouvelle colonne dans une position spécifique. Vous pouvez créer une nouvelle colonne en déplaçant les colonnes actuelles vers la droite.
Supprimez tous les index et références de clé étrangère affectés. Ajoutez une nouvelle colonne avec exactement le même type de données que la dernière colonne et copiez-y les données.
Remplacez le type de données de la troisième colonne par le même type que la colonne précédente et copiez-y les données.
Renommez les colonnes en conséquence, recréez les index supprimés et les références de clé étrangère.
Modifiez le type de données de la deuxième colonne.
Gardez à l'esprit que l'ordre des colonnes n'est qu'une chose "cosmétique" comme l' a dit marc_s .
la source
Utilisation
qui affiche l'ordre des colonnes par défaut du tableau.
Si vous souhaitez modifier l'ordre des colonnes.
Spécifiez le nom de la colonne à afficher en conséquence
la source
vous pouvez utiliser l'indexation. Après l'indexation, si sélectionnez * à partir de XXXX, les résultats doivent être conformes à l'index, mais uniquement l'ensemble de résultats .. pas la structure de la table
la source
Vous pouvez modifier cela à l'aide d'une requête SQL. Voici une requête SQL pour changer la séquence de la colonne.
la source
Afin d'avoir un ordre de colonne spécifique, vous devez sélectionner colonne par colonne dans l'ordre que vous souhaitez. L'ordre de sélection dicte la façon dont les colonnes seront classées dans la sortie.
la source
Essayez cette commande:
Cela changera la position de l'âge à la première position.
la source
modifier le nom de la table modifier le nom de la colonne int (5) en premier; amènera la colonne au premier nom de la table modifier le nom de la colonne int (5) après (nomtable);
la source
Exemple: Changez la position de field_priority après field_price dans l'état de la table.
la source