Lad os overveje SQL-standarden, afsnit 7.9
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
::=VÆLG [ ] [...] ::= | [ { }... ][...]Syntaksregler1) Lad T være resultatet af .3) Tilfælde:a) [...] b ) Ellers svarer "*" til en -sekvens, hvor hvert er en , der refererer til en kolonne med T, og hver kolonne af T refereres nøjagtigt én gang. Kolonnerne henvises til i den stigende rækkefølge af deres ordinære position inden for T.
Så med andre ord, ja, SQL-standarden specificerer, at kolonner skal projiceres i henhold til deres ordinære position inden for T
. Bemærk, at tingene bliver en smule vanskelige, når dit JOIN .. USING
eller NATURLIG JOIN
klausuler. Men når du vælger fra en simpel tabel, har du det sikkert fint, hvis du antager, at ordren er som forventet.
For fuldstændighedens skyld, betydningen af en ordensposition inden for T
for tabeller er forklaret længere nede i 11.4
Generelle regler 5) [...] Ordinalpositionen inkluderet i kolonnedeskriptoren er lig med graden af T. [...]
Og så i 11.11
ALTER TABLE
udsagn)
Generelle regler 4) [...] Især øges graden af T med 1, og den ordinære position af den kolonne er lig med den nye grad af T som specificeret i de generelle regler i afsnit 11.4 , "".
Der er en hel del andre SQL-sætninger og klausuler, der afhænger af den formelle specifikation af ordinære positioner
i
13.8 (når du udelader ``)20.2 (når `` indeholder et ``)
Postgres, i særdeleshed, er ret standard-kompatibel, så hvis du virkelig vil SELECT *
, gå videre!