May/090
Mes notes: info pêle-mêle sur les attributs des tables
Alors, pour continuer dans le volet “Mes Notes” qui se trouve à être un résumé d’étude / aide-mémoire pour l’examen de certification CMDEV, voici ce que je retiens des attributs des tables!
ZEROFILL rend un champ UNSIGNED.
Il ne peut y avoir qu’un seul champ auto_increment. Un champ auto_increment doit nécessairement être de type integer (tinyint, int, mediumint.. Etc..). MySQL permet de déclarer un auto_increment sur un champ avec un index non unique. Pour générer la prochaine séquence, on doit insérer un NULL ou la valeur 0, sauf si le mode NO_AUTO_VALUE_ON_ZERO. Si on atteint la valeur maximale du type, il se crée un duplicate key error.
Chaque collation est unique à un charset. Le charset binary force les datatypes à devenir binaires. VARCHAR devient VARBINARY par exemple. Cependant, l’attribut binary indique seulement d’utiliser la collation binary pour le charset prédéfini. La nuance est importante !
On ne peut pas assigner de valeur par défaut aux champs TEXT et BLOB, ni un champ auto_increment. On ne peut créer d’index unique ou primary key sur un TEXT ou BLOB.
Apr/091
Mes notes: Les types de données temporelles
| Type | Bytes | Range |
| DATE | 3 | 1000-01-01 à 9999-12-31 |
| TIME | 3 | -838:59:59 à 838:59:59 |
| DATETIME | 8 | 1000-01-01 00:00:00 à 9999-12-31 23:59:59 |
| TIMESTAMP | 4 | 1970-01-01 00:00:00 à mi-2037 |
| YEAR | 1 | 1901 à 2155 pour YEAR(4) et 1970 à 2069 pour YEAR(2) |
(Des valeurs peuvent excéder le range, sans garantie sur le résultat)
Chaque type peut avoir 0 comme valeur pour représenter une valeur insérée illégale. Le format par défaut est YYYY-MM-DD. Cependant, le format YYYY-M-D (2009-1-1) est supporté. De plus, le séparateur – n’est pas obligatoire, on peut également utiliser / (2009/01/01)
L’affichage des années peut se faire avec 2 ou 4 chiffres. Lorsque représenté avec 2 chiffres, 70 à 99 représente 1970 à 1999 alors que 00 à 69 représente 2000 à 2069.
Pour que les timestamps s’updatent automatiquement à l’insertion ou l’update, il faut spécifier l’option DEFAULT CURRENT_TIMESTAMP ou ON UPDATE CURRENT_TIMESTAMP. Cependant, pour conserver une compatibilité avec MySQL 4.1, ils sont considérés par défaut sur la première colonne timestamp.
Les 2 attributs peuvent être setté sur le même champ, mais il est impossible de mettre 1 différent attribut sur 2 champs. Par contre, la compatibilité avec MySQL 4.1 permet de tricher en ne spécifiant pas le DEFAULT CURRENT_TIMESTAMP sur la première colonne, et le ON UPDATE.. sur une 2ieme.
Si on ne veut pas qu’une colonne timestamp s’update automatiquement, il faut explicitement mettre sa par défaut à NULL.
Pour modifier le timezone, il faut changer la variable système : SET global time_zone = ‘+05 :00′; Par défaut, c’est le timezone du système. Si un client modifie le timezone, la même valeur sera différente d’un client à l’autre. Ce changement modifie aussi la valeur retournée par NOW().
SELECT CONVERT_TZ(’2005-01-27 13:30 :00′,’+01:00′,’+03:00);
2005-01-27 15:30 :00
Apr/091
Mes notes: Les types de données numériques
Les integers, floating-point storent des valeurs approximatives, les fixed-point storent des valeurs exactes et le type BIT.
Integer
| Type | Bytes | Minimum Value | Maximum Value |
| (Signed/Unsigned) | (Signed/Unsigned) | ||
TINYINT |
1 | -128 |
127 |
0 |
255 |
||
SMALLINT |
2 | -32768 |
32767 |
0 |
65535 |
||
MEDIUMINT |
3 | -8388608 |
8388607 |
0 |
16777215 |
||
INT |
4 | -2147483648 |
2147483647 |
0 |
4294967295 |
||
BIGINT |
8 | -9223372036854775808 |
9223372036854775807 |
0 |
18446744073709551615 |
Quand on spécifie une “longueur” de champs:
Les nombres plus petits que la longueur sont paddés d’espace jusqu’à la longueur. Les longueurs par défaut de MySQL incluent le signe négatif, donc un smallint est 6 (et non 5)
Floatint-Point
Inclus les types FLOAT et DOUBLE. Ils peuvent être utilisés pour représenter des valeurs approximatives et utilisent le native binary floating-point format du CPU. Ils sont très performants, mais sujet aux erreurs d’arrondissement.
Il est possible de définir la « precision and scale ».
FLOAT(10,3) indique un maximum de 10 chiffres, dont 3 après la virgule.
DECIMAL(20,7) indique un maximum de 20 chiffres, dont 7 après la virgule.
FLOAT utilise 4 bytes maximum, ce qui donne une précision entre 0 et 23. DOUBLE utilise 8 bytes, offrant une précision de 24 à 53.
Fixed-Point
Le type DECIMAL (ou NUMERIC) peut stocker des valeurs exactes. Il n’utilise pas le format binaire natif donc il est plus CPU Intensive. La précision et le scale influencent le nombre de bytes utilisé pour le stockage. Environ 4 bytes sont requis par tranche de 9 chiffres de chaque côté de la décimale.
Bit
La grosseur du champ BIT indique le nombre de bits par valeur, allant de 1 à 64. Le range de valeur se calcule 0 à 2n -1 et le nombre de bytes pour le stockage se calcule INT((n+7) / 8 ). On peut assigner des valeurs numériques ou des valeurs binaires avec la notation b’val’. Par exemple, b’1111′ représente 15 alors que b’1000000′ représente 64.
Apr/090
Mes notes: Les connecteurs
Les connectors sont des API pour accéder au serveur MySQL. Celui fourni avec le serveur, libmysqlclient, est écrit en C. Mais il y a d’autres connectors officiellement supportés par MySQL :
MySQL Connector/ODBC
C’est un layer par-dessus la librairie C. Il supporte les connexions TCP, Namedpipe et Socket. Il est disponible pour Windows et Unix.
MySQL Connector/J
Est écrit en pure Java. Il supporte les connexions TCP et Named pipe. Fonctionne avec Windows et Unix. Il supporte les prepared statement, stored routine et Unicode
MySQL Connector/NET
Entièrement écrit en C#, il supporte tous les protocoles de MySQL. Il supporte les prepared statement, stored routine et Unicode. Il fonctionne principalement sur Windows mais il est possible de l’utiliser sur Unix avec Mono
Les connectors doivent être installés sur la machine du client.
Apr/090
Mes notes: Concepts client/serveur
Comme je disais il y a pas longtemps, j’ai commencé à étudier pour passer la certification MySQL Developper. Je vais publier le résumé de mes études pour chaque sujet abordé dans les deux examens. Je commence aujourd’hui avec les concepts client/serveur. Il s’agit littéralement de mes notes, c’est donc très peu expliqué – c n’est que des sujets importants ou des sujets avec lesquelles je suis moins famillier.
Pardonnez mon “franglais”, toutes mes études sont en anglais, je vais faire l’examen en anglais, mais mes notes sont moitié fraçaise moitié anglaise
Client Program:
- MySQL Query Browser
- MySQL Administrator
- mysql
- mysqlimport
- mysqldump
- mysqladmin
- mysqlcheck
- myisamchk et myisampack roulent juste quand le serveur est fermé.
mysql –protocol values are
| Protocole | OS | Particularités |
| Tcp | Tous les OS | |
| Socket | Unix | “Unix Socket” |
| Pipe | Windows | Le serveur doit être starté avec -enable-named-pipe |
| memory | Windows | Le serveur doit être starté avec -shared-memory |
Les connexions avec socket, pipe ou memory doivent être établie en local. Seul TCP peut être en remote.
En lien avec les protocoles, le client mysql possède les options suivantes :
–shared-memory-base-name=memory_name
–socket ou -S socket_name (Sur windows, ca spécifie le nom du named-pipe)
–compress ou -C pour une communication compressé (augmente l’utilisation CPU)
Options files
Sur unix /etc/mysql/my.cnf, sur windows c:\windows\my.ini
Les options sont utilisées à la fois par le serveur et par les clients. Ils sont divisés par catégorie comme [mysql], [mysqldump]. Le groupe [client] s’applique à tous les clients en plus de leur catégorie respective.
mysql –default-file=c:\my-opts.txt indique au client d’utiliser ces options et d’ignorer tous les autres. Il faut utiliser –defaults-extra-file=c:\my-extra-opts.txt pour ajouter des options. L’option –no-defaults permet d’ignorer toutes les options prédéfinies.
SQL Modes
Efface les modes : SET sql_mode = ”;
Setter un mode : SET sql_mode = ‘TRADITIONAL’;
Setter plusieurs modes : SET sql_mode = ‘STRICT_ALL_TABLES, ANSI_QUOTE’;
ANSI_QUOTE : Les double quotes sont considérés comme identifier-quoting character plutôt qu’une string quoting character.
IGNORE_SPACE : Par défaut, les fonctions ne peuvent avoir d’espace entre leur nom et la parenthèse. Il est possible de le faire avec ce mode, parcontre le nom des fonctions devient un mot réservé.
ERROR_FOR_DIVISION_BY_ZERO : Par défaut, la division par zéro retourne null. Avec ce mode, mysql retourne un warning ou une erreur si on est en mode strict.
STRICT_TRANS_TABLES, STRICT_ALL_TABLE: Ces modes permet à mysql de traiter les valeurs erronées comme des erreurs( ex : une string dans un champ int). strict_trans_table s’applique juste aux tables transactionnelles, all_table à toutes les tables.
TRADITIONAL : C’est un mode qui regroupe plusieurs autres modes pour rendre mysql encore plus « strict ».
ANSI : Mode qui force mysql à se comporter comme le standard SQL, comme le fait ANSI_QUOTE ou PIPE_AS_CONCAT (|| permet de concaténer plutôt qu’être un opérateur logique OU)
Jan/091
Certification prise 2
Ça y est, c’est aujourd’hui que je commence mon étude pour passer l’examen de certification pour développeurs CMDEV. À la même date l’an passé, je commençais mes études pour la certification CMDBA que j’ai finalement obtenu au printemps 2008. Évidemment je n’étudie pas 8h de temps par jours; j’ai un mois de février déjà très chargé et j’aime prendre mon temps pour bien faire les choses.

CMDEV
Bien que je maîtrise plusieurs aspects de MySQL, les examens sont relativement difficiles, et c’est ce qu’on s’attend de ce genre de certification. Si c’était trop facile, l’intérêt de posséder une telle certification serait diminué et elle perdrait beaucoup de valeurs. Le niveau de complexité, si je me réfère aux 2 examens de CMDBA, s’avère un beau défi.
J’espère que les questions ont été travaillées. Les examens n’existent pas en français et les versions anglaises sont excessivement mal traduites. J’ai raté une question l’an passé, car je ne comprenais tout simplement pas le sens. Je me débrouille pourtant très bien en anglais. Je me demande dans quelle langue les examens sont écrits initialement.
Le “Certification Study Guide” est le seul outil dont je vais me servir pour mes études. Combinez à mon expérience personnelle, j’espère que ce sera suffisant!