Lo que no se debe hacer: palabras reservadas en MySQL

0
1422
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:

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:

 

ACCESSIBLEADDALL
ALTERANALYZEAND
ASASCASENSITIVE
BEFOREBETWEENBIGINT
BINARYBLOBBOTH
BYCALLCASCADE
CASECHANGECHAR
CHARACTERCHECKCOLLATE
COLUMNCONDITIONCONSTRAINT
CONTINUECONVERTCREATE
CROSSCURRENT_DATECURRENT_TIME
CURRENT_TIMESTAMPCURRENT_USERCURSOR
DATABASEDATABASESDAY_HOUR
DAY_MICROSECONDDAY_MINUTEDAY_SECOND
DECDECIMALDECLARE
DEFAULTDELAYEDDELETE
DESCDESCRIBEDETERMINISTIC
DISTINCTDISTINCTROWDIV
DOUBLEDROPDUAL
EACHELSEELSEIF
ENCLOSEDESCAPEDEXISTS
EXITEXPLAINFALSE
FETCHFLOATFLOAT4
FLOAT8FORFORCE
FOREIGNFROMFULLTEXT
GRANTGROUPHAVING
HIGH_PRIORITYHOUR_MICROSECONDHOUR_MINUTE
HOUR_SECONDIFIGNORE
ININDEXINFILE
INNERINOUTINSENSITIVE
INSERTINTINT1
INT2INT3INT4
INT8INTEGERINTERVAL
INTOISITERATE
JOINKEYKEYS
KILLLEADINGLEAVE
LEFTLIKELIMIT
LINEARLINESLOAD
LOCALTIMELOCALTIMESTAMPLOCK
LONGLONGBLOBLONGTEXT
LOOPLOW_PRIORITYMASTER_SSL_VERIFY_SERVER_CERT
MATCHMAXVALUEMEDIUMBLOB
MEDIUMINTMEDIUMTEXTMIDDLEINT
MINUTE_MICROSECONDMINUTE_SECONDMOD
MODIFIESNATURALNOT
NO_WRITE_TO_BINLOGNULLNUMERIC
ONOPTIMIZEOPTION
OPTIONALLYORORDER
OUTOUTEROUTFILE
PRECISIONPRIMARYPROCEDURE
PURGERANGEREAD
READSREAD_WRITEREAL
REFERENCESREGEXPRELEASE
RENAMEREPEATREPLACE
REQUIRERESIGNALRESTRICT
RETURNREVOKERIGHT
RLIKESCHEMASCHEMAS
SECOND_MICROSECONDSELECTSENSITIVE
SEPARATORSETSHOW
SIGNALSMALLINTSPATIAL
SPECIFICSQLSQLEXCEPTION
SQLSTATESQLWARNINGSQL_BIG_RESULT
SQL_CALC_FOUND_ROWSSQL_SMALL_RESULTSSL
STARTINGSTRAIGHT_JOINTABLE
TERMINATEDTHENTINYBLOB
TINYINTTINYTEXTTO
TRAILINGTRIGGERTRUE
UNDOUNIONUNIQUE
UNLOCKUNSIGNEDUPDATE
USAGEUSEUSING
UTC_DATEUTC_TIMEUTC_TIMESTAMP
VALUESVARBINARYVARCHAR
VARCHARACTERVARYINGWHEN
WHEREWHILEWITH
WRITEXORYEAR_MONTH
ZEROFILL

 Esto es válido hasta la versión 5.5.42 de MySQLA partir de la versión 5.5 se agregaron las siguientes:

GENERALIGNORE_SERVER_IDSMASTER_HEARTBEAT_PERIOD
MAXVALUERESIGNALSIGNAL
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.