Nomes de banco de dados, tabela, índice, coluna e apelidos seguem todos as mesmas regras no MySQL.
Note que as regras foram alteradas a partir do MySQL versão
3.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. See
Secção 1.8.2, “Executando o MySQL 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 Secção 6.1.7, “Tratamento de Palavras Reservadas no MySQL”.
Se você estiver executando o MySQL 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 Secção 4.1.1, “Opções de Linha de Comando do mysqld
”.
Em versões do MySQL 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
no
mysqld
. See
Secção 4.7.1, “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 MySQL 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
MySQL 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
‘.
’.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.