[+/-]
Los nombres de bases de datos, tablas, índices, columnas y alias son identificadores. Esta sección describe la sintaxis permitida para los identificadores de MySQL.
La siguiente tabla describe la longitud máxima y los caracteres permitidos para cada tipo de identificador.
Identificador | Longitud máxima (en bytes) | Caracteres permitidos |
Base de datos | 64 | Cualquier carácter permitido en un nombre de directorio, excepto
'/ ', '\ ', o
'. ' |
Tabla | 64 | Cualquier carácter permitido en un nombre de fichero, excepto
'/ ', '\ ', o
'. ' |
Columna | 64 | Todos los caracteres |
Índice | 64 | Todos los caracteres |
Alias | 255 | Todos los caracteres |
Adicionalmente a las restricciones detalladas en la tabla, ningún identificador puede contener un carácter ASCII 0 o un byte con un valor de 255. Los nombres de bases de datos, tablas y columnas no deberían terminar con caracteres de espacio. MySQL 5.0 permite el uso de comillas en identificadores, aunque es mejor evitarlos tanto como sea posible.
En MySQL 5.0, los identificadores se almacenan empleando Unicode
(UTF8). Esto se aplica a identificadores en las definiciones de
tabla que se almacenan en ficheros .frm
y a
identificadores almacenados en las tablas de permisos en la base
de datos mysql
. El tamaño de las columnas de
tipo cadena en las tablas de permisos (y en cualquier otra tabla)
de MySQL 5.0 equivale al número de caracteres, esto significa que
(al contrario que en algunas versiones anteriores de MySQL) se
pueden utilizar caracteres multibyte sin reducir el número de
caracteres permitidos para los valores almacenados en estas
columnas.
Un identificador puede estar encerrado entre comillas o no. Si un
identificador es una palabra reservada o contiene caracteres
especiales, se debe encerrar entre comillas
cada vez que se haga referencia a él. Para una lista de palabras
reservadas, consulte Sección 9.6, “Tratamiento de palabras reservadas en MySQL”. Los
caracteres especiales son aquellos que están fuera del grupo de
caracteres alfanuméricos del conjunto de caracteres en uso, de
'_
', y de '$
'.
El carácter de encomillado de identificador es el acento grave:
('`
'):
mysql> SELECT * FROM `select` WHERE `select`.id > 100;
Si el modo de servidor SQL incluye la opción
ANSI_QUOTES
, también está permitido delimitar
los identificadores con comillas dobles:
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)
Consulte Sección 5.3.2, “El modo SQL del servidor”.
En MySQL 5.0, los caracteres delimitadores de identificador pueden
incluírse dentro del identificador si se delimita el
identificador. Si el carácter que se incluirá dentro
del identificador es el mismo que se utiliza para delimitarlo,
habrá que colocarlo en forma doble. Las siguientes sentencias
crean una tabla llamada a`b
que contiene una
columna llamada c"d
:
mysql> CREATE TABLE `a``b` (`c"d` INT);
Se recomienda que no se utilicen nombres con el esquema
,
tal como X
eX
1e
o 2e2
, porque
una expresión como 1e+1
es ambigua. Podría
interpretarse como la expresión 1e + 1
o como
el número 1e+1
, dependiendo del contexto.
Hay que ser cuidadoso al utilizar MD5
para
producir nombres de tablas, porque puede producir nombres ilegales
como los listados anteriormente.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.