IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

phpmyadmin taille (int)


Sujet :

MySQL

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut phpmyadmin taille (int)
    Bonjour à tous.

    Lorsque l'on crée une table ou ajouter un champ de type int phpmyadmin demander la Taille/valeur?

    A quoi ceci corespond t il?
    Car la taille d'un int est définit par essence?

  2. #2
    Membre habitué Avatar de Abacar94
    Homme Profil pro
    L2 Math-informatique
    Inscrit en
    Novembre 2015
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : L2 Math-informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 103
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par gotcha5832 Voir le message
    Bonjour à tous.

    Lorsque l'on crée une table ou ajouter un champ de type int phpmyadmin demander la Taille/valeur?

    A quoi ceci correspond t il?
    Car la taille d'un int est définit par essence?
    Le int est différent a ce niveau, par exemple
    int(1)
    sa réserve la place ou un chiffre
    int(20)
    pour 20

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut à tous.

    Ne confondez pas le stockage en mémoire de votre nombre et la présentation à l'affichage de ce même nombre.
    Quand on utilise le type "integer", le stockage en mémoire est de 4 octets. Et cette allocation mémoire reste toujours la même !

    Nous pouvons rencontrer deux cas, à savoir le

    --> "integer unsigned", le nombre est non signé et va de 0 à 4.294.967.295.
    --> "integer", le nombre est signé et va de -2.147.483.648 à +2.147.483.647.

    A l'affichage et en tenant compte du signe, il y a au total 11 symboles, 10 en chiffres et 1 en signe.
    C'est pourquoi, on trouve fréquemment cette déclarative "int(11)".
    Vous comprenez maintenant que cela sert pour l'affichage !

    Est-ce franchement utile ?
    Dans la plupart des cas, cela ne sert strictement à rien.
    Mais il existe parfois des exemples où afficher des zéros devant le nombre peut s'avérer pratique.

    Comment l'utiliser ?
    Cela s'utilise obligatoirement avec la déclarative "zerofill"
    Si vous ne précisez pas cette déclarative, le nombre de chiffres à l'affichage ne sert à rien.

    De plus, MySql exige que votre nombre soit non signé. La bonne façon de faire est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    num  integer(11) unsigned zerofill not null
    Soit par exemple, vous déclarative est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    val  integer(11)  zerofill  not null
    si vous entrez la valeur "-15", MySql provoque un "out of range" car votre nombre est signé.
    En effet, avec un "zerofill", mysql force le nombre à "unsigned" obligatoirement.

    Dans quel cas, doit-on l'utiliser ?
    Avec le code postal. Prenons celui de la ville de "Bourg en Bresse" qui est "01000". Soit la déclarative suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    code_postal mediumint(5) unsigned not null
    Inutile de mettre un "integer" car votre code postal ne dépassera pas les "99999" et vous risquez de faire du gaspillage de mémoire pour rien.
    Si vous stockez ce code postal, à l'affichage vous aurez : "1000" sans zéro devant. Pour obtenir le bon affichage, vous devez déclarer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    code_postal mediumint(5) unsigned zerofill not null
    et vous obtiendrez "01000".

    Voici un exemple d'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
        DEFAULT CHARACTER SET `latin1`
        DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    create table `test` (
      `id`    integer(20) unsigned          NOT NULL,
      `val`   integer(20) unsigned ZEROFILL NOT NULL
     
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `test` (`id`,`val`) values
      (9,9),(99,99),(999,999),(9999,9999)
    --------------
     
    --------------
    select * from test
    --------------
     
    +------+----------------------+
    | id   | val                  |
    +------+----------------------+
    |    9 | 00000000000000000009 |
    |   99 | 00000000000000000099 |
    |  999 | 00000000000000000999 |
    | 9999 | 00000000000000009999 |
    +------+----------------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
     
    Appuyez sur une touche pour continuer...

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par gotcha5832 Voir le message
    Bonjour à tous.

    Lorsque l'on crée une table ou ajouter un champ de type int phpmyadmin demander la Taille/valeur?

    A quoi ceci corespond t il?
    Car la taille d'un int est définit par essence?
    En fait MySQmerde est incapable de mettre en œuvre les contraintes CHECK de la norme SQL permettant de limiter un nombre à certaines valeurs. Pour pallier à cela MySQLmerde à inventé la notion de taille de INT qui n'existe pas dans le langage SQL ou il existe les types SMALLINT, INT et BIGINT....

    Ce n'est évidemment qu'un pis allé !

    A lire sur les limitations de cet ersatz de SGBD non relationnel qu'est MySQmerde : http://blog.developpez.com/sqlpro/p9...oudre_aux_yeux

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Points : 63
    Points
    63
    Par défaut
    Salut
    je suis débutant dans mysql et je n'ai pas compris les réponses qui ont été données ici.
    php my admin me demande la longueur de l'id INT et je ne sais pas quoi mettre pour créer la table.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Bonjour Programir

    La taille réelle d'un integer dépend de son type

    • TINYINT = 1 octet (8 bits) ;
    • SMALLINT = 2 octets (16 bits) ;
    • MEDIUMINT = 3 octets (24 bits) ;
    • INT = 4 octets (32 bits) ;
    • BIGINT = 8 octets (64 bits).


    Par ailleurs, MySQL propose une taille d'affichage à paramétrer lors de la définition de la colonne dans l'ordre CREATE TABLE.
    C'est cette taille d'affichage que vous devez renseigner.

  7. #7
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Points : 63
    Points
    63
    Par défaut
    Merci beaucoup

    C'est exactement ce qui m'interessait !

Discussions similaires

  1. taille int max
    Par geekrider dans le forum Ruby
    Réponses: 3
    Dernier message: 23/02/2008, 18h53
  2. [phpMyAdmin] réduire la taille des caractères dans phpMyAdmin
    Par loopback dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 26/02/2007, 13h04
  3. taille d' un tableau de int
    Par lastrecrue dans le forum C
    Réponses: 17
    Dernier message: 23/09/2006, 09h50
  4. Réponses: 1
    Dernier message: 03/04/2006, 17h47
  5. Quelle taille pour un int ?
    Par elitost dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 14/02/2005, 08h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo