8791 sujets

Développement web côté serveur, CMS

Modérateur
Salut tout le monde,

Cette question faite référence à ce sujet.

Ma question est assez simple et je pense enrichissante intellectuellement :

Quand on crée une table dans Mysql, comment détermine t'on la valeur maximal d'un champ (tinyint, int, smallint, tinytext, text, varchar, ...) avec la valeur maximal ? Est ce que la valeur maximal qui est par exemple 16 vaut 16 caractères dans le champ ?

Si on détermine une valeur trop grande pour un champ, Quel sera la conséquence ? Struture de table trop lourde et donc accès plus lent ?


Merci de me donner quelques précisions sur ce sujet.

@+ et bonne soirée
Modifié par Nolem (19 Apr 2008 - 19:25)
j'ai un peu de mal a cerner ce que tu veux dire.
a écrit :

Est ce que la valeur maximal qui est par exemple 16 vaut 16 caractères dans le champ ?


tu parles de quel type de données là? varchar? si tu precises pas ta question n'a pas de sens.

a écrit :
Si on détermine une valeur trop grande pour un champ, Quel sera la conséquence ? Struture de table trop lourde et donc accès plus lent ?


Si tu reçois dans un champ une valeur hors limite pas forcement mais c'est de la perte de données pure et simple.

si au contraire c'est toi qui a mis trop grand.
ça peut entrainer un ralentissement bien sur et de l'espace memoire en trop aussi d'ailleurs. etre bloqué par manque d'espace sur le disque dur c'est comme qui dirait ennuyeux.

maintenant tu gagnes en flexibilité pour l'information non prevu au départ.
Modifié par CPascal (16 Apr 2008 - 20:54)
Modérateur
a écrit :
tu parles de quel type de données là? varchar? si tu precises pas ta question n'a pas de sens.


Bonjour CPascal,

À la création de la table, lors de la spécification du type de champ qui peut être par exemple tinyint ou int ou ..., on peut rajouter une valeur numérique comme 16 par exemple.


CREATE TABLE `ma_table` (
`mon_champ` VARCHAR[b]( 16 )[/b] NOT NULL
) ENGINE = innodb;


Donc pour reprendre ma question initiale : Est ce que la valeur maximal qui est par exemple 16 vaut 16 caractères maximum dans le champ ?
Excuse moi si je n'ai pas assez explicite.

@+ et bonne soirée
Salut Nolem Smiley smile ,
Nolem a écrit :

Quand on crée une table dans Mysql, comment détermine t'on la valeur maximal d'un champ (tinyint, int, smallint, tinytext, text, varchar, ...) avec la valeur maximal ? Est ce que la valeur maximal qui est par exemple 16 vaut 16 caractères dans le champ ?

Après relecture de la doc mysql et sauf erreur :

* pour les variables CHAR et VARCHAR le nombre entre parenthèses correspond bien au maximum de caractères.
Par exemple avec un CHAR(4), si on essaie de stocker 'ABCDE' la valeur effectivement sauvegardée sera 'ABCD'

* pour les variables de type numérique décimal (FLOAT, DECIMAL, DOUBLE) comme dans DECIMAL(5,2) le premier chiffre correspond au nombre maximal de caractères et le second précise le nombre de chiffres après la virgule.
Dans l'exemple on peut donc stocker des valeurs de -999,99 à 999,99

* pour les variables de type numérique entier (INT, TINYINT, etc...) les valeurs mini et maxi dépendent directement du type (voir en bas de cette page). Le nombre entre parenthèses n'a de sens qu'avec l'attribut ZEROFILL car il ne correspond qu'à un format d'affichage.
Par exemple un TINYINT(6) UNSIGNED ZEROFILL ne pourra pas stocker de valeur supérieure à 255 mais l'affichage sera sous la forme 000255

A+ Smiley cligne
Modifié par Heyoan (17 Apr 2008 - 21:31)
Modérateur
Salut,


Je vous remercie de cette précieuse précision. Cela devient plus claire dans ma tête. Smiley smile

@+ et merci encore Smiley smile