Kann ich Spalten in einer Tabelle logisch neu anordnen?

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

    I Ich möchte mich nicht mit dem physischen Layout der Spalten auf der Festplatte beschäftigen, aber ich möchte Spalten logisch zusammenfassen, wenn dies möglich ist, sodass Tools wie SQL Server Management Studio den Inhalt der Tabelle auf eine bequeme Weise auflisten.

    Ich weiß, dass ich dies über SQL Management Studio tun kann, indem ich in den "Design" -Modus für Tabellen gehe und die Reihenfolge der Spalten herumziehe, aber ich möchte es in der Lage sein, es in Raw zu machen SQL, damit ich die Bestellung über die Befehlszeile ausführen kann.

    09 October 2008
    ConcernedOfTunbridgeWells
8 answers
  • Sie können dies nicht programmgesteuert (auf eine sichere Art und Weise) tun, ohne eine neue Tabelle zu erstellen.

    Beim Festschreiben einer Neuordnung erstellt Enterprise Manager eine neue Tabelle, verschiebt die Daten, löscht die alte Tabelle und benennt die neue Tabelle in den vorhandenen Namen um.

    Wenn Sie möchten, dass Ihre Spalten in einer bestimmten Reihenfolge / Gruppierung angezeigt werden, ohne ihre physische Reihenfolge zu ändern, können Sie eine Ansicht erstellen, die beliebig sein kann.

    05 August 2008
    vzczc
  • Ich denke, was hier fehlt, ist, dass zwar nicht jeder mit den Instanzen von 10, 20 oder 1000 des gleichen Softwaresystems zu tun hat, das im ganzen Land und auf der ganzen Welt installiert ist verkaufte Software tut dies. Daher erweitern wir die Systeme im Laufe der Zeit, erweitern die Tabellen durch das Hinzufügen von Feldern, da neue Funktionen erforderlich sind. Da diese Felder identifiziert werden, gehören sie zu einer vorhandenen Tabelle, und damit über ein Jahrzehnt des Expandierens, Anwachsens, Hinzufügen von Feldern usw. zu Tabellen .... und dann müssen Sie mit diesen Tabellen vom Design bis zur Unterstützung arbeiten, manchmal auch in Rohdaten / Fehlerbehebung, um neue Funktionsfehler zu debuggen. Es ist unglaublich erschütternd, dass Sie nicht die primären Informationen haben, die Sie möchten In der ersten Handvoll Felder sehen Sie, wann Sie möglicherweise Tabellen mit 30-40-50 oder sogar 90 Feldern und ja in einer streng normalisierten Datenbank haben.

    Ich habe mir oft gewünscht, dass ich könnte dies aus genau diesem Grund tun. Kurz gesagt, genau das, was SQL tut, Erstellen eines Skripts für eine neue Tabelle nach meinen Wünschen, Schreiben der Einfügung, Löschen aller vorhandenen Einschränkungen, Beziehungen, Schlüssel, Indizes usw. aus der vorhandenen Tabelle und Umbenennen die "neue" Tabelle wieder auf den alten Namen und dann das Lesen all dieser Schlüssel, Beziehungen, Index usw. usw ....

    Ist nicht nur langwierig, zeitaufwendig, sondern ... in fünf weiteren Jahren wird es wieder passieren müssen ...

    Es ist so viel wert, dass es eine enorme Menge an Arbeit ist, aber der Punkt ist ... es hat gewonnen Dies ist nicht das letzte Mal, dass wir diese Fähigkeit benötigen, da unsere Systeme weiter wachsen, expandieren und Felder in einem verrückten, geordneten Bereich erhalten, der von den erforderlichen Ergänzungen und Designergänzungen gesteuert wird.

    Eine Mehrheit der Entwickler denken von einem einzigen Systemstandpunkt aus, der ein einzelnes Unternehmen oder einen sehr spezifischen Markt für Hard-Box-Produkte bedient.

    Die "Standardprodukte", aber deutlich fortschrittliche Designer und Entwicklungsleiter in ihr Marktraum wird sich immer damit beschäftigen müssen diese

    01 February 2013
    demongolemPavel
  • Wenn ich Ihre Frage verstehe, möchten Sie beeinflussen, welche Spalten als erste, zweite, dritte usw. in vorhandenen Abfragen zurückgegeben werden, oder?

    Wenn alle Ihre Abfragen mit SELECT * FROM TABLE geschrieben werden, werden sie in der Ausgabe angezeigt, wie sie in SQL angeordnet sind.

    Wenn Ihre Abfragen mit SELECT Field1, Field2 FROM TABLE geschrieben werden, spielt die Reihenfolge in SQL keine Rolle.

    10 May 2018
    N00b Pr0grammerp3t0r
  • Dies kann mithilfe von SQL durchgeführt werden, indem die Systemtabellen direkt geändert werden. Beispiel:

    Tabelle ändern - Neue Spalte dazwischen hinzufügen

    Ich würde jedoch nicht empfehlen, mit Systemtabellen zu spielen, es sei denn, dies ist absolut notwendig.

    27 January 2013
    Milan Babuškov
  • Bei der Erstellung von Management Studio wird eine temporäre Tabelle erstellt, alles kopiert, die ursprüngliche Tabelle wird gelöscht und die temporäre Tabelle umbenannt. Es gibt keine einfache gleichwertige T-SQL-Anweisung.

    Wenn Sie das nicht möchten, können Sie immer eine Ansicht der Tabelle mit den Spalten in der gewünschten Reihenfolge erstellen und verwenden Sie das?

    Bearbeiten: geschlagen!

    05 August 2008
    tags2k
  • Es gibt eine Möglichkeit, aber nur vorübergehend für die Abfrage selbst. Zum Beispiel:

    Nehmen wir an, Sie haben 5 Tabellen. Tabelle heißt T_Testing

    Vorname, Nachname, Telefonnummer, E-Mail-Adresse und Member_ID

    die Liste Ihre ID, dann Nachname, dann Vorname, dann Telefon, dann E-Mail.

    Sie können dies gemäß der Auswahl tun.

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

    Wenn Sie möchten, dass LastName aus irgendeinem Grund nur vor dem ersten Namen angezeigt wird, können Sie dies tun tun Sie es auch wie folgt:

     Select LastName, *
    From T_Testing
     

    Das einzige, was Sie sicher sein wollen, ist, dass Sie den OrderBy oder Where-Funktion muss als Table.Column bezeichnet werden, wenn Sie ein Where oder OrderBy verwenden möchten.

    Beispiel:

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

    Ich hoffe, das hilft, ich habe es herausgefunden, weil ich das selbst machen musste.

    07 February 2016
    Markus SafarMHop
    1. Scriptieren Sie Ihre vorhandene Tabelle in ein Abfragefenster.
    2. Führen Sie dieses Skript für eine Testdatenbank aus (entfernen Sie die Use-Anweisung)
    3. Verwenden Sie SSMS, um die gewünschten Spaltenänderungen vorzunehmen.
    4. Klicken Sie auf Änderungsskript generieren (meist links und unterste Symbol auf der -Schaltfläche standardmäßig)
    5. Verwenden Sie dieses Skript für Ihre echte Tabelle.

    Das Skript erstellt lediglich eine zweite Tabelle mit den gewünschten Spaltenreihenfolgen, kopiert alle Ihre Daten in das Objekt, löscht die ursprüngliche Tabelle und benennt dann die sekundäre Tabelle um, um ihren Platz einzunehmen. Dies erspart Ihnen jedoch das Schreiben selbst, wenn Sie ein Implementierungsskript benötigen.

    08 March 2016
    Paul
  • Es ist nicht möglich, die Reihenfolge der Spalten zu ändern, ohne die gesamte Tabelle neu zu erstellen. Wenn Sie nur über wenige Instanzen der Datenbank verfügen, können Sie SSMS dafür verwenden (Wählen Sie die Tabelle aus und klicken Sie auf "Design").

    Falls Sie zu viele Instanzen für eine Datenbank haben Wenn Sie den Prozess manuell durchführen, sollten Sie folgendes Skript ausprobieren: https://github.com/Epaminaidos/reorder-columns

    03 September 2016
    Andreas