10 Structure du langage
Manuel de Référence MySQL 4.1 : Version Française
. Literals: Comment écrire les chaînes et les nombres ->Noms de bases, tables, index, colonnes et alias . Variables utilisateur . Variables système . Syntaxe des commentaires . Cas des mots réservés MySQL
|
10.2 Noms de bases, tables, index, colonnes et alias
Les noms des bases de données, tables, index, colonnes et alias suivent tous
les mêmes règles en MySQL.
Notez que les règles ont changé à partir de la version 3.23.6 de MySQL lorsqu'à
été introduite la protection des noms d'identifiant avec les guillemets obliques
'`'
.
'"'
fonctionne aussi si vous fonctionnez en mode AINSI. Exécuter MySQL en mode ANSI .
Identifiant
|
Longueur maximale
|
Caractères autorisés
|
Base de données |
64 |
Tous les caractères autorisés dans un nom de dossier à part
'/'
,
'\'
et
'.'
.
|
Table |
64 |
Tous les caractères autorisés dans le nom d'un fichier à part
'/'
et
'.'
.
|
Colonne |
64 |
Tous.
|
Alias |
255 |
tous.
|
Notez qu'en plus de ce qui précède, vous n'avez pas droit au caractères ASCII(0), ASCII(255) ou
aux guillemets dans un identifiant.
Notez que si un identifiant est un mot réservé,
ou contient des caractères spéciaux, vous devez
absolument le protéger avec
'`'
:
mysql> SELECT * FROM `select` WHERE `select`.id > 100;
|
Est-ce que MySQL est sensible aux mots réservés ? .
Si vous utilisez MySQL avec les modes
MAXDB
ou
ANSI_QUOTES
,
il est aussi possible d'utiliser les guillemets doubles pour les identifiants :
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)
|
Options en ligne de commande de
mysqld
.
Dans les versions antérieures à la 3.23.6, les règles étaient les suivantes :
-
Un nom est constitué d'une séquence de caractères alpha-numériques, tiré du jeu de caractères
courant, et en y ajoutant le souligné
'_'
et le signe dollar
'$'
.
Le jeu de caractères par défaut est ISO-8859-1 Latin1; Il peut être modifié avec l'option de
démarrage
--default-character-set
de
mysqld
.
Le jeu de caractères utilisé pour les données et le stockage .
-
Un nom peut commencer par n'importe quel caractère permis dans un nom. Un nom peut
donc commencer par un chiffre. (Ce qui n'est pas le cas dans d'autres systèmes de base
de données). Par contre, un nom ne peut consister
uniquement
de chiffres.
-
Vous ne pouvez pas utiliser de point (
'.'
) dans les noms car ce caractère est
utilisé pour se référer au colonnes (voir ce qui suit).
Il est conseillé de ne pas utiliser de nom comme
1e
, car une expression comme
1e + 1
est ambigue. Ce nom pourra être interprété comme l'expression
1e + 1
ou le nombre
1e+1
.
Avec MySQL vous pouvez indiquer une colonne avec l'une des syntaxes suivantes :
Référence
|
Signification
|
nom_colonne
|
La colonne
nom_colonne
de chaque table utilisée dans la requête qui comporte une telle colonne.
|
nom_de_table.nom_colonne
|
La colonne
nom_colonne
de la table
nom_de_table
de la base de données courante.
|
nom_de_base.nom_de_table.nom_colonne
|
La colonne
nom_colonne
de la table
nom_de_table
de la base
nom_de_base
. Cette forme est disponible à partir de la
version 3.22 de MySQL.
|
`nom_colonne`
|
Une colonne qui est un mot réservé ou qui contient un caractère spécial.
|
Vous n'avez pas besoin de spécifier
nom_de_table
ou
nom_de_base.nom_de_table
avant une colonne sauf si la référence risque d'être ambigue.
Par exemple, supposons que
t1
et
t2
contiennent toutes les deux une colonne
nommée
c
, et que vous lisez
c
dans une requête
SELECT
qui utilise
t1
et
t2
à la fois. Dans ce cas,
c
est ambigu car il peut se référer
t1
aussi bien qu'à
t2
. Vous devez donc indiquer la table ciblée en écrivant
t1.c
ou
t2.c
. De même, si vous lisez à partir d'une table
t
située dans
la base
db1
et de la table
t
dans la base
db2
, vous devez vous référer
aux colonnes de ces tables en écrivant
db1.t.nom_colonne
et
db2.t.nom_colonne
.
La syntaxe
.nom_de_table
référence la table
nom_de_table
dans
la base de données courante. Cette syntaxe est acceptée pour assurer la compatibilité
avec ODBC, car certains pilotes ODBC préfixent les noms des tables avec des points (
'.'
).
Sommaire :
|