Par conséquent, les types binaires sont parfaits pour stocker des données "brutes" comme des images par exemple, tandis que
les chaînes de texte sont parfaites pour stocker...du texte !
Les types binaires sont définis de la même façon que les types de chaînes de texte. VARBINARY(x) et BINARY(x)
permettent de stocker des chaînes binaires de x caractères maximum (avec une gestion de la mémoire identique à VARCHAR(x)
et CHAR(x)). Pour les chaînes plus longues, il existe les types TINYBLOB, BLOB, MEDIUMBLOB et LONGBLOB, également
avec les mêmes limites de stockage que les types TEXT.
SET et ENUM
ENUM
Une colonne de type ENUM est une colonne pour laquelle on définit un certain nombre de valeurs autorisées, de type "chaîne de
caractère". Par exemple, si l'on définit une colonne espece (pour une espèce animale) de la manière suivante :
Code : SQL
espece ENUM('chat', 'chien', 'tortue')
La colonne espece pourra alors contenir les chaînes "chat", "chien" ou "tortue", mais pas les chaînes "lapin" ou "cheval".
En plus de "chat", "chien" et "tortue", la colonne espece pourrait prendre deux autres valeurs :
si vous essayez d'introduire une chaîne non-autorisée, MySQL stockera une chaîne vide '' dans le champ ;
si vous autorisez le champ à ne pas contenir de valeur (vous verrez comment faire ça dans le chapitre sur la création des
tables), le champ contiendra NULL, qui correspond à "pas de valeur" en SQL (et dans beaucoup de langages
informatiques).
Pour remplir un champ de type ENUM, deux possibilités s'offrent à vous :
soit remplir directement avec la valeur choisie ("chat", "chien" ou "tortue" dans notre exemple) ;
soit utiliser l'index de la valeur, c'est-à-dire le nombre associé par MySQL à la valeur. Ce nombre est compris entre 1 et le
nombre de valeurs définies. L'index est attribué selon l'ordre dans lequel les valeurs ont été données lors de la création du
champ. De plus, la chaîne vide (stockée en cas de valeur non-autorisée) correspond à l'index 0. Le tableau suivant
reprend les valeurs d'index pour notre exemple précédent : le champ espece.
Valeur Index
NULL NULL
''
0
'chat'
1
'chien' 2
'tortue' 3
Afin que tout soit bien clair : si vous voulez stocker "chien" dans votre champ, vous pouvez donc y insérer "chien" ou insérer 2
(sans guillemets, il s'agit d'un nombre, pas d'un caractère).
Un ENUM peut avoir maximum 65535 valeurs possibles
SET
SET est fort semblable à ENUM. Une colonne SET est en effet une colonne qui permet de stocker une chaîne de caractères dont
les valeurs possibles sont prédéfinies par l'utilisateur. La différence avec ENUM, c'est qu'on peut stocker dans la colonne entre 0
et x valeur(s), x étant le nombre de valeurs autorisées.
Donc, si l'on définit une colonne de type SET de la manière suivante :
Partie 1 : MySQL et les bases du langage SQL
29/414
www.openclassrooms.com
les chaînes de texte sont parfaites pour stocker...du texte !
Les types binaires sont définis de la même façon que les types de chaînes de texte. VARBINARY(x) et BINARY(x)
permettent de stocker des chaînes binaires de x caractères maximum (avec une gestion de la mémoire identique à VARCHAR(x)
et CHAR(x)). Pour les chaînes plus longues, il existe les types TINYBLOB, BLOB, MEDIUMBLOB et LONGBLOB, également
avec les mêmes limites de stockage que les types TEXT.
SET et ENUM
ENUM
Une colonne de type ENUM est une colonne pour laquelle on définit un certain nombre de valeurs autorisées, de type "chaîne de
caractère". Par exemple, si l'on définit une colonne espece (pour une espèce animale) de la manière suivante :
Code : SQL
espece ENUM('chat', 'chien', 'tortue')
La colonne espece pourra alors contenir les chaînes "chat", "chien" ou "tortue", mais pas les chaînes "lapin" ou "cheval".
En plus de "chat", "chien" et "tortue", la colonne espece pourrait prendre deux autres valeurs :
si vous essayez d'introduire une chaîne non-autorisée, MySQL stockera une chaîne vide '' dans le champ ;
si vous autorisez le champ à ne pas contenir de valeur (vous verrez comment faire ça dans le chapitre sur la création des
tables), le champ contiendra NULL, qui correspond à "pas de valeur" en SQL (et dans beaucoup de langages
informatiques).
Pour remplir un champ de type ENUM, deux possibilités s'offrent à vous :
soit remplir directement avec la valeur choisie ("chat", "chien" ou "tortue" dans notre exemple) ;
soit utiliser l'index de la valeur, c'est-à-dire le nombre associé par MySQL à la valeur. Ce nombre est compris entre 1 et le
nombre de valeurs définies. L'index est attribué selon l'ordre dans lequel les valeurs ont été données lors de la création du
champ. De plus, la chaîne vide (stockée en cas de valeur non-autorisée) correspond à l'index 0. Le tableau suivant
reprend les valeurs d'index pour notre exemple précédent : le champ espece.
Valeur Index
NULL NULL
''
0
'chat'
1
'chien' 2
'tortue' 3
Afin que tout soit bien clair : si vous voulez stocker "chien" dans votre champ, vous pouvez donc y insérer "chien" ou insérer 2
(sans guillemets, il s'agit d'un nombre, pas d'un caractère).
Un ENUM peut avoir maximum 65535 valeurs possibles
SET
SET est fort semblable à ENUM. Une colonne SET est en effet une colonne qui permet de stocker une chaîne de caractères dont
les valeurs possibles sont prédéfinies par l'utilisateur. La différence avec ENUM, c'est qu'on peut stocker dans la colonne entre 0
et x valeur(s), x étant le nombre de valeurs autorisées.
Donc, si l'on définit une colonne de type SET de la manière suivante :
Partie 1 : MySQL et les bases du langage SQL
29/414
www.openclassrooms.com
