Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Gibt es eine Möglichkeit, eine Spalte an einer bestimmten Position in der Oracle-Tabelle hinzuzufügen?

Es ist wirklich egal wo sich die Spalte physisch seit select befindet ermöglicht es Ihnen, die (logische) Reihenfolge anzugeben, in der sie abgerufen werden.

Und wenn Sie select * verwenden was Sie nicht die Reihenfolge angeben lässt, sollten Sie wahrscheinlich nicht sein. Es gibt wenige Situationen, in denen Sie das tun sollten (z. B. DB-Analyse-Tools). Meistens ist es besser, die gewünschten einzelnen Spalten auszuwählen, selbst wenn Sie alle möchten. Dadurch können Sie Schemaänderungen schnell erkennen und Ihre Programme daran anpassen.

In jedem Fall gibt SQL selbst keine Garantien für die Reihenfolge, in der Spalten zurückgegeben werden, es sei denn, Sie explizit liste sie auf. select * kann sie Ihnen heute in ordinaler Reihenfolge und morgen in alphabetischer Reihenfolge geben. Auch wenn eine bestimmte Implementierung es Ihnen erlaubt (indem Sie eine neue Tabelle mit der Spalte an der "richtigen" Stelle erstellen und die Daten hinüber kopieren oder eine SQL-Erweiterung wie alter table T insert column C1 before C2 ), würde ich davon abraten. Es wird nicht auf andere Implementierungen portierbar sein und ich ziehe es vor, meinen Code so portabel wie möglich zu haben.

Zusätzlich zu dem, was Sie in SQL angeben können, sollte ein DBMS in der Lage sein, wie vollständig zu steuern es speichert Daten. Es kann sein, dass Ihr Primärschlüssel aus der siebten und der zweiundvierzigsten Spalte zusammengesetzt ist und es möglicherweise effizienter ist, sie am Anfang der physischen Aufzeichnungen zu haben.