Un problème commun est la création d'une table avec des noms de colonne qui sont aussi des nom de type de données, ou de fonction natives MySQL. Ceci est parfaitement possible (par exemple, ABS
peut être un nom de colonne), mais aucun espace n'est autorisé entre le nom d'une fonction est la parenthèse ouvrante lorsque ces noms sont utilisé comme des fonctions .
Les mots suivants sont explicitement reservés par MySQL. La plus part sont interdits pas ANSI SQL92 comme nom de colonne ou nom de table (par exemple, group). Quelques uns sont reservés par MySQL qui en a besoin pour utiliser un analyseur syntaxique yacc
Les noms suivants (issus de la table ci-dessus) sont interdits pas ANSI SQL, mais acceptés apr MySQL comme nom de table/colonne. Ceci, car ces noms sont très courants, et de nombreuses personnes les utilisent déjà :
action | add | all | alter
|
after | and | as | asc
|
auto_increment | between | bigint | bit
|
binary | blob | bool | both
|
by | cascade | char | character
|
change | check | column | columns
|
constraint | create | cross | current_date
|
current_time | current_timestamp | data | database
|
databases | date | datetime | day
|
day_hour | day_minute | day_second | dayofmonth
|
dayofweek | dayofyear | dec | decimal
|
default | delete | desc | describe
|
distinct | distinctrow | double | drop
|
escaped | enclosed | enum | explain
|
exists | fields | first | float
|
float4 | float8 | foreign | from
|
for | full | function | grant
|
group | having | hour | hour_minute
|
hour_second | ignore | in | index
|
infile | insert | int | integer
|
interval | int1 | int2 | int3
|
int4 | int8 | into | if
|
is | join | key | keys
|
last_insert_id | leading | left | like
|
lines | limit | load | lock
|
long | longblob | longtext | low_priority
|
match | mediumblob | mediumtext | mediumint
|
middleint | minute | minute_second | month
|
monthname | natural | numeric | no
|
not | null | on | option
|
optionally | or | order | outer
|
outfile | partial | password | precision
|
primary | procedure | processlist | privileges
|
quarter | read | real | references
|
rename | regexp | reverse | repeat
|
replace | restrict | returns | rlike
|
second | select | set | show
|
smallint | soname | sql_big_tables | sql_big_selects
|
sql_select_limit | sql_low_priority_updates | sql_log_off | sql_log_update
|
straight_join | starting | status | string
|
table | tables | terminated | text
|
time | timestamp | tinyblob | tinytext
|
tinyint | trailing | to | use
|
using | unique | unlock | unsigned
|
update | usage | values | varchar
|
variables | varying | varbinary | with
|
write | where | year | year_month
|
zerofill
|
Les valeurs suivantes issues de la table ci dessus) sont interdites par ANSI SQL, mais autorisées par MySQL comme nom de table ou de colonne. Ceci, car ce sont des noms naturels, et de nombreuses personnes les utilisent déjà.
ACTION
BIT
DATE
ENUM
NO
TEXT
TIME
TIMESTAMP