PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Warum mag PostgreSQL keine GROSSBUCHSTABEN für Tabellennamen?

Setzen Sie den Tabellennamen in doppelte Anführungszeichen, wenn Sie möchten, dass Postgres die Groß- und Kleinschreibung für Beziehungsnamen beibehält.

Wenn Sie einen Bezeichner in Anführungszeichen setzen, wird auch zwischen Groß- und Kleinschreibung unterschieden, während Namen ohne Anführungszeichen immer in Kleinbuchstaben umgewandelt werden . Zum Beispiel werden die Bezeichner FOO, foo und „foo“ von PostgreSQL als gleich angesehen, aber „Foo“ und „FOO“ unterscheiden sich von diesen dreien und voneinander. (Die Umwandlung von Namen ohne Anführungszeichen in Kleinbuchstaben in PostgreSQL ist mit dem SQL-Standard nicht kompatibel, der besagt, dass Namen ohne Anführungszeichen in Großbuchstaben umgewandelt werden sollten. Daher sollte foo laut Standard gleichbedeutend mit „FOO“ und nicht mit „foo“ sein. Wenn Sie schreiben möchten portablen Anwendungen haben Sie geraten, einen bestimmten Namen immer oder nie zu zitieren .)

aus Dokumenten (Hervorhebung von mir)

Beispiel mit Anführungszeichen:

t=# create table "UC_TNAME" (i int);
CREATE TABLE
t=# \dt+ UC

t=# \dt+ "UC_TNAME"
                      List of relations
 Schema |   Name   | Type  |  Owner   |  Size   | Description
--------+----------+-------+----------+---------+-------------
 public | UC_TNAME | table | postgres | 0 bytes |
(1 row)

Beispiel ohne Anführungszeichen:

t=# create table UC_TNAME (i int);
CREATE TABLE
t=# \dt+ UC_TNAME
                      List of relations
 Schema |   Name   | Type  |  Owner   |  Size   | Description
--------+----------+-------+----------+---------+-------------
 public | uc_tname | table | postgres | 0 bytes |
(1 row)

Wenn Sie also eine Tabelle mit Anführungszeichen erstellt haben, sollten Sie keine Anführungszeichen überspringen, die sie abfragen. Aber wenn Sie Anführungszeichen beim Erstellen des Objekts übersprungen haben, wurde der Name in Kleinbuchstaben umgewandelt und wird daher mit Großbuchstaben in der Abfrage angezeigt - auf diese Weise "merken" Sie es nicht.