Todos os objetos no banco de dados, até mesmo as colunas das tabelas, deverão ser nomeados de acordo com as seguintes regras.
- Minimo 1 caractere;
- Máximo 30 caracteres;
- O primeiro caractere deve ser uma letra;
- Além de número e letras, apenas os caracteres especiais "$", "_" e "#" são permitidos.
- Acentuação não é permitida.
- Não podem coincidir com as palavras reservadas (CREATE, TABLE, COLUMN, NUMBER, FROM, SELECT...)
- Ser único no namespace do objeto.
Outro aspecto que vale citar aqui é a diferenciação de maiúsculas e minúsculas, mais conhecido por Case insensitive/Case sensitive. Por padrão, todos objetos são criados de forma Case Insensitive, ou seja, o objeto pode ser referenciado sem a diferenciação de maiúsculas e minúsculas. Porém, também é possível criar objetos com nomes no estilo case sensitive. Não vejo nenhum beneficio em utilizar nomeclatura em formato case sensitive, mas é importate conhecer como funciona. Abaixo demonstrarei com fazer isto.
Criarei uma tabela simples, observe que a primeira letra é maiúscula e o restante minúsculo. Também utilizei números e um caracter especial apenas para enfatizar que eles podem ser utilizados.
Agora, vamos ver como ela foi criada pelo banco.
Ok, o banco criou em tudo maiusculo. Mas vamos fazer um teste selecionando a tabela de diversas formas.
Agora vou mostrar como criar uma tabela com nome no estilo case sensitive. Fazer isto é muito simples, basta utilizar aspas duplas no nome do objeto.
Quando se utiliza esta forma de nomeclatura para o objeto, o mesmo deve ser sempre referenciado utilizando aspas duplas, caso contrário o banco irá retornar ORA-00942 informando que o objeto nao foi encontrado.
Criarei uma tabela simples, observe que a primeira letra é maiúscula e o restante minúsculo. Também utilizei números e um caracter especial apenas para enfatizar que eles podem ser utilizados.
SQL> create table Tabela123# (id number(4), descricao varchar2(50));
Table created.
Table created.
Agora, vamos ver como ela foi criada pelo banco.
SQL> select table_name from user_tables where table_name='Tabela123#';
no rows selected
SQL> select table_name from user_tables where table_name='TABELA123#';
TABLE_NAME
------------------------------
TABELA123#
no rows selected
SQL> select table_name from user_tables where table_name='TABELA123#';
TABLE_NAME
------------------------------
TABELA123#
Ok, o banco criou em tudo maiusculo. Mas vamos fazer um teste selecionando a tabela de diversas formas.
SQL> select count(*) from tabela123#;
COUNT(*)
----------
0
SQL> select count(*) from TABELA123#;
COUNT(*)
----------
0
SQL> select count(*) from Tabela123#;
COUNT(*)
----------
0
Ótimo, está case insensitive. Os SQL funcionaram tanto para maiúsculo quanto minúsculo. COUNT(*)
----------
0
SQL> select count(*) from TABELA123#;
COUNT(*)
----------
0
SQL> select count(*) from Tabela123#;
COUNT(*)
----------
0
Agora vou mostrar como criar uma tabela com nome no estilo case sensitive. Fazer isto é muito simples, basta utilizar aspas duplas no nome do objeto.
SQL> create table "Tabela456#" (id number, descricao varchar2(30));
Table created.
SQL> select table_name from all_tables where upper(table_name) like 'TABELA%';
TABLE_NAME
------------------------------
TABELA123#
Tabela456#
Table created.
SQL> select table_name from all_tables where upper(table_name) like 'TABELA%';
TABLE_NAME
------------------------------
TABELA123#
Tabela456#
Quando se utiliza esta forma de nomeclatura para o objeto, o mesmo deve ser sempre referenciado utilizando aspas duplas, caso contrário o banco irá retornar ORA-00942 informando que o objeto nao foi encontrado.
SQL> select * from Tabela456#;
select * from Tabela456#
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select * from TABELA456#;
select * from TABELA456#
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select * from "Tabela456#";
no rows selected
select * from Tabela456#
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select * from TABELA456#;
select * from TABELA456#
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select * from "Tabela456#";
no rows selected
As regras que apresentei são válidas para outros objetos do banco, como View, Procedure, Function, Synonym, Package, Triggers e etc. Procure utilizar um padrão de nomenclatura para todo o sistema e sempre da forma mais intuitivo possível, isto facilitará a manutenção no futuro.
Nenhum comentário:
Postar um comentário