Lecture de MySQL Guide Officiel
Publi� le 13 octobre 2006

Je compte passer l'examen de certification MySQL. Pour ce faire je suis en train de lire le livre MySQL guide officiel disponible aux éditions MySQL Press. Ce guide prépare aux certifications MySQL Core et MySQL Avancée professionnelle [1] qu'il faut passer dans l'ordre. Voici le compte rendu de ma lecture.

Tout d'abord je commencerais par dire que c'est un "beau pavé" de 700 pages qui sont, j'en suis sûr, le condensé de tout ce qu'il y a à connaître. A la fin de chaque chapitre on a une suite d'exercices typiques de ceux de l'examen. C'est la même structure que le guide de certification PHP.

Le chapitre 1 informe qu'il est nécessaire de connaître la société MySQL AB et la philosophie qui a engendrée MySQL. Des questions de l'examen portent sur cet aspect. On abordera par exemple la question de la double licence : libre et commerciale. Les valeurs de MySQL sont à la page 21.

Dans le chapitre 2, on étudie les interfaces clients, c'est à dire, les API et les connecteurs ODBC et JDBC.

Chapitre 3 - Utiliser des programmes clients MySQL

Dans le chapitre 3, ce sont les programmes clients, c à d, les programmes en ligne de commande livrés avec le produit :

-  le requêteur mysql

  • le caractère \G en fin de ligne permet de découper une requête longue sur +sieurs lignes
  • l'option —i-am-a-dummy active des protections basiques
  • USE base pour activer une base de donnée par défaut
  • DESC test ou SHOW CREATE TABLE test pour voir la structure de la table contre les manipulations débutantes
    -  mysqldump pour réaliser les exports
    -  mysqlimport pour importer des données tabulées
    -  mysqlcheck et myisamchk pour vérifier l'intégrité des données et les réparer le cas échéant
    -  MySQLCC l'interface graphique d'administration de MySQL

Chapitre 4 - DDL (Data Definition Language)

Le chapitre 4 est une partie importante à considérer pour l'examen car elle porte sur le DDL [2]. C'est d'autant plus vrai qu'il termine par une série de plus de 100 questions.

Ce qu'il y a à considérer :

-  les moteurs de stockage
-  la création, modification, suppression d'une table
-  les index

  • de type
    • PRIMARY
    • UNIQUE
    • FULLTEXT
    • normal
  • pour ajouter un index on utilise au choix
    • l'index ajouté directement à la création de la table
    • alter table test add index ...
    • create index idx ...
  • une clé primaire n'est qu'un index unique non null
    -  une partie TRES importante sur les conversion automatiques effectuées par le moteur de MySQL
  • Chaînes
    • CHAR à taille fixe
    • VARCHAR à taille variable dont le premier octet contient la taille de la chaîne (256 pour MySQL < 5)
    • BINARY pour les tests indépendants de la casse
  • entiers
    • TINY INT : 1o
    • SMALLINT : 2o
    • MEDIUMINT : 3o
    • INT : 4o
    • BIGINT : 8o
    • UNSIGNED pour doubler l'intervalle de valeurs
  • flottants
    • FLOAT
    • DOUBLE
    • DECIMAL qui ne souffre pas d'erreurs d'arrondis
  • Les types "grande taille"
    • TEXT (TINYTEXT, MEDIUMTEXT, LONGTEXT) pour du texte ; respectivement L+2o, L+1o, L+3o, L+4o
    • BLOB (TINYBLOB, MEDIUMBLOB, LONGBLOG) pour du binaire ; respectivement L+2o, L+1o, L+3o, L+4o
  • ENUM et SET types optimisés pour les intervalles et les ensembles de valeurs
  • les dates et heures
    • TIMESTAMP date UNIX qui jouit de la propriété particulière que la 1ère colonne de ce type est automatiquement mise à jour à la date système pour un INSERT ou UPDATE
    • DATETIME
    • TIME
    • YEAR
    • peu de contrôle de la part du moteur ; ex : 31/02/2006 est une date valide ; 32/02/2006 est une date incorrecte
    • si une année est entrée sur 2 chiffres alors elle s'étend de 1970 (origine UNIX) à 2069. ex : 06 est équivalent à 2006.
    • il faut indiquer obligatoirement les secondes à DATETIME pour ne pas avoir de surprises
  • le fait de spécifier une longueur à un type n'agit pas sur le stockage ; ex : INT(2) prend 4 octets mais n'en affiche que deux. Méfiance donc !
  • comme pour PHP attention aux comparaisons entre chaînes et nombres
  • une chaîne qui commence par un nombre est convertie en nombre sinon elle est convertie en 0
    -  l'auto-increment (AUTO_INCREMENT)
    • un NULL (ou 0) dans un insert est remplacé par la valeur suivante d'autoincrement (dans un UPDATE est remplacé par 0)
    • un index sur 2 colonne dont une gère l'autoincrement apporte une comportement spécial : la numérotation reprend après le changement de valeur de la colonne sans autoincrement ; ex :
name name_id
toto 1
toto 2
titi 1
titi 2

-  MySQL n'est pas verbeux : si vous entrez une valeur en dehors de l'intervalle vous n'avez pas d'erreur

  • si c'est un nombre vous aurez soit la valeur minimale soit maximale (selon le côté du dépassement)
  • une chaîne sera tronquée
  • en cas d'erreur c'est la valeur par défaut qui est stockée

Voilà, je suis arrivé à la page 165.

Pages 1 | 2 | 3 | 4 | 5


[1] Depuis la sortie de MySQL5, les cerfications sont dénommées : MySQL 5.0 Developer et MySQL 5.0 DBA. L'ouvrage aussi a été mis à jour.

[2] Langage de définition des données.