sql >> Database teknologi >  >> RDS >> Oracle

Er der en måde at tilføje kolonne på en bestemt position i Oracle-tabellen?

Det er virkelig ligegyldigt hvor kolonnen er fysisk siden select giver dig mulighed for at angive den rækkefølge (logisk), hvori de hentes.

Og hvis du bruger vælg * som ikke lader dig specificere rækkefølgen, det burde du nok ikke være. Der er dyrebare få situationer, hvor du bør gøre det (DB-analyseværktøjer, for eksempel), det meste af tiden er det bedre at vælge de enkelte kolonner, du ønsker, selvom du vil have dem alle. Dette giver dig mulighed for hurtigt at fange skemaændringer, så du kan tilpasse dine programmer til dem.

Under alle omstændigheder giver SQL selv ingen garantier for rækkefølgen, som kolonner returneres i, medmindre du eksplicit liste dem. vælg * kan give dig dem i orden i dag og alfabetisk rækkefølge i morgen. Selv hvis en bestemt implementering giver dig mulighed for det (ved at oprette en ny tabel med kolonnen på det "rigtige" sted og kopiere dataene på tværs, eller ved at give en SQL-udvidelse som alter table T indsæt kolonne C1 før C2 ), vil jeg fraråde det. Det vil ikke være bærbart til andre implementeringer, og jeg foretrækker at have min kode så bærbar som praktisk muligt.

Derudover, ud over hvad du kan angive i SQL, bør et DBMS være i stand til fuldstændig at kontrollere hvordan den gemmer data. Det kan være, at din primære nøgle er en sammensætning af den syvende og 42. kolonne, og det kan være mere effektivt at have dem forrest i de fysiske poster.




  1. MYSQL får rækker indsat fra i dag

  2. Tips til at reducere din SQL Server-kompleksitet

  3. bedste mysql-datakildeegenskaber for Grails tomcat jndi

  4. PRINT-sætning i T-SQL