Gereserveerde woorden Een veel voorkomend probleem bij MySQL-queries is dat een bepaald woord gereserveerd is. Dit houdt in dat het woord in kwestie reeds een bepaalde betekenis heeft voor MySQL.
Indien een dergelijk woord gereserveerd is, dien je het tussen "backticks" te plaatsen (`).
De enige uitzondering hierop is een woord dat volgt op een punt, omdat het dan geen gereserveerd woord in zijn geheel kan zijn. Een voorbeeld hiervan is mijnveld.select . Dit kan perfect gebruikt worden zonder backticks, omdat in gereserveerde woorden geen punt kan voorkomen, waaruit de slimme computer de conclusie trekt dat het om een tabelnaam of kolomnaam gaat.
Het is toegestaan om namen van functies te gebruiken om tabellen of kolommen aan te duiden. Een voorbeeld hiervan is SUM , dit kan perfect als tabelnaam gebruikt worden, indien je een spatie tussen de veldnaam en het volgende haakje plaatst.
Bij een functie wordt altijd de constructie FUNCTIE(blaat) gebruikt, waarbij de haakjes tegen de functie geplaatst worden.
De volgende query kan dus perfect:
INSERT INTO SUM (sommetje,oplossing) VALUES ('1+1',2)
Indien je hier geen spatie zou plaatsen, krijg je SUM(sommetje,oplossing) , wat totaal onlogisch is in een INSERT -query.
Indien de SQL modus IGNORE_SPACE is ingeschakeld, kan een functie aangeroepen worden met een spatie tussen de functie en het volgende haakje. Hiervoor worden functienamen behandeld als gereserveerde woorden. In dit geval moeten tabelnamen of kolomnamen dus wel tussen backticks geplaatst worden om aan te duiden dat het over een tabel of kolom gaat.
Gereserveerde woorden: een overzicht
Hieronder volgt een overzicht van alle gereserveerde woorden in MySQL 5.0. Het is aangeraden om deze woorden simpelweg niet te gaan gebruiken als kolomnaam, maar een passend alternatief te gaan gebruiken (ipv. TIME zou je bijvoorbeeld POSTING_TIME of iets dergelijks kunnen gebruiken).
ADD |
ALL |
ALTER |
ANALYZE |
AND |
AS |
ASC |
ASENSITIVE |
BEFORE |
BETWEEN |
BETWEEN |
BIGINT |
BIGINT |
BINARY |
BINARY |
BLOB |
BOTH |
BY |
CALL |
CASCADE |
CASE |
CHANGE |
CHAR |
CHARACTER |
CHECK |
COLLATE |
COLUMN |
CONDITION |
CONNECTION |
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 |
INT4 |
INT8 |
INTEGER |
INTERVAL |
INTO |
IS |
ITERATE |
JOIN |
KEY |
KEYS |
KILL |
LEADING |
LEAVE |
LEFT |
LIKE |
LIMIT |
LINES |
LOAD |
LOCALTIME |
LOCALTIMESTAMP |
LOCK |
LONG |
LONGBLOB |
LONGTEXT |
LOOP |
LOW_PRIORITY |
MATCH |
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 |
PREFERENCES |
PRIMARY |
PROCEDURE |
PURGE |
RAIDO |
READ |
READS |
REAL |
REGEXP |
RELEASE |
RENAME |
REPEAT |
REPLACE |
REQUIRE |
RESTRICT |
RETURN |
REVOKE |
RIGHT |
RLIKE |
SCHEMA |
SCHEMAS |
SECOND_MICROSECOND |
SELECT |
SENSITIVE |
SEPARATOR |
SET |
SHOW |
SMALLINT |
SONAME |
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 |
UPGRADE |
USAGE |
USE |
USING |
UTC_DATE |
UTC_TIME |
UTC_TIMESTAMP |
VALUES |
VARBINARY |
VARCHAR |
VARCHARACTER |
VARYING |
WHEN |
WHERE |
WHILE |
WITH |
WRITE |
X509 |
XOR |
YEAR_MONTH |
ZEROFILL |
|
|
Sinds MySQL 5 zijn de volgende woorden gereserveerd:
ASENSITIVE |
CALL |
CONDITION |
CONNECTION |
CONTINUE |
CURSOR |
DECLARE |
DETERMINISTIC |
EACH |
ELSEIF |
EXIT |
FETCH |
GOTO |
INOUT |
INSENSITIVE |
ITERATE |
LABEL |
LEAVE |
LOOP |
MODIFIES |
OUT |
READS |
RELEASE |
REPEAT |
RETURN |
SCHEMA |
SCHEMAS |
SENSITIVE |
SPECIFIC |
SQL |
SQLEXCEPTION |
SQLSTATE |
SQLWARNING |
TRIGGER |
UNDO |
UPGRADE |
WHILE |
|
|
|
|