|   | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|     | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  |  7.2 Types de colonnesMIndique la taille maximale d'affichage. La taille maximale autorisée par défaut est 255.DS'applique aux types à virgule flottante, et précise le nombre de chiffre après la virgule.Crochets (``['' et ``]'') indique que cet argument est optionnel. 
NB : Il est toujours possible de spécifier  TINYINT[(M)] [UNSIGNED] [ZEROFILL]Un très petit entier. Signé, il couvre l'intervalle-128à127 ; non signé, il couvre0à255.SMALLINT[(M)] [UNSIGNED] [ZEROFILL]Un petit entier. Signé, il couvre l'intervalle-32768à32767; non signé, il couvre0à65535.MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]Un entier de taille intermédiaire. Signé, il couvre l'intervalle-8388608à8388607; non signé, il couvre0à16777215.INT[(M)] [UNSIGNED] [ZEROFILL]Un entier de taille normale. Signé, il couvre l'intervalle-2147483648à2147483647; non signé, il couvre0à4294967295.INTEGER[(M)] [UNSIGNED] [ZEROFILL]Un synonyme pourINT.BIGINT[(M)] [UNSIGNED] [ZEROFILL]Un entier de grande taille. Signé, il couvre l'intervalle-9223372036854775808à9223372036854775807; non signé, il couvre0à18446744073709551615.
NB : toutes les opérations arithmétiques effectuée en interne, utilise desBIGINTsignés ouDOUBLE, donc il ne faut pas utiliser les grands entiers non signé au delà de9223372036854775807(63 bits), hormis pour les fonctions sur les bits.
NB : les opérations-,+et * utiliseront des BIGINT , même lorsque les arguments seront des entiers. Cela signifie que la multiplication de deux grands entiers (ou le résultat de fonction qui retourne des entiers) peut avoir des résultats surprenants, si le résultat est supérieur à 9223372036854775807FLOAT(precision) [ZEROFILL]Un nombre à virgule flottante. Il est obligatoirement signé.precisionpeut prendre les valeurs de 4 ou 8.FLOAT(8)est un nombre à précision double. Ces types sont identiques aux types FLOATet DOUBLEdécrit ci-dessous, mais leur précision peut être paramétrée. Avec MySQL 3.23, ce sont de vrais nombres à virgule flottante, alors qu'avec les anciennes versions,FLOAT(precision)n'avait que 2 décimales. Cette syntaxe a été ajoutée pour assurer la compatibilité ODBC.FLOAT[(M,D)] [ZEROFILL]Un nombre à virgule flottante, en précision simple. Il est toujours signé. Les valeurs sont comprises-3.402823466E+38et-1.175494351E-38.DOUBLE[(M,D)] [ZEROFILL]Un nombre à virgule flottante, en précision double. Il est toujours signé. Les valeurs sont comprises-1.7976931348623157E+308et 2.2250738585072014E-308.DOUBLE PRECISION[(M,D)] [ZEROFILL]REAL[(M,D)] [ZEROFILL]Des synonymes pourDOUBLE.DECIMAL(M,D) [ZEROFILL]Un nombre à virgule flottante. Il est toujours signé. Il se comporte comme une colonneCHAR. Il n'est pas paqué, c'est à dire que le nombre est stocké comme une chaîne de chiffre. Chaque chiffre, le signe moins, la virgule occupe un caractère. Si D vaut 0, le nombre n'aura pas de décimales, ni de virgule. La taille maximale pour les décimales est la même que pour lesDOUBLE, mais en il peut être limité par le choix de ofMetD. Avec MySQL 3.23,Mn'inclut plus le signe moins``-'', ni la virgule des nombres décimaux (norme ANSI SQL.).NUMERIC(M,D) [ZEROFILL]Un synonyme pourDECIMAL.DATEUne date. L'intervalle valide de date va de'1000-01-01'à'9999-12-31'. MySQL affiche lesDATEavec le format , mais il est possible d'affecter desDATEen utilisant indifféremment des chaînes ou des nombres.DATETIMEUne combinaison de date et d'heure. L'intervalle valide va de'1000-01-01 00:00:00'to'9999-12-31 23:59:59'. MySQL afficheDATETIMEavec le format'YYYY-MM-DD HH:MM:SS',mais il est possible d'affecter desDATETIMEen utilisant indifféremment des chaînes ou des nombres.'1970-01-01 00:00:00'à quelque part, durant l'année 2037. MySQL affiche lesTIMESTAMPavec les formatYYYYMMDDHHMMSS,YYMMDDHHMMSS,YYYYMMDDouYYMMDD, suivant queMvaut14(ou absent),12,8ou6, mais il est possible d'affecter desTIMESTAMPen utilisant indifféremment des chaînes ou des nombres. Une colonne de typeTIMESTAMPest très pratique pour enregistrer des dates et heures lors d'unINSERTouUPDATE, car cette colonne sera automatiquement mis à la date et heure de l'opération la plus récente, si aucune valeur n'est précisée. Il est aussi possible d'affecter l'heure courante en assignant la valeurNULLà une colonne de type . (  7.2.6  Types date et heure)TIMEUne mesure de l'heure. L'intervalle valide est'-838:59:59'à'838:59:59'. MySQL afficheTIMEau format 'HH:MM:SS', mais il est possible d'affecter desTIMEen utilisant indifféremment des chaînes ou des nombres.YEARUn an. L'intervalle valide est1901à2155, et0000. MySQL afficheYEARau formatYYYY,mais il est possible d'affecter desYEARen utilisant indifféremment des chaînes ou des nombres}(Le typeYEARest nouveau en MySQL 3.22.)CHAR(M) [BINARY]Une chaîne de caractère de taille fixe, et toujours complétée à droite par des espaces.Mva de 1 à 255 caractères. Les espaces supplémentaires sont supprimés lorsque la valeur est retournée dans une requête. Les tris et comparaisons effectués sur des valeurs de typeCHARsont insensibles à la casse, à moins que le mot cléBINARYsoit précisé.VARCHAR(M) [BINARY]Une chaîne de caractère de longueur variable. Les espaces en fin de chaîne sont supprimés lorsque la chaîne est stockée (ce n'est pas conforme à la norme ANSI SQL). Va de 1 a 255 caractères . Les tris et comparaisons effectués sur des valeurs de typeVARCHARsont insensibles à la casse, à moins que le mot cléBINARYsoit précisé. Voir aussi la section   7.6.1  Modifications automatiques de type de colonne.TINYBLOBTINYTEXTUn objetBLOBouTEXTavec une longueur maximale de 255 (2^8 - 1). Voir aussi la section   7.6.1  Modifications automatiques de type de colonne.BLOBTEXTUn objetBLOBouTEXTavec une longueur maximale de 65535 (2^16 - 1).   7.6.1  Modifications automatiques de type de colonne.MEDIUMBLOBMEDIUMTEXTUn objetBLOBouTEXTavec une longueur maximale de 16777215 (2^24 - 1).   7.6.1  Modifications automatiques de type de colonne.LONGBLOBLONGTEXTUn objetBLOBouTEXTavec une longueur maximale de 4294967295 (2^32 - 1).   7.6.1  Modifications automatiques de type de colonne.ENUM('value1','value2',...)Une énumération. Un objet chaîne peut prendre une des valeurs contenue dans une liste de valeur'value1','value2',..., ouNULL. UneENUMpeut avoir un maximum de 65535 valeurs distinctes.SET('value1','value2',...)Un ensemble. Un objet chaîne peut prendre une ou plusieurs valeurs, chacun de ces valeur devant être contenue dans une liste de valeurs'value1','value2',.... UnSETpeut prendre jusqu'à 64 éléments.7.2.1 Tailles nécessaires pour le stockage de types de colonnesVoici la liste des espaces mémoire requis, par type. 7.2.2 Types numériques
 7.2.3 Types date et heure
 7.2.4 Types chaîne
 
Les types  
Les types  Si une table possède au moins une colonne de longueur variable, l'enregistrement sera aussi de longueur variable. Il faut noter que lorsqu'une table est créée, MySQL peut, sous certaines conditions, changer le type d'une colonne de longueur variable en un type de colonne de longueur fixe, et vice-versa. Pour plus de détails, 7.6.1 Modifications automatiques de type de colonne. 
La taille d'un objet  
La taille d'un objet  7.2.5 Types numériques
Tous les types entiers disposent d'un attribut optionnel  
Tous les types numériques disposent d'un attribut optionnel  Quand une valeur trop grande est affectée à une colonne, MySQL limitera cette valeur au maximum qu'il peut stocker dans la colonne. 
Par exemple, soit une colonne de type  
Si une colonne est de type  
Ces conversions implicites sont signalées comme des alertes (``warnings''), lors des requêtes incluant  
La taille maximale ( 
MySQL tentera d'enregistrer n'importe quelle valeur, du moment que cette dernière peut être contenue dans la colonne, et malgré le dépassement de limite d'affichage. Par exemple, une colonne de type 
Le type  
La taille maximale d'une valeur  
Pour éviter certains problèmes d'arrondissement, MySQL ajuste toujours les valeurs qu'il enregistre au nombre de décimale de la colonne. Ainsi, pour une colonne de type  7.2.6 Types date et heure
Les types date et heure sont  Voici quelques considérations générales à garder à l'esprit quand on travaille avec les types date et heure : 
 
 7.2.6.1 Bug de l'an 2000 et données de types date
Les types  
Le type  
Le type 
Le type  
La datation automatique intervient sur la première colonne de type 
 
Dans le cas où il y a plusieurs colonnes de type  
Il est possible d'affecter n'importe quelle date à une colonne de type  
 
Ou alors, il est aussi simple d'utiliser une colonne de type 
 Le format utilisé par pour retourner les valeurs de type dépendent de la taille de l'affichage, comme présenté ci dessous. Un complet affiche 14 chiffres, mais il est possible de n'afficher qu'une partie. 
 Toutes les colonnes de type ont besoin de la même quantité de mémoire, quelque soit le format d'affichage. Les formats d'affichage les plus courants sont le 6, le 8, le 12 et le 14. Il est possible d'imposer une taille arbitraire au format d'affichage au moment de la création de la table, mais 0 et toutes les valeurs supérieures à 14 seront ramenées à 14. Les valeurs impaires entre 1 et 13 sont arrondies au nombre entier pair supérieur. 
Il est possible d'affecter des valeurs de type  
 
Toutes les valeurs de type  
Pour les valeurs spécifiées au format chaîne avec des délimiteurs, il n'est pas nécessaire de préciser les deux chiffres pour les mois ou les jours. Par exemple,  
Les valeurs spécifiée au format nombre doivent avoir 6, 8, 12 ou 14 chiffres. Si le nombre a 8 ou 14 chiffres, MySQL utilisera respectivement le format  
Les valeurs non délimitées, sont interprétées en fonction de leur longueur. Si la chaîne fait 8 ou 14 caractères, l'année sera considérée comme ayant 4 chiffres. Sinon, l'année n'aura que les deux premiers chiffres. La chaîne est interprétée de gauche à droite, en lisant successivement l'année, le mois, le jour, l'heure, la minute et la seconde, dans la mesure où la chaîne est suffisamment longue. Cela implique qu'il ne faut pas utiliser de chaîne de moins de 6 caractères. Par exemple, la chaîne  
Les colonnes de type  
 Il est possible d'affecter des valeurs de type date dans une variable d'un autre type date. Cependant, cela peut engendrer des altérations ou des pertes d'informations. : 
 Attention aussi aux erreurs de spécifications : 
 7.2.6.2  Le type  | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Value | CHAR(4) | Storage required | VARCHAR(4) | Storage required | 
| '' | '    ' | 4 bytes | '' | 1 byte | 
| 'ab' | 'ab  ' | 4 bytes | 'ab' | 3 bytes | 
| 'abcd' | 'abcd' | 4 bytes | 'abcd' | 5 bytes | 
| 'abcdefgh' | 'abcd' | 4 bytes | 'abcd' | 5 bytes | 
Les valeurs retournées seront les mêmes, car dans tous les cas, les espaces situés en début de chaîne seront effacées
Les valeurs de type CHAR et VARCHAR sont triées et comparées sans tenir compte de la casse, à moins que l'option BINARY ai été activée lors de la création de la table. Cette option signifie que cette colonne sera triée et comparée en tenant compte de la casse, et en fonction de l'ordre de la table ASCII de la machine qui supporte MySQL.
Le mode est contagieux : Cela signifie que si une colonne de type binaire est utilisée dans une expression, la comparaison tiendra compte de la casse.
MySQL peut changer spontanément les types de colonne lors de la création d'une table.. 7.6.1 Modifications automatiques de type de colonne.
BLOB et TEXT
Un BLOB est un binary long object, c'est à dire un objet binaire long, qui peut contenir une certaine quantité d'information. Les quatre types TINYBLOB, BLOB, MEDIUMBLOB et LONGBLOB ne diffèrent que par leur taille maximum. Voir   7.2.1  Tailles nécessaires pour le stockage de types de colonnes.
Les quatre types TINYTEXT, TEXT, MEDIUMTEXT t LONGTEXT correspondent aux quatre types BLOB et ont les mêmes tailles maximum, et les mêmes conditions de stockage. La seule différence entre les types BLOB et TEXT tient aux tris et aux comparaisons : les tris et comparaisons tiennent compte de la casse, dans le cas des TEXT, et n'en tiennent pas compte, dans le cas des BLOB. En d'autres termes, un TEXT est un BLOB insensible à la casse.
Lors de l'affectation d'une valeur de type BLOB ou TEXT dans une colonne trop petite, la valeur est tronquée à la taille de la colonne.
En général, on peut considérer qu'une colonne de type TEXT est une colonne de type VARCHAR, aussi grande que désiré. De la même manière, on peut considérer qu'une colonne de type BLOB est une colonne de type VARCHAR BINARY, aussi grande que possible. Les différences sont :
BLOB et TEXT pour les version de MySQL 3.23.2 ou plus récentes. Les anciennes versions ne le supporte pas.
BLOB t TEXT, contrairement aux colonnes de type VARCHAR.
BLOB and TEXT columns cannot have DEFAULT values.
BLOB t TEXT n'ont pas d'option DEFAULT.
MyODBC utilise le type LONGVARBINARY pour le type BLOB et LONGVARBINARY pour TEXT.
Parce que les types peuvent être extrêmement grands, il y a certaines contraintes à leur utilisation :
GROUP BY ou ORDER BY sur une colonne de type BLOB ou TEXT, il faut commencer par convertir la colonne dans un type à longueur fixe. Pour cela, on utilise la fonction SUBSTRING. Par exemple :
mysql> SELECT commentaires FROM Nom_table , SUBSTRING(commentaires,20) as souschaîne ORDER BY souschaîne;
Si SUBSTRING n'est pas utilisé, le tri portera uniquement sur les max_sort_longueur premiers octets de la colonne. Par défaut, max_sort_longueur vaut 1024, et cette valeur peut être changée en utilisant l'option , lors du démarrage de MySQL. Il est possible d'utiliser la clause GROUP sur un BLOB or TEXT , en spécifiant la position de la colonne, et en utilisant un alias. Par exemple :
mysql> select id,substring(blob_col,1,100) FROM Nom_table
           GROUP BY 2;
mysql> select id,substring(blob_col,1,100) as b FROM Nom_table
           GROUP BY b;
Il faut bien noter que chaque valeur de type est représentée de manière interne par un objet alloué. Contrairement aux autres objets, pour qui l'espace mémoire est réservé à la création de la table.
ENUM
Le type est ENUM une chaîne, dont la valeur est choisi dans une liste de valeurs autorisées, et spécifiées à la création de la table.
Cette valeur peut prendre les valeurs ("") ou NULL sous certaines conditions :
ENUM ( par exemple, une chaîne qui ne serait pas dans la liste des valeurs autorisées), une chaîne vide est insérée à la place, afin d'indiquer une erreur.
ENUM est déclarée NULL, NULL sera alors une valeur valide pour cette colonne, et la valeur par défaut sera aussi NULL. Si une ENUM est déclarée NOT NULL, la valeur par défaut sera le premier élément de la liste de valeurs autorisées.
Chaque énumération a un index.
SELECT pour rechercher des lignes qui auraient une valeur ENUM invalide :
mysql> SELECT * FROM Nom_table WHERE enum_col=0;
NULL est NULL.
Par exemple, une colonne de type ENUM("un", "deux", "trois") peut prendre chacune des valeurs ci-dessous. L'index de la valeur est aussi indiqué.
| Value | Index | 
| NULL | NULL | 
| "" | 0 | 
| "one" | 1 | 
| "two" | 2 | 
| "three" | 3 | 
Une énumération peut avoir au maximum 65535 éléments.
La casse des lettres est sans importance pour l'affection de valeur dans une colonne de type ENUM. Cependant, lorsque ces valeurs sont retournées, elles tiennent compte de la casse des lettres tels qu'elle a été spécifiées à la création de la table.
Lire une valeur de type ENUM dans un contexte numérique permet d'accèder à l'index de la valeur. De même, lors de l'affectation d'un nombre dans une valeur ENUM, le nombre sera traité comme un index, et la valeur enregistrée sera celle de l'énumération, à l'index précisé.
Les valeurs d'une énumération sont triée en fonction de l'ordre dans lequel les éléments de l'énumération sont enregistrés lors de la création de la colonne (en d'autres termes, les valeurs d'une énumération sont triées en fonction de leur index). Par exemple, "a" sera placé avant "b" pour ENUM("a", "b"), mais "b" sera placé avant "a" pour ENUM("b", "a").les chaînes vides sont placées avant les chaînes non vides, et la valeur NULL passe avant toutes les autres.
Pour visualiser toutes les valeurs d'une colonne de type, il faut utiliser SHOW COLUMNS FROM Nom_table LIKE Nom_col_enum et détailler les valeurs de la deuxième colonne.
SET
Un ensemble est une chaîne qui peut avoir aucune, une ou plusieurs valeurs, chaque valeur étant choisie dans une liste de valeur autorisées lors de la création de la table. Les valeurs de type SET qui ont plusieurs valeurs sont spécifiées en séparant les membres par des virgules(``,'').. Par conséquent, les valeurs de type SET ne peuvent pas contenir de virgule.
Par exemple, une colonne de type SET("un", "deux") NOT NULL peut prendre les valeurs suivantes :
""
"un"
"deux"
"un, deux"
Un ensemble peut avoir un maximum de 64 membres distincts.
MySQL enregistre les valeurs de type SET values numériquement, avec le premier élément situé au bit de poids faible. Lorsqu'une valeur de type SET est retournée dans un contexte numérique, les bits à 1 de cette valeurs correspondent à un membre du SET qui appartienne à cette valeur. Si un nombre est enregistré dans une valeur de type SET, alors les bits mis à un de ce nombre détermineront les membres du SET qui appartiennent à la valeur. Par exemple, une colonne a été spécifiée par SET("a","b","c","d").Alors, les membres prennent la valeur suivante :
| SETmember | Decimal value | Binary value | 
| a | 1 | 0001 | 
| b | 2 | 0010 | 
| c | 4 | 0100 | 
| d | 8 | 1000 | 
Pour les valeurs qui contiennent plus d'un membre, l'ordre d'insertion n'importe pas. Une valeur peut être insérée plusieurs fois, elle n'apparaîtra plus qu'une seule fois dans le SET, et sera placé dans l'ordre des membres, à la création du SET. Par exemple, dans une colonne de type SET("a","b","c","d"), alors les valeurs "a, d", "d, a" et "d,a,a,d,d" seront devenues "a, d", lorsqu'elle seront retournées par la base.
Les valeurs de type s SET ont triées par ordre numérique. La valeur NULL est placée avant toutes les autres valeurs non- NULL.
En général, il est possible d'utiliser la clause SELECT sur une colonne de type SET, en utilisant l'opérateur LIKE ou la fonction FIND_IN_SET().
mysql> SELECT * FROM Nom_table WHERE Nom_col LIKE '%valeur%'; mysql> SELECT * FROM Nom_table WHERE FIND_IN_SET(valeur, Nom_col)>0;
Mais les exemples suivants sont aussi corrects
mysql> SELECT * FROM Nom_table WHERE Nom_col = 'val1,val2'; mysql> SELECT * FROM Nom_table WHERE Nom_col & 1;
le premier exemple recherche une valeur exacte ('val1,val2'). Le second exemple recherche les valeurs qui contiennent le premier élément.
Pour visualiser toutes les valeurs d'une colonne de type, il faut utiliser SHOW COLUMNS FROM Nom_table LIKE Nom_col_enum et détailler les valeurs de la deuxième colonne.
Pour une utilisation aussi efficace de l'espace mémoire, il faut utiliser le type de colonne le plus précis possible. Par exemple, pour stocker un entier dont la valeur va de 1 t 99999, MEDIUMINT UNSIGNED est le meilleur type.
La représentation des valeurs monétaires est un problème commun. Avec MySQL, le meilleur choix est le type DECIMAL. Il est enregistré comme une chaîne, ce qui n'entraîne aucune perte de données. Si la précision n'est pas primordiale, le type DOUBLE peut être un bon choix.
Pour une meilleure précision, il est toujours possible de convertir les nombres à virgule fixe en BIGINT. Cela autorise la manipulation d'entier pour les calculs, et il suffit alors de les reconvertir en valeur à virgule flottante au moment de l'affichage.
  10.17  Quel sont les différents formats de lignes? Quand utiliser VARCHAR/CHAR?.
Avec MySQL, tous les types de colonnes peuvent être indexés, à l'exception des types BLOB et TEXT. L'utilisation d'index est le meilleur moyen d'accélérer les performances des clauses SELECT.
Une table peut avoir jusqu'à 16 index. La taille maximale d'un index est de 256 bytes, et cette valeur peut être choisie à la compilation de MySQL.
Il n'est pas possible d'indexer une colonne qui contient des valeurs NULL, donc une colonne indexée doit être déclarée NOT NULL.
Pour les colonnes de type CHAR et VARCHAR, il est possible de préfixer la colonne. C'est un moyen beaucoup plus rapide et qui requiert moins d'espace disque qu'indexer une colonne complète. La syntaxe pour créer une telle colonne est la suivante :
KEY Nom_index(Nom_col(longueur))
L'exemple suivant créer un index pour les 10 premiers caractères de la colonne Nom_col.
mysql> CREATE TABLE test (
           nom  CHAR(200) NOT NULL,
           KEY Nom_index(nom(10)));
MySQL peut créer des indexes sur plusieurs colonnes en même temps. Un index peut contenir jusqu'à 15 colonnes (Avec les colonnes de type CHAR t VARCHAR , il est aussi possible d'utiliser un préfixe lors de l'indexation).
Un index de plusieurs colonnes peut être considéré comme un tableau trié contenant les lignes obtenues en concaténant les valeurs des colonnes indexées.
MySQL gère les index sur plusieurs colonnes de manière à ce que les requêtes qui recherche une valeur connue dans la première colonne (avec une clause WHERE), soient rapides, même si les valeurs pour les autres colonnes ne sont pas précisées.
Par exemple, soit la table suivante :
mysql> CREATE TABLE test (
           id INT NOT NULL,
           nom CHAR(30) NOT NULL,
           prenom CHAR(30) NOT NULL,
           PRIMARY KEY (id),
           INDEX nom_complet (nom, prenom));
Ainsi, l'index nom_complet est un index sur les deux colonnes nom et prénom. L'index sera utilisé lors des requêtes qui recherchent un nom, ou un nom et un prénom. L'index sera donc utilisé lors des requêtes suivantes :
mysql> SELECT * FROM test WHERE nom="Dupont";
mysql> SELECT * FROM test WHERE nom ="Dupont"
                          AND prenom="Michel";
mysql> SELECT * FROM test WHERE nom ="Dupont"
                          AND (prenom ="Michel" OR prenom ="Marie");
mysql> SELECT * FROM test WHERE nom ="Dupont"
                          AND prenom >="M" AND prenom < "N";
Cependant, l'index ne sera pas utilisé lors des requêtes suivantes :
mysql> SELECT * FROM test WHERE prenom ="Michel";
mysql> SELECT * FROM test WHERE nom="Dupont"
                          OR prenom ="Michel";
Afin de simplifier le portage d'applications écrite en SQL sur d'autres base de données, MySQL remplace automatiquement les types présentés ci-dessous par les siens :
| Other vendor type | MySQL type | 
| BINARY(NUM) | CHAR(NUM) BINARY | 
| CHAR VARYING(NUM) | VARCHAR(NUM) | 
| FLOAT4 | FLOAT | 
| FLOAT8 | DOUBLE | 
| INT1 | TINYINT | 
| INT2 | SMALLINT | 
| INT3 | MEDIUMINT | 
| INT4 | INT | 
| INT8 | BIGINT | 
| LONG VARBINARY | MEDIUMBLOB | 
| LONG VARCHAR | MEDIUMTEXT | 
| MIDDLEINT | MEDIUMINT | 
| VARBINARY(NUM) | VARCHAR(NUM) BINARY | 
Ce remplacement intervient à la création de la table. Après la création d'une table, les types retournés par une commande DESCRIBE Nom_table seront les types équivalent de MySQL.