sql >> Databasteknik >  >> RDS >> PostgreSQL

Tabell- eller kolumnnamn kan inte börja med numeriskt?

Det kommer från de ursprungliga sql-standarderna, som genom flera lager av inriktning så småningom får en identifierarestart block, vilket är en av flera saker, men i första hand är det "en enkel latinsk bokstav". Det finns andra saker också som kan användas, men om du vill se alla detaljer, gå till http://en.wikipedia.org/wiki/SQL-92 och följ länkarna till den faktiska standarden ( sidan 85 )

Att ha icke-numeriska identifierare introducerar gör det lättare och snabbare att skriva en parser för att avkoda sql för exekvering, men en citerad form är också bra.

Redigering:Varför är det lättare för tolken?

Problemet för en parser ligger mer i SELECT -list-satsen än FROM klausul. Select-listan är listan över uttryck som väljs från tabellerna, och den är mycket flexibel och tillåter enkla kolumnnamn och numeriska uttryck. Tänk på följande:

SELECT 2e2 + 3.4 FROM ...

Om tabellnamn och kolumnnamn kan börja med siffror, är 2e2 ett kolumnnamn eller ett giltigt nummer (e formatet är vanligtvis tillåtet i numeriska bokstaver) och är 3.4 tabellen "3 " och kolumn "4 " eller är det det numeriska värdet 3.4 ?

Med regeln att identifierare börja med enkla latinska bokstäver (och några andra specifika saker) betyder att en parser som ser 2e2 kan snabbt urskilja att detta kommer att vara ett numeriskt uttryck, samma sak med 3.4

Även om det skulle vara möjligt att utforma ett schema för att tillåta numeriska ledande tecken, kan detta leda till ännu mer oklara regler (åsikt), så denna regel är en bra lösning. Om du tillät siffror först, skulle det alltid behöva citeras, vilket förmodligen inte är lika "rent".

Ansvarsfriskrivning , Jag har förenklat ovanstående något och ignorerat korrelationsnamn för att hålla det kort. Jag är inte helt bekant med postgres, men har dubbelkollat ​​ovanstående svar mot Oracle RDB-dokumentation och sql-specifikationer



  1. Android SQLiteDB lägger inte till värden

  2. Hur CONCAT()-funktionen fungerar i PostgreSQL

  3. Konvertera SQL Server DateTime-objekt till BIGINT (.Net ticks)

  4. Hur man designar en databasmodell för ett biobokningssystem