Kann ich logisch Spalten in einer Tabelle neu anordnen?

stimmen
77

Wenn ich eine Spalte in einer Tabelle in Microsoft SQL Server hinzufügen, kann ich steuern, wo die Spalte logisch in Abfragen angezeigt wird?

Ich will nicht mit dem physikalischen Layout von Spalten auf der Festplatte zu verwirren, aber ich würde gerne zusammen logisch Gruppe Spalten, wenn möglich, so dass Tools wie SQL Server Management Studio den Inhalt der Tabelle auf bequeme Weise auflisten.

Ich weiß, dass ich für Tabellen, indem Sie in ihren „Entwurf“ -Modus dies durch SQL Management Studio tun kann, und die Reihenfolge der Spalten ziehen sich um, aber ich möchte in der Lage sein, es in rohen SQL zu tun, so dass ich die Bestellung durchführen kann von der Befehlszeile Skript.

Veröffentlicht am 04/08/2008 um 22:37
quelle vom benutzer
In anderen Sprachen...                            


8 antworten

stimmen
61

Sie können diese programmatisch nicht tun (in einer sicheren Art und Weise, das ist), ohne eine neue Tabelle erstellt.

Was Enterprise Manager tut, wenn Sie eine Umordnung begehen ist, eine neue Tabelle zu erstellen, die Daten verschieben und dann die alte Tabelle löschen und die neue Tabelle auf den vorhandenen Namen umbenennen.

Wenn Sie Ihre Spalten in einer bestimmten Reihenfolge / Gruppierung wollen, ohne ihre physische Reihenfolge zu verändern, können Sie eine Ansicht erstellen, die sein kann, was auch immer Sie wünschen.

Beantwortet am 04/08/2008 um 22:54
quelle vom benutzer

stimmen
35

Ich denke, was jeder hier fehlt, ist, dass, obwohl nicht jeder hat mit 10er, 20er oder 1000 Instanzen des gleichen Software-System im ganzen Land und Welt ... die von uns, dass Design im Handel verkauften Software tun so installiert beschäftigen. Als Ergebnis erweitern wir Systeme im Laufe der Zeit, erweitern Sie Tabellen durch Hinzufügen von Feldern als neue Funktion benötigt wird, und wie diese Felder identifiziert werden in einer vorhandenen Tabelle gehören, und als solche mehr als ein Jahrzehnt expandieren, zu wachsen, Hinzufügen von Feldern, etc. in den Tabellen .... und mit dann mit diesen Tabellen von Design zu arbeiten, zu unterstützen, in Rohdaten / Fehlerbehebung manchmal gräbt neue Funktionen Fehler zu debuggen .... es ist unglaublich ärgerlich nicht die primären Informationen, die Sie haben möchten, siehe innerhalb der ersten paar Felder, wenn Sie Tabellen mit 30-40-50 oder sogar 90 Feldern und ja in einer streng normierte Datenbank haben.

Ich habe oft gewünscht, ich könnte dies tun, für diesen genauen Grund. Aber kurz genau zu tun, was SQL tut, den Aufbau einer Script erstellen für eine neue Tabelle so, wie ich es möchte, schreiben einfügen, um es, dann fallen alle bestehenden Einschränkungen, Beziehungen, Schlüssel, Index, etc etc etc aus der vorhandenen Tabelle und Umbenennung die „neue“ Tabelle auf den alten Namen zurück, und dann liest alle diejenigen Tasten, Beziehungen, Index, etc etc ....

Ist nicht nur mühsam, zeitaufwendig, aber ... in fünf Jahren, müssen wieder passieren ....

Es ist so nah an wert, dass enorme Menge an Arbeit, aber der Punkt ist, ... es wird nicht das letzte Mal, dass wir diese Fähigkeit benötigen, da unsere Systeme weiter wachsen werden, erweitern, und erhalten Sie Felder in einem durch angetriebenes Wacked bestellt Bedarf / Design Ergänzungen.

Eine Mehrheit der Entwickler denkt von einem einzigen System Standpunkt, dass ein einzelnes Unternehmen oder sehr spezifischen Hardbox Markt dient.

Die „off-the-shelf“ aber deutlich progressive Designer und Leiter der Entwicklung in ihrem Marktraum müssen immer mit diesem Problem umzugehen, immer und immer wieder ..... würden eine kreative Lösung lieben, wenn jemand eine hat. Dies könnte mein Unternehmen ein Dutzend Stunden pro Woche leicht sparen, nur nicht zu scrollen hat oder daran erinnern, wo „die“ Feld in der Quelldatentabelle ....

Beantwortet am 01/02/2013 um 01:10
quelle vom benutzer

stimmen
5

Wenn ich Ihre Frage verstehen, wollen Sie beeinflussen , welche Spalten zuerst zurückgegeben werden, zweiten, dritten, etc. in bestehende Abfragen, nicht wahr?

Wenn alle Ihre Anfragen mit geschrieben werden SELECT * FROM TABLE- dann werden sie in der Ausgabe erscheinen , wie sie in SQL angelegt sind.

Wenn Ihre Abfragen geschrieben werden mit SELECT Field1, Field2 FROM TABLE- dann ist die Reihenfolge , wie sie in SQL gelegt werden spielt keine Rolle.

Beantwortet am 06/08/2008 um 16:42
quelle vom benutzer

stimmen
1
  1. Script Ihrer vorhandene Tabelle in ein Abfragefenster.
  2. Führen Sie dieses Skript für eine Testdatenbank (entfernen Sie die USE-Anweisung)
  3. Verwenden Sie SSMS die Spalte zu machen Änderungen, die Sie brauchen
  4. Klicken Sie auf Generieren Change Script (am weitesten links stehende und zuunterst Symbol auf dem buttonbar standardmäßig aktiviert)
  5. Verwenden Sie dieses Skript für Ihre realen Tisch

All das Skript wirklich tut, ist eine zweite Tabelle Tabelle erstellen mit den gewünschten Spalte Aufträgen, Kopien aller Daten hinein, fällt die ursprüngliche Tabelle und benennt dann die Sekundärtabelle seinen Platz zu nehmen. Dies speichern Sie das Schreiben selbst, obwohl sollten Sie eine deploy Skript möchten.

Beantwortet am 08/03/2016 um 14:31
quelle vom benutzer

stimmen
1

Es gibt einen Weg, aber es ist nur vorübergehend für die Abfrage selbst. Beispielsweise,

Lassen Sie uns sagen Sie 5 Tische haben. Tabelle aufgerufenT_Testing

Vorname, Nachname, Phone, E-Mail und member_id

Sie wollen, dass es ihre ID-Liste, dann Nachname, dann Vorname, dann Telefon dann per E-Mail.

Sie können es als pro Select tun.

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

Other than that, wenn Sie nur den Namen VZ wollen aus irgendeinem Grunde vor dem Vornamen zeigen, können Sie es auch tun, wie folgt:

Select LastName, *
From T_Testing

Das einzige, was Sie wollen sicher sein, dass Sie tun, ist, dass die OrderBy oder Wo Funktion wird bezeichnet als table.column benötigt, wenn Sie eine Wo oder SortiertNach gehen zu verwenden

Beispiel:

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

Ich hoffe, das hilft, ich es herausgefunden, weil ich brauchte dies selbst zu tun.

Beantwortet am 06/11/2014 um 18:08
quelle vom benutzer

stimmen
1

Es kann unter Verwendung von SQL getan werden, indem sie direkt die Systemtabellen zu ändern. Zum Beispiel hier:

Alt table - Hinzufügen neue Spalte zwischen

Allerdings würde ich nicht mit Systemtabellen spielen empfehlen, wenn es absolut notwendig ist.

Beantwortet am 05/10/2008 um 21:34
quelle vom benutzer

stimmen
1

Wenn Management Studio es tut, ist es eine temporäre Tabelle erstellen, kopiert alles über Ihre ursprüngliche Tabelle löschen und die temporäre Tabelle umbenennen. Es gibt keine einfache äquivalente T-SQL-Anweisung.

Wenn Sie keine Lust, das zu tun, könnte man immer einen Blick auf die Tabelle mit den Spalten in der Reihenfolge erstellen Sie möchten und verwenden?

Edit: geschlagen!

Beantwortet am 04/08/2008 um 23:00
quelle vom benutzer

stimmen
0

Es ist nicht möglich, die Reihenfolge der Spalten zu ändern, ohne die gesamte Tabelle neu zu erstellen. Wenn Sie ein paar Instanzen der Datenbank nur haben, können Sie SSMS dafür verwenden (die Tabelle auswählen und „Design“).

Falls Sie für einen manuellen Prozess zu viele Fälle haben, sollten Sie dieses Skript versuchen: https://github.com/Epaminaidos/reorder-columns

Beantwortet am 03/09/2016 um 10:56
quelle vom benutzer

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