sql >> Database >  >> RDS >> PostgreSQL

Tabel- of kolomnaam mag niet beginnen met numeriek?

Het komt van de originele sql-standaarden, die via verschillende lagen van indirectheid uiteindelijk tot een identifier-start komen blok, wat een van de vele dingen is, maar in de eerste plaats is het "een eenvoudige Latijnse letter". Er zijn ook andere dingen die kunnen worden gebruikt, maar als je alle details wilt zien, ga dan naar http://en.wikipedia.org/wiki/SQL-92 en volg de links naar de eigenlijke standaard (pagina 85)

Het hebben van niet-numerieke identificatie-introducers maakt het schrijven van een parser om sql te decoderen voor uitvoering gemakkelijker en sneller, maar een geciteerde vorm is ook prima.

Bewerken:waarom is het makkelijker voor de parser?

Het probleem voor een parser zit meer in de SELECT -list clausule dan de FROM clausule. De selectielijst is de lijst met uitdrukkingen die uit de tabellen worden geselecteerd, en deze is zeer flexibel, waardoor eenvoudige kolomnamen en numerieke uitdrukkingen mogelijk zijn. Overweeg het volgende:

SELECT 2e2 + 3.4 FROM ...

Als tabelnamen en kolomnamen met cijfers zouden kunnen beginnen, is 2e2 een kolomnaam of een geldig nummer (e formaat is meestal toegestaan ​​in numerieke letterlijke waarden) en is 3.4 de tabel "3 " en kolom "4 " of is het de numerieke waarde 3.4 ?

Met de regel dat identifiers beginnen met eenvoudige Latijnse letters (en enkele andere specifieke dingen) betekent dat een parser die 2e2 ziet kan snel onderscheiden dat dit een numerieke uitdrukking is, hetzelfde probleem met 3.4

Hoewel het mogelijk zou zijn om een ​​schema te bedenken om numerieke hoofdtekens toe te staan, zou dit kunnen leiden tot nog meer obscure regels (mening), dus deze regel is een mooie oplossing. Als je eerst cijfers toestaat, moet het altijd worden geciteerd, wat aantoonbaar niet zo 'schoon' is.

Disclaimer , Ik heb het bovenstaande enigszins vereenvoudigd, waarbij ik de namen van de correlaties negeer om het kort te houden. Ik ben niet helemaal bekend met postgres, maar heb het bovenstaande antwoord dubbel gecontroleerd aan de hand van Oracle RDB-documentatie en sql-specificaties



  1. Een PostgreSQL-database maken

  2. Oracle 11g op Mac OS X

  3. BESTEL OP DATUM met eerst NULLS en vervolgens de meest recente datums

  4. RMAN Lijst back-upcommando's