Het maakt echt niet uit waar de kolom fysiek is sinds select
kunt u aangeven in welke volgorde (logisch) ze worden opgehaald.
En als u select *
waarmee u de volgorde niet kunt specificeren, zou u dat waarschijnlijk niet moeten doen. Er zijn maar weinig situaties waarin u dat zou moeten doen (bijvoorbeeld DB-analysetools), meestal is het beter om de afzonderlijke kolommen te selecteren die u wilt, zelfs als u ze allemaal wilt. Hierdoor kun je schemawijzigingen snel opvangen, zodat je je programma's daaraan kunt aanpassen.
In ieder geval geeft SQL zelf geen garanties over de volgorde waarin kolommen worden geretourneerd, tenzij u expliciet Inventariseer ze. select *
kan ze u vandaag in volgorde geven en morgen in alfabetische volgorde. Zelfs als een bepaalde implementatie u dit toestaat (door een nieuwe tabel te maken met de kolom op de "juiste" plaats en de gegevens te kopiëren, of door een SQL-extensie zoals alter table T insert column C1 before C2
), zou ik het afraden. Het zal niet overdraagbaar zijn naar andere implementaties en ik geef er de voorkeur aan om mijn code zo draagbaar mogelijk te hebben.
Bovendien moet een DBMS, naast wat u in SQL kunt specificeren, in staat zijn om hoe volledig te bepalen. het slaat gegevens op. Het kan zijn dat uw primaire sleutel een samenstelling is van de zevende en tweeënveertigste kolom en het kan efficiënter zijn om ze vooraan in de fysieke records te hebben.