PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

O nome da tabela ou coluna não pode começar com numérico?


Ele vem dos padrões sql originais, que por meio de várias camadas de indireção eventualmente chegam a um início do identificador bloco, que é uma das várias coisas, mas principalmente é "uma simples letra latina". Existem outras coisas também que podem ser usadas, mas se você quiser ver todos os detalhes, vá para http://en.wikipedia.org/wiki/SQL-92 e siga os links para o padrão real ( página 85 )

Ter introdutores de identificadores não numéricos torna a escrita de um analisador para decodificar sql para execução mais fácil e rápida, mas um formulário entre aspas também é bom.

Editar:Por que é mais fácil para o analisador?


O problema para um analisador é mais no SELECT -list cláusula do que o FROM cláusula. A lista de seleção é a lista de expressões que são selecionadas das tabelas, e isso é muito flexível, permitindo nomes de colunas simples e expressões numéricas. Considere o seguinte:
SELECT 2e2 + 3.4 FROM ...

Se os nomes das tabelas e os nomes das colunas puderem começar com números, é 2e2 um nome de coluna ou um número válido (e formato é normalmente permitido em literais numéricos) e é 3.4 a tabela "3 " e coluna "4 " ou é o valor numérico 3.4 ?

Ter a regra de que identificadores começar com letras latinas simples (e algumas outras coisas específicas) significa que um analisador que vê 2e2 pode discernir rapidamente que isso será uma expressão numérica, o mesmo com 3.4

Embora seja possível criar um esquema para permitir caracteres numéricos à esquerda, isso pode levar a regras ainda mais obscuras (opinião), portanto, essa regra é uma boa solução. Se você permitisse dígitos primeiro, sempre precisaria de aspas, o que provavelmente não é tão 'limpo'.

Isenção de responsabilidade , simplifiquei um pouco o acima, ignorando os nomes de correlação para mantê-lo curto. Não estou totalmente familiarizado com o postgres, mas verifiquei a resposta acima em relação à documentação do Oracle RDB e às especificações do sql