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

SQL Procédural MySQL Discussion :

Type de colonne : Les char deviennent des VarChar !?


Sujet :

SQL Procédural MySQL

  1. #1
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut Type de colonne : Les char deviennent des VarChar !?
    J'ai un problème bizzare avec mes colonnes (tables de type InnoDB MySQL 4.1.10 a).


    [P1]
    mysql> describe utilisateurs;
    +--------------+------------------+------+-----+---------+----------------+

    | Field | Type | Null | Key | Default | Extra |

    +--------------+------------------+------+-----+---------+----------------+

    | ID | int(10) unsigned | | PRI | NULL | auto_increment |

    | UserFullName | char(45) | | | | |

    +--------------+------------------+------+-----+---------+----------------+

    2 rows in set (0.01 sec)

    [P2]
    mysql> describe utilisateurs;
    +---------------+------------------+------+-----+---------+----------------
    +
    | Field | Type | Null | Key | Default | Extra
    |
    +---------------+------------------+------+-----+---------+----------------
    +
    | ID | int(10) unsigned | | PRI | NULL | auto_increment
    |
    | UserFullName | varchar(45) | | | |
    |
    | UserLoginName | varchar(25) | | | |
    |
    | UserPassword | varchar(25) | | | |
    |
    | UserPhone | varchar(25) | | | |
    |
    | UserAdress | text | | | |
    |
    +---------------+------------------+------+-----+---------+----------------
    +
    6 rows in set (0.00 sec)

    [P3]
    mysql> describe utilisateurs;
    +--------------+------------------+------+-----+---------+----------------+

    | Field | Type | Null | Key | Default | Extra |

    +--------------+------------------+------+-----+---------+----------------+

    | ID | int(10) unsigned | | PRI | NULL | auto_increment |

    | UserFullName | char(45) | | | | |

    +--------------+------------------+------+-----+---------+----------------+

    2 rows in set (0.00 sec)


    [P4]
    mysql> describe utilisateurs;
    +--------------+------------------+------+-----+---------+----------------+

    | Field | Type | Null | Key | Default | Extra |

    +--------------+------------------+------+-----+---------+----------------+

    | ID | int(10) unsigned | | PRI | NULL | auto_increment |

    | UserFullName | varchar(45) | | | | |

    +--------------+------------------+------+-----+---------+----------------+

    2 rows in set (0.00 sec)

    [P5]
    mysql> alter table utilisateurs modify column UserFullName char(45);
    Query OK, 0 rows affected (0.16 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> describe utilisateurs;
    +--------------+------------------+------+-----+---------+----------------+

    | Field | Type | Null | Key | Default | Extra |

    +--------------+------------------+------+-----+---------+----------------+

    | ID | int(10) unsigned | | PRI | NULL | auto_increment |

    | UserFullName | varchar(45) | YES | | NULL | |

    +--------------+------------------+------+-----+---------+----------------+

    2 rows in set (0.00 sec)

    [P6]
    mysql> alter table utilisateurs modify column UserFullName char(65);
    Query OK, 0 rows affected (0.17 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    [P7]
    mysql> describe utilisateurs;
    +--------------+------------------+------+-----+---------+----------------+

    | Field | Type | Null | Key | Default | Extra |

    +--------------+------------------+------+-----+---------+----------------+

    | ID | int(10) unsigned | | PRI | NULL | auto_increment |

    | UserFullName | varchar(65) | YES | | NULL | |

    +--------------+------------------+------+-----+---------+----------------+

    2 rows in set (0.00 sec)

    mysql>
    P1/ Je crée une table simple, deux colonnes dont une de type Char(45).
    P2/ A l'aide de l'administrateur MySQL, j'augmente d'autres champs mais tout curieusement la première colonne de type Char(45) devient de type Varchar(45)
    P3/ Encore à l'aide de l'outil d'administrattion, j'efface les colonnes que j'ai ajoutées et je remets la seconde colonne à son type original à savoir Char(45)

    Ce fontionnement est-il normal ? Pourquoi les char deviennent des Varchar ???

    Est-il impossible de changer le type d'une colonne Varchar en Char (voir étape P4 à P7 ?

    Merci pour vos suggestions.

  2. #2
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Ce fontionnement est-il normal ? Pourquoi les char deviennent des Varchar ???

    Est-il impossible de changer le type d'une colonne Varchar en Char (voir étape P4 à P7 ?
    Pour les versions antérieures à la 5.0.3

    J'ai regardé dans la documentation en ligne et j'ai trouvé ceci :
    VARCHAR columns with a length less than four are changed to CHAR.

    If any column in a table has a variable length, the entire row becomes variable-length as a result. Therefore, if a table contains any variable-length columns (VARCHAR, TEXT, or BLOB), all CHAR columns longer than three characters are changed to VARCHAR columns. This doesn't affect how you use the columns in any way; in MySQL, VARCHAR is just a different way to store characters. MySQL performs this conversion because it saves space and makes table operations faster.
    Je crois que cà répond aux questions

  3. #3
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    J'enlève [Délestage], ça peut être utile dans le futur
    Pensez au bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/08/2014, 23h38
  2. USA : quand les universités deviennent des trolls de brevets
    Par Stéphane le calme dans le forum Actualités
    Réponses: 6
    Dernier message: 13/07/2013, 16h43
  3. Réponses: 6
    Dernier message: 20/06/2012, 18h07
  4. Réponses: 14
    Dernier message: 09/10/2007, 15h57
  5. Réponses: 3
    Dernier message: 20/09/2006, 22h35

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