Próbuję do zapoznania się z PostgreSQL (9.2) po uczciwej trochę MySQL (5.1) użytkowania, odkąd został ugryziony przez garstkę MySQL's gotchas. Jednak w pierwszych pięciu minutach PostgreSQL wpadłem do jednego z its gotchas, który jestem pewien ciosy wszystkim:Dlaczego PostgreSQL domyślnie wszystko do małych liter?
- Domyślnie PostgreSQL konwertuje wszystko, co nie jest notowany na małe litery.
To nie jest zbyt wielkiego dla mnie, ponieważ istnieje kilka oczywistych obejścia:
- Kapsułkować wszystko w cudzysłów.
- Pozwól, aby wszystko było nazywane małymi literami.
Ale zastanawiam się dlaczego. Biorąc pod uwagę, jak wiele kontrowersji wyobrażam sobie, że ta decyzja projektowa powoduje, jestem zaskoczony, że nie mogłem znaleźć żadnej racji w Internecie. Czy ktokolwiek ma dokładne wyjaśnienie, a najlepiej link do jakiegoś manifestu programisty, dlaczego Postgres został zaprojektowany w ten sposób? Jestem zainteresowany.
Pytasz o to? http://stackoverflow.com/questions/153944/is-sql-syntax-case-sensitive?rq=1 –
AFAIK, standard mówi, że niecytowane identyfikatory powinny być składane na duże litery, [fałdy PostgreSQL na małe litery] (http : //stackoverflow.com/a/8736088/479863) zamiast tego. Składanie na duże lub małe litery nie powinno mieć znaczenia, chyba że podajesz tylko identyfikatory, ale jeśli to robisz, zasługujesz na to, co dostajesz. Możesz utworzyć "Naleśniki (...)" i "wybierz * z naleśników", po prostu nie "stwórz" Naleśników "(...)" i spróbuj "wybrać * z naleśników". Ludzie MySQL wydają się mieć ten dziwny nawyk rzucania zwrotów - cytowanie wszystkiego, utratę tego nawyku. –
@muistooshort Zauważyłem generalnie, że specyfikacja SQL nie określa, czy wielkość liter w fałdach ma być duża czy mała, tylko że musi wystąpić. Czy wiesz, gdzie konkretnie ma się składać na duże litery? (Szukam referencji, ale nie znajduję zbyt wielu przydatnych informacji). –