Puis-je modifier l'ordre logique des colonnes dans un tableau?

voix
77

Si j'ajoute une colonne à une table dans Microsoft SQL Server, puis-je contrôler où la colonne apparaît logiquement dans les requêtes?

Je ne veux pas salir avec la disposition physique des colonnes sur le disque, mais je voudrais logiquement grouper les colonnes ensemble lorsque cela est possible afin que des outils tels que la liste SQL Server Management Studio le contenu de la table d'une façon pratique.

Je sais que je peux le faire grâce à SQL Management Studio en allant dans leur mode « design » pour les tables et en faisant glisser l'ordre des colonnes autour, mais je voudrais être en mesure de le faire dans SQL brute afin que je puisse effectuer la commande scriptée à partir de la ligne de commande.

Créé 04/08/2008 à 22:37
source utilisateur
Dans d'autres langues...                            


8 réponses

voix
61

Vous ne pouvez pas le faire programatically (de manière sûre qui est) sans créer une nouvelle table.

Qu'est-ce que Enterprise Manager fait lorsque vous vous engagez une remise en ordre est de créer une nouvelle table, déplacer les données, puis supprimez l'ancienne table et renommer la nouvelle table au nom existant.

Si vous voulez que vos colonnes dans un ordre particulier / groupe sans modifier leur ordre physique, vous pouvez créer une vue qui peut être tout ce que vous désirez.

Créé 04/08/2008 à 22:54
source utilisateur

voix
35

Je pense que tout le monde ici manque, est que, bien que pas tout le monde doit faire face à 10 années, entre 20, ou les instances de 1000 du même système de logiciel installé dans tout le pays et dans le monde ... ceux d'entre nous que la conception de logiciels vendus dans le commerce le faire. Par conséquent, nous élargissons les systèmes au fil du temps, développez tables en ajoutant des champs comme nouvelle capacité est nécessaire, et que ces champs sont identifiés appartenons à une table existante, et en tant que telle, plus d'une décennie d'expansion, de plus en plus, l'ajout de champs, etc. aux tables .... et puis d'avoir à travailler avec les tables de la conception, pour soutenir, à creuser parfois en données brutes / dépannage pour déboguer nouveaux bugs fonctionnalité .... il est incroyablement aggravante de ne pas avoir l'information principale que vous voulez voir dans la première poignée de champs, quand vous pouvez avoir des tables avec 30-40-50 ou même 90 champs et oui dans une base de données strictement normalisée.

Je l'ai souvent je voulais pouvait le faire, pour cette raison exacte. Mais à court de faire exactement ce que SQL fait, Construire un script de création d'une nouvelle table comme je le veux, écrit l'insert, puis laisser tomber toutes les contraintes existantes, les relations, les clés, index, etc etc etc de la table existante et renommage la « nouvelle » table de retour à l'ancien nom, puis lire toutes les clés, les relations, index, etc etc ....

Est non seulement fastidieux, beaucoup de temps, mais ... en cinq années, devra se passer de nouveau ....

Il est si proche de la valeur que énorme quantité de travail, mais le point est ... il ne sera pas la dernière fois que nous avons besoin de cette capacité, puisque nos systèmes vont continuer à croître, se développer, et d'obtenir des champs dans un wacked ordonné conduit par ajouts besoin / design.

La majorité des développeurs pensent à partir d'un seul point de vue du système qui sert une seule entreprise ou sur le marché de la boîte dure très spécifique.

Le « off-the-shelf », mais les concepteurs beaucoup progressistes et leaders du développement dans leur espace de marché devra toujours faire face à ce problème, encore et ..... aimerait une solution créative, si quelqu'un a un. Cela pourrait facilement sauver ma compagnie d'une douzaine d'heures par semaine, mais pas avoir à faire défiler plus, ou de se rappeler où « que » champ est dans la table de données source ....

Créé 01/02/2013 à 01:10
source utilisateur

voix
5

Si je comprends bien votre question, vous voulez affecter les colonnes sont retournés en premier, deuxième, troisième, etc dans existants requêtes, non?

Si toutes vos requêtes sont écrites avec SELECT * FROM TABLE- alors ils apparaissent dans la sortie comme ils sont disposés dans SQL.

Si vos requêtes sont écrites avec SELECT Field1, Field2 FROM TABLE- alors l'ordre dans lequel ils sont disposés dans SQL n'a pas d' importance.

Créé 06/08/2008 à 16:42
source utilisateur

voix
1
  1. Script de votre table existante à une fenêtre de requête.
  2. Exécutez ce script sur une base de données de test (supprimer l'instruction utilisation)
  3. Utilisez SSMS pour faire la colonne change besoin
  4. Cliquez sur Générer le changement de script (gauche icône plus et sur la barre de boutons plus basse, par défaut)
  5. Utilisez ce script sur votre table réelle

Tout le script n'est vraiment créer une deuxième table de table avec les commandes de colonne souhaitées, copie toutes vos données en elle, laisse tomber la table d'origine et puis renomme la table secondaire pour prendre sa place. Cela ne vous sauve d'écrire vous-même si vous voulez bien un script de déploiement.

Créé 08/03/2016 à 14:31
source utilisateur

voix
1

Il y a une façon, mais ce que temporairement pour la requête elle-même. Par exemple,

Disons que vous avez 5 tables. Le tableau est appeléT_Testing

FirstName, LastName, téléphone, email et MEMBER_ID

vous voulez la liste leur carte d'identité, puis Nom, puis FirstName, puis Téléphone puis Email.

Vous pouvez le faire comme par le Select.

Select Member_ID, LastName, FirstName, PhoneNumber, Email
From T_Testing

Autre que cela, si vous voulez juste LastName à afficher avant le premier nom pour une raison quelconque, vous pouvez le faire aussi comme suit:

Select LastName, *
From T_Testing

La seule chose que vous voulez être sûr que vous faites est que le OrderBy ou où la fonction doit être notée Table.colonne si vous allez utiliser un ou OrderBy Où

Exemple:

Select LastName, *
From T_Testing
Order By T_Testing.LastName Desc

J'espère que cette aide, je pensais que ce parce que je devais faire moi-même.

Créé 06/11/2014 à 18:08
source utilisateur

voix
1

Il peut être fait en utilisant SQL, en modifiant les tables système. Par exemple, regardez ici:

alter table - Ajouter une nouvelle colonne entre

Cependant, je ne recommanderais pas jouer avec les tables système, à moins qu'il ne soit absolument nécessaire.

Créé 05/10/2008 à 21:34
source utilisateur

voix
1

Lorsque Management Studio fait, il est la création d'une table temporaire, copie tout sur, laissant tomber votre table d'origine et de renommer la table temporaire. Il n'y a pas simple, instruction T-SQL équivalent.

Si vous ne croyez pas le faire, vous pouvez toujours créer une vue de la table avec les colonnes dans l'ordre que vous souhaitez et l'utiliser?

Edit: battu!

Créé 04/08/2008 à 23:00
source utilisateur

voix
0

Il est impossible de changer l'ordre des colonnes sans recréer la table. Si vous avez quelques instances de la base de données uniquement, vous pouvez utiliser SSMS pour cette (Sélectionnez la table et cliquez sur « design »).

Si vous avez trop de cas pour un processus manuel, vous devriez essayer ce script: https://github.com/Epaminaidos/reorder-columns

Créé 03/09/2016 à 10:56
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more