Nomes de Banco de dados, Tabela, Índice, Coluna e Alias
Nomes de banco de dados, tabela, índice, coluna e apelidos seguem todos as mesmas regras no MariaDB.
Note que as regras foram alteradas desde o MariaDB v3.23.6, quando introduzimos aspas em identificadores (nomes banco de dados, tabela e coluna) com '`
'. ''
' funcionará também para citar identificadores se você executar no modo ANSI. Leia "Executando o MariaDB no modo ANSI".
Identificador | Tamanho máximo (bytes) | Caracteres permitidos |
Banco de dados | 64 | Qualquer caractere que é permitido em um nome de diretório exceto '/ ' ou '. '.
|
Tabela | 64 | Qualquer caractere permitido em um nome de arquivo, exceto '/ ' ou '. '.
|
Coluna | 64 | Todos os caracteres. |
Alias | 255 | Todos os caracteres. |
Note que em adição ao mostrado acima, você não pode ter ASCII(0) ou ASCII(255) ou o caracter de citação (aspas) em um identificador.
Se o identificador é uma palavra restrita ou contêm caracteres especiais você deve sempre colocá-lo entre `
ao usá-lo:
mysql> SELECT * FROM `select` WHERE `select`.id > 100;
See "Tratamento de Palavras Reservadas no MySQL".
Se você estiver executando o MariaDB no modo MAXDB
ou ANSI_QUOTES
, ele também pode citar identificadores com aspas duplas:
mysql>CREATE TABLE 'test' (col INT);
ERROR 1064: You have an error in your SQL syntax. (...) mysql>SET SQL_MODE='ANSI_QUOTES';
mysql>CREATE TABLE 'test' (col INT);
Query OK, 0 rows affected (0.00 sec)
See "Opções de Linha de Comando do mysqld
".
Em versões do MariaDB anteriores a 3.23.6, as regras se nomes eram as seguintes:
- Um nome pode consistir de caracteres alfanuméricos do conjunto atual de caractres e também '
_
' e '$
'. O conjunto de caracteres padrão é o ISO-8859-1 Latin1; e pode ser alterado com a opção--default-character-set
nomysqld
. Leia "O Conjunto de Caracteres Utilizado para Dados e Ordenação". - Um nome pode iniciar com qualquer caractere que é legal no nome. Em particular, pode iniciar com um número (isto difere de vários outros sistemas de bancos de dados!). Entretanto um nome não pode consistir somente de números.
- O caractere '
.
' não pode ser utilizado em nomes porque ele é usado para extender o formato pelo qual você pode fazer referências a colunas (veja abaixo).
É recomendado que você não utilize nomes como 1e
, porque uma expressão como 1e+1
é ambígua. Ela pode ser interpretada como a expressão 1e + 1
ou como o número 1e+1
.
No MariaDB você pode se referir a uma coluna utilizando uma das formas seguintes:
Coluna de referência | Significado |
nome_campo
| Coluna nome_campo de qualquer tabela usada na consulta contendo uma coluna com aquele nome.
|
nome_tabela.nome_campo
| Coluna nome_campo da tabela nome_tabela do banco de dados atual.
|
nome_bd.nome_tabela.nome_campo
| Coluna nome_campo da tabela nome_tabela do banco de dados nome_bd . Esta forma é disponível no MariaDB Versão 3.22 ou posterior.
|
`nome_coluna`
| Uma coluna que é uma palavra chave ou contem caracteres especiais. |
Você não precisa especificar um prefixo de nome_tabela
ou nome_bd.nome_tabela
para uma referência de coluna em uma instrução, a menos que a referência seja ambígua. Por exemplo, suponha que cada tabela t1
e t2
contenham uma coluna c
, e você deve recuperar c
em uma instrução SELECT
que utiliza ambas tabelas t1
e t2
. Neste caso, c
é ambíguo porque ele não é único entre as tabelas usadas na instrução, portanto deve ser indicado qual é a tabela que se deseja escrever, t1.c
ou t2.c
. De mesma forma, se você for recuperar de uma tabela t
em um banco de dados db1
e uma tabela t
em um banco de dados db2
, você deve se refererir às colunas nestas tabelas como db1.t.nome_campo
e db2.t.nome_campo
.
A sintaxe .nome_tabela
indica a tabela nome_tabela
no banco de dados atual. Esta sintaxe é aceitada para compatibilidade ODBC, porque alguns programas ODBC prefixam os nomes das tabelas com um caracter '.
'.