Beim Versuch, eine Tabelle mit einem Namen wie „15909434_user“ zu erstellen, tritt die Fehlermeldung „Tabelle oder der Spaltenname darf nicht mit einer Zahl beginnen.“ Dies wirft die Frage auf, warum diese Konvention existiert.
Laut der PostgreSQL-Dokumentation folgen Objektnamen in der Datenbank dem „Namenstyp“, der erfordert, dass sie mit einem Buchstaben oder Unterstrich beginnen und aus alphanumerischen Zeichen und bestehen Unterstriche danach.
Um diese Einschränkung zu umgehen, können doppelte Anführungszeichen verwendet werden, um den Tabellennamen einzuschließen und ihn in einen „Anführungszeichen-Bezeichner“ umzuwandeln. Es ist jedoch wichtig zu beachten, dass die doppelten Anführungszeichen nicht als Teil des Namens betrachtet werden und nicht auf die 63-Zeichen-Grenze angerechnet werden.
Der Grund für diese Konvention liegt in den ursprünglichen SQL-Standards. Der Block „Bezeichneranfang“ in den Standards legt fest, dass ein Bezeichner in erster Linie mit einem einfachen lateinischen Buchstaben beginnen muss. Diese Regel vereinfacht den Parsing-Prozess für SQL-Interpreter.
Im Fall der SELECT-list-Klausel, die sowohl einfache Spaltennamen als auch numerische Ausdrücke zulässt, hilft die Durchsetzung dieser Konvention dem Parser, zwischen beiden zu unterscheiden. Wenn beispielsweise Tabellen- und Spaltennamen mit Zahlen beginnen dürften, könnte „2e2“ sowohl als Spaltenname als auch als gültiger numerischer Ausdruck interpretiert werden.
Durch die Regel, dass Bezeichner mit Buchstaben beginnen, kann der Parser kann schnell erkennen, dass „2e2“ ein numerischer Ausdruck und „3.4“ ein numerischer Wert und keine Tabellen- oder Spaltennamen ist.
Beim Entwurf Ein Schema, das numerische Vorzeichen zulässt, wäre zwar möglich, könnte aber zu unklareren Regeln und syntaktischer Komplexität führen. Die aktuelle Konvention bietet eine klare und unkomplizierte Lösung für das Problem, gewährleistet eine effiziente Analyse und vermeidet potenzielle Unklarheiten.
Das obige ist der detaillierte Inhalt vonWarum können Datenbanktabellen- oder Spaltennamen nicht mit Zahlen beginnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!