sql >> Databáze >  >> RDS >> PostgreSQL

Název tabulky nebo sloupce nemůže začínat číslicí?

Pochází z původních standardů SQL, které se přes několik vrstev nepřímosti nakonec dostanou k začátku identifikátoru blok, což je jedna z několika věcí, ale především je to "jednoduché latinské písmeno". Existují i ​​další věci, které lze použít, ale pokud chcete vidět všechny podrobnosti, přejděte na http://en.wikipedia.org/wiki/SQL-92 a postupujte podle odkazů na aktuální standard ( strana 85 )

Díky zavaděčům nečíselných identifikátorů je psaní analyzátoru pro dekódování sql pro provádění snazší a rychlejší, ale forma v uvozovkách je také v pořádku.

Upravit:Proč je to pro analyzátor jednodušší?

Problém pro parser je spíše v SELECT -list klauzule než FROM doložka. Select-list je seznam výrazů, které jsou vybrány z tabulek, a je velmi flexibilní a umožňuje jednoduché názvy sloupců a číselné výrazy. Zvažte následující:

SELECT 2e2 + 3.4 FROM ...

Pokud mohou názvy tabulek a sloupců začínat číslicemi, je 2e2 název sloupce nebo platné číslo (e formát je obvykle povolen v numerických literálech) a je 3.4 tabulka "3 “ a sloupec „4 " nebo je to číselná hodnota 3.4 ?

Platí pravidlo, že identifikátory začít jednoduchými latinskými písmeny (a některými dalšími konkrétními věcmi) znamená, že analyzátor, který vidí 2e2 můžete rychle rozpoznat, že to bude číselný výraz, stejně jako 3.4

I když by bylo možné vymyslet schéma umožňující numerické úvodní znaky, mohlo by to vést k ještě obskurnějším pravidlům (názorům), takže toto pravidlo je pěkné řešení. Pokud byste nejprve povolili číslice, pak by to vždy vyžadovalo uvozovky, což pravděpodobně není tak „čisté“.

Odmítnutí odpovědnosti , Mírně jsem výše uvedené zjednodušil, ignorujic názvy korelací, aby to bylo krátké. Nejsem úplně obeznámen s postgres, ale dvakrát jsem zkontroloval výše uvedenou odpověď podle dokumentace Oracle RDB a specifikace SQL



  1. Oracle Cloud:Vytvoření databáze ATP (Autonomous Transaction Processing).

  2. Řešení chyb Oracle

  3. Nasazení zabezpečené multicloudové replikace MySQL na AWS a GCP s VPN

  4. Oracle REGEXP_LIKE a hranice slov