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

Langage SQL Discussion :

Différences entre les types text/char/varchar


Sujet :

Langage SQL

  1. #1
    Invité
    Invité(e)
    Par défaut Différences entre les types text/char/varchar
    Bonjour,

    Sur les principaux SGBD j'essaye d'y voir plus clair entre :

    char / char(2)
    varchar / varchar(2)
    text

    Entre le sql oracle,sas, mysql, access,postgresql j'ai entendu par de taille "fixe" ou "insertion a taille variable" .

    Si vous pouviez éclairer ma lanterne

    Merci d'avance

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 543
    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 543
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Le char est un type de longueur fixe, si vous alimentez une colonne char(n) avec la valeur de longueur plus petite que n, le contenu sera complété par des blancs
    Le varchar est un type de longueur variable, la taille effective de la colonne est calculée en fonction du contenu. Un attribut longueur est ajouté, sa longueur fait 2 ou 3 octets selon la longueur max définie.
    Le varchar est avantageux pour les colonnes dont la longueur maximale est significative (au moins 15 ou 20 caractères), dont la longueur de contenu varie fortement d'une ligne à une autre, mais dont la longueur pour une même ligne est plutôt stable.
    Le varchar est désavantageux pour les colonnes dont la longueur maximale est faible (moins de 15-20 caractères) ou dont le contenu pour une même ligne varie très fréquemment, ce qui provoque des déplacements de page data et index.
    Attention, la gestion des différents types de données varie d'un SGBD à l'autre

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    D'accord je note le spécificité de la chose.

    Du coup le champ text de mysql ? Quel est son "but" . C'est une sorte de "big varchar" ou "big char" ? Comme le "big int" qui est plus important que le "int" ou "integer" ?

    Merci d'avance

  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 986
    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 986
    Billets dans le blog
    6
    Par défaut
    La norme SQL impose les types de données suivants :
    CHAR(n) : limités aux caractères de l'ASCII sur 8 octets n indiquant la taille de la zone qui est fixe et sera complétée par des "blancs".
    VARCHAR(n) : limités aux caractères de l'ASCII sur 1 octet n indiquant la taille maximale de zone qui est variable.
    NCHAR(n) : limités aux caractères de l'UNICODE sur 1 octets n indiquant la taille de la zone qui est fixe et sera complétée par des "blancs".
    NVARCHAR(n) : limités aux caractères de l'UNICODE sur 2 octets n indiquant la taille maximale de zone qui est variable.

    Le type TEXT n'existe pas dans la norme SQL et reste spécifique à certains SGBDR (voir leurs doc respectives)

    L'ASCII permettant de stocker les langues de racine greco-latines (alphabets latin, grec et cyrillique)
    L'UNICODE permettant de stocker toutes les langues communément parlée dans le monde, y compris, l'hébreu, l'arbabe, les langues idéographiques asiatiques....
    N voulant dire NATIONAL par opposition au latin qui est la norme INTERNATIONALE

    Certains SGBDR ne respectent pas ces types. C'est le cas d'Oracle et plus encore de MySQL qui fait du grand n'importe quoi. Il faut aller fouiller dans leurs docs....

    Lisez mon livre sur la langage SQL pour en savoir plus :
    Nom : SQL.jpg
Affichages : 3400
Taille : 47,4 Ko

    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
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    J'y vois plus clair . Effectivement je confirme que MySQL aime les trucs "exotiques" du limit au lieu du top , du group_concat (pseudo fonction pour transposer ... ) , le text ...
    Dernière modification par escartefigue ; 09/08/2023 à 13h31. Motif: citation inutile quand on répond au dernier message

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

Discussions similaires

  1. Différences entre les types de jointures
    Par Age_of_Aquarius dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/04/2013, 03h55
  2. Quelles sont les différences entre les types char et int ?
    Par RayBradbury dans le forum Débuter
    Réponses: 3
    Dernier message: 27/03/2011, 16h10
  3. Différence entre les types des acteurs
    Par mimosa803 dans le forum Cas d'utilisation
    Réponses: 1
    Dernier message: 22/11/2009, 19h08
  4. Différences entre les types de fichiers
    Par bh.medali dans le forum Langage
    Réponses: 1
    Dernier message: 05/11/2007, 18h05
  5. fopen -> différences entres les types d'ouvertur
    Par Patrick PETIT dans le forum C
    Réponses: 10
    Dernier message: 01/06/2003, 18h19

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