Frage

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

Ich don ' T wollen, um Durcheinander mit dem physischen layout der Spalten auf der Festplatte, aber ich würde gerne logisch gruppieren, Spalten zusammen, wenn möglich, so, dass tools wie SQL Server Management Studio-Liste den Inhalt der Tabelle in eine bequeme Weise.

Ich weiß, dass ich dies tun kann über SQL Management Studio, indem Sie in Ihren "design" - Modus für Tabellen und ziehen die Reihenfolge der Spalten um, aber ich möchte in der Lage sein, es zu tun in raw-SQL so, dass ich die Bestellung scripted von der Befehlszeile aus.

War es hilfreich?

Lösung

Sie können nicht tun dies programmgesteuert (in eine sichere Weise) ohne anlegen einer neuen Tabelle.

Was Enterprise-Manager tut, wenn Sie ein commit für eine Neuordnung, eine neue Tabelle erstellen, die Daten verschieben und löschen Sie dann die alte Tabelle und benennen Sie die neue Tabelle an den vorhandenen Namen.

Wenn Sie möchten, dass Ihre Spalten in einer bestimmten Reihenfolge/Gruppierung ohne änderung Ihrer physikalischen Reihenfolge, können Sie eine Ansicht erstellen, das kann alles sein, was Sie sich wünschen.

Andere Tipps

Ich denke, was jeder hier fehlt, ist, dass, obwohl nicht jeder zu kämpfen hat, mit 10 s, 20 s, oder 1000 Instanzen, die von der gleichen software-system installiert im ganzen Land und die Welt ...diejenigen von uns, die Gestaltung von kommerziell vertriebenen software tun.Als Ergebnis erweitern wir die Systeme im Laufe der Zeit, erweitern Sie Tabellen durch hinzufügen von Feldern, wie neue Funktion benötigt wird, und wie diese Felder gekennzeichnet sind, gehören in eine vorhandene Tabelle, und als solche, die über ein Jahrzehnt expandieren , zu wachsen, hinzufügen von Feldern, etc. zu Tabellen ....und dann, nachdem die Arbeit mit diesen Tabellen von der Konstruktion zu unterstützen, manchmal Graben in raw data/Problemlösung zum Debuggen neue Funktionalität bugs ....es ist unglaublich erschwerende nicht die primären Informationen, die Sie wollen, um zu sehen, innerhalb der ersten Handvoll Felder, wenn Sie können Tabellen mit 30-40-50 oder sogar 90 Felder und ja, in einer streng normierten Datenbank.

Ich habe mir oft wünschte, ich könnte dies tun, für diesen genauen Grund.Aber kurz tut genau das, was SQL, Gebäude ein Skript Erstellen für Sie einen neuen Tisch, wie ich es möchte, schreiben Einfügen zu, dann fallen alle vorhandenen Einschränkungen, Beziehungen, Schlüssel, index, etc etc etc aus der vorhandenen Tabelle und die Umbenennung der "neuen" Tabelle wieder auf den alten Namen, und dann Lesen Sie diese Schlüssel, 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, die enorme Menge an Arbeit, aber der Punkt ist, ...es wird nicht das Letzte mal, als wir brauchen diese Fähigkeit, da unsere Systeme wird weiterhin zu wachsen, zu expandieren, und erhalten Sie Felder in einer wacked bestellt driven by need/design-Ergänzungen.

Eine Mehrheit der Entwickler denkt, dass von einem einzigen system aus Sicht dient ein einzelnes Unternehmen oder eine sehr spezifische hard-box-Markt.

Die "off-the-shelf" aber deutlich progressiver Gestalter und Führer in der Entwicklung der Markt wird immer haben, um mit diesem problem umzugehen, über und über.....würde gerne eine kreative Lösung, wenn jemand hat eine.Dies könnte leicht speichern Sie meine Firma ein Dutzend Stunden in der Woche, nur nicht mit zu Blättern, oder sich merken, wo "das Feld ist die Quelle der Daten-Tabelle....

Wenn ich Ihre Frage verstehe, möchten Sie, zu beeinflussen, welche Spalten zurückgegeben werden erste, zweite, Dritte, usw. vorhandenen Abfragen, richtig?

Wenn alle Ihre Abfragen geschrieben werden, mit SELECT * FROM TABLE - dann werden Sie zeigen, bis in der Ausgabe, wie Sie ausgelegt sind, in SQL.

Wenn Ihre Abfragen geschrieben werden, mit SELECT Field1, Field2 FROM TABLE - dann die Reihenfolge festgelegt, die in SQL nicht so wichtig.

Wenn das Management Studio wird es erstellt eine temporäre Tabelle kopieren alles über, ließ Ihre ursprüngliche Tabelle und umbenennen der temporären Tabelle.Es gibt keine einfache Entsprechung T-SQL-Anweisung.

Wenn Sie nicht gerne tun, dann könnte man immer einen Blick auf die Tabelle mit den Spalten in der Reihenfolge, die Sie möchten, und nutzen?

Edit:geschlagen!!!

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

Können sagen, Sie haben 5 Tabellen.Tabelle aufgerufen wird T_Testing

FirstName, LastName, PhoneNumber, Email, und Member_ID

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

Sie können es tun, wie pro die Sie Wählen.

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

Andere als, dass, wenn Sie einfach nur wollen, dass der Nachname vor Vorname für einige Grund, Sie können es auch tun Sie wie folgt vor:

Select LastName, *
From T_Testing

Die einzige Sache, die Sie wollen sicher sein, dass Sie tun, ist, dass die OrderBy-oder Wo die Funktion muss geschrieben werden als Tabelle.Spalte wenn Sie verwenden ein, Wo und OrderBy -

Beispiel:

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

Ich hoffe, das hilft, ich habe es herausgefunden, weil ich brauchte, um diese selbst tun.

  1. Script Ihrem vorhandenen Tabelle eine Abfrage-Fenster.
  2. Führen Sie dieses Skript für eine Test-Datenbank (entfernen Sie die Use-Anweisung)
  3. Verwenden Sie SSMS, um die Spalte änderungen, die Sie benötigen
  4. Klicken Sie auf " Generate Change Script (Links und unten-Symbol auf dem buttonbar, durch Standard)
  5. Verwenden Sie dieses Skript für Ihre realen Tisch

All das Skript wirklich tut, ist erstellen Sie eine zweite Tabelle mit den gewünschten Spalten Bestellungen, kopiert alle Ihre Daten in es, Tropfen Sie die ursprüngliche Tabelle und dann in der sekundären Tabelle, um Ihren Platz einzunehmen.Dies bedeutet, sparen Sie schreiben es selbst aber sollten Sie möchten, dass ein Skript bereitstellen.

Es kann getan werden, mithilfe von SQL durch änderung der system-Tabellen direkt.Zum Beispiel, schauen Sie hier:

Alter table - neue Spalte Hinzufügen in zwischen

Allerdings würde ich nicht empfehlen, das spielen mit system-Tabellen, es sei denn, es ist unbedingt erforderlich.

Es ist nicht möglich, ändern Sie die Reihenfolge der Spalten ohne Neuerstellen die gesamte Tabelle.Wenn Sie ein paar Instanzen der Datenbank, können Sie mit SSMS für diese (Wählen Sie die Tabelle aus, und klicken Sie auf "design").

In Fall, Sie haben zu viele Instanzen für ein manueller Prozess ist, sollten Sie versuchen, dieses Skript:https://github.com/Epaminaidos/reorder-columns

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top