Conoce la lista de palabras reservadas en MySQL, es decir, todos aquellos comandos que no debes utilizar cuando nombras las columnas de una base de datos.
Una entrada breve. Me encontraba trabajando en una base de datos en MySQL y se dio una situación especial. Cuando yo programo siempre asigno los nombres de mis variables en inglés. Es una costumbre, aunque a veces escribo una que otra en español.
Me encontraba preparando un aplicación en Java y fui a crear una base de datos con una columna llamada index, para establecer un índice (número entero positivo que crece ordenadamente de 1 en 1 para identificar las filas y ciertos procesos que debo llevar a cabo dentro de mi algoritmo), por lo que intenté utilizar la sintaxis:
1 |
CREATE TABLE personal_info(index INT, ... |
Esto me arrojó un error y de inmediatamente comencé a sospechar que la palabra index no podría ser utilizada. En efecto asi es. Index es una de las palabras reservadas en MySQL.
Una palabra reservada es una palabra que no puede ser utilizada para nombrar una variable. Supongamos que en Arduino o en Java, si intentamos llamar a una variable con el nombre de true o false, obtendremos un error de compilación. Debido a que a veces se nos puede antojar el nombrar una variable bajo un nombre determinado, sería bueno para nosotros consultar la lista de palabras que no podemos utilizar para nombrar una columna en MySQL. A continuación la lista de palabras reservadas:
ACCESSIBLE |
ADD |
ALL |
ALTER |
ANALYZE |
AND |
AS |
ASC |
ASENSITIVE |
BEFORE |
BETWEEN |
BIGINT |
BINARY |
BLOB |
BOTH |
BY |
CALL |
CASCADE |
CASE |
CHANGE |
CHAR |
CHARACTER |
CHECK |
COLLATE |
COLUMN |
CONDITION |
CONSTRAINT |
CONTINUE |
CONVERT |
CREATE |
CROSS |
CURRENT_DATE |
CURRENT_TIME |
CURRENT_TIMESTAMP |
CURRENT_USER |
CURSOR |
DATABASE |
DATABASES |
DAY_HOUR |
DAY_MICROSECOND |
DAY_MINUTE |
DAY_SECOND |
DEC |
DECIMAL |
DECLARE |
DEFAULT |
DELAYED |
DELETE |
DESC |
DESCRIBE |
DETERMINISTIC |
DISTINCT |
DISTINCTROW |
DIV |
DOUBLE |
DROP |
DUAL |
EACH |
ELSE |
ELSEIF |
ENCLOSED |
ESCAPED |
EXISTS |
EXIT |
EXPLAIN |
FALSE |
FETCH |
FLOAT |
FLOAT4 |
FLOAT8 |
FOR |
FORCE |
FOREIGN |
FROM |
FULLTEXT |
GRANT |
GROUP |
HAVING |
HIGH_PRIORITY |
HOUR_MICROSECOND |
HOUR_MINUTE |
HOUR_SECOND |
IF |
IGNORE |
IN |
INDEX |
INFILE |
INNER |
INOUT |
INSENSITIVE |
INSERT |
INT |
INT1 |
INT2 |
INT3 |
INT4 |
INT8 |
INTEGER |
INTERVAL |
INTO |
IS |
ITERATE |
JOIN |
KEY |
KEYS |
KILL |
LEADING |
LEAVE |
LEFT |
LIKE |
LIMIT |
LINEAR |
LINES |
LOAD |
LOCALTIME |
LOCALTIMESTAMP |
LOCK |
LONG |
LONGBLOB |
LONGTEXT |
LOOP |
LOW_PRIORITY |
MASTER_SSL_VERIFY_SERVER_CERT |
MATCH |
MAXVALUE |
MEDIUMBLOB |
MEDIUMINT |
MEDIUMTEXT |
MIDDLEINT |
MINUTE_MICROSECOND |
MINUTE_SECOND |
MOD |
MODIFIES |
NATURAL |
NOT |
NO_WRITE_TO_BINLOG |
NULL |
NUMERIC |
ON |
OPTIMIZE |
OPTION |
OPTIONALLY |
OR |
ORDER |
OUT |
OUTER |
OUTFILE |
PRECISION |
PRIMARY |
PROCEDURE |
PURGE |
RANGE |
READ |
READS |
READ_WRITE |
REAL |
REFERENCES |
REGEXP |
RELEASE |
RENAME |
REPEAT |
REPLACE |
REQUIRE |
RESIGNAL |
RESTRICT |
RETURN |
REVOKE |
RIGHT |
RLIKE |
SCHEMA |
SCHEMAS |
SECOND_MICROSECOND |
SELECT |
SENSITIVE |
SEPARATOR |
SET |
SHOW |
SIGNAL |
SMALLINT |
SPATIAL |
SPECIFIC |
SQL |
SQLEXCEPTION |
SQLSTATE |
SQLWARNING |
SQL_BIG_RESULT |
SQL_CALC_FOUND_ROWS |
SQL_SMALL_RESULT |
SSL |
STARTING |
STRAIGHT_JOIN |
TABLE |
TERMINATED |
THEN |
TINYBLOB |
TINYINT |
TINYTEXT |
TO |
TRAILING |
TRIGGER |
TRUE |
UNDO |
UNION |
UNIQUE |
UNLOCK |
UNSIGNED |
UPDATE |
USAGE |
USE |
USING |
UTC_DATE |
UTC_TIME |
UTC_TIMESTAMP |
VALUES |
VARBINARY |
VARCHAR |
VARCHARACTER |
VARYING |
WHEN |
WHERE |
WHILE |
WITH |
WRITE |
XOR |
YEAR_MONTH |
ZEROFILL |
Esto es válido hasta la versión 5.5.42 de MySQL. A partir de la versión 5.5 se agregaron las siguientes:
GENERAL |
IGNORE_SERVER_IDS |
MASTER_HEARTBEAT_PERIOD |
MAXVALUE |
RESIGNAL |
SIGNAL |
SLOW |
Esto es básicamente lo que no debemos hacer… que cualquiera de nuestras columnas se llame WHERE o WHILE o cualquiera de las que aparece en nuestra lista que, por cierto, la tomé de la página de MySQL.