Différence entre CHAR et VARCHAR en SQL
CHAR et VARCHAR sont tous deux utilisés pour stocker des chaînes de caractères dans SQL, mais ils diffèrent considérablement en termes de stockage, de performances et d'utilisation. Voici une comparaison détaillée :
1. Définition
CHAR :
Un type de données caractère de longueur fixe. Il utilise toujours une quantité fixe d'espace de stockage, quelle que soit la longueur des données stockées.
VARCHAR :
Un type de données caractère de longueur variable. Le stockage utilisé dépend de la longueur réelle des données stockées.
2. Comportement de stockage
-
CHAR :
- Alloue la taille maximale définie pour chaque valeur.
- Si la chaîne stockée est plus courte que la taille définie, elle est complétée par des espaces pour remplir l'espace restant.
- Exemple : CHAR(10) utilisera toujours 10 octets, même si la chaîne est "Bonjour" (5 octets).
-
VARCHAR :
- Utilise uniquement la quantité de stockage nécessaire pour la chaîne, plus 1 ou 2 octets supplémentaires pour stocker la longueur de la chaîne.
- Exemple : VARCHAR(10) stockant "Bonjour" (5 octets) utilisera 6 ou 7 octets (5 pour la chaîne 1/2 pour la longueur).
3. Performances
-
CHAR :
- Plus rapide pour les chaînes de longueur fixe car la longueur est prédéterminée et il n'est pas nécessaire de gérer les longueurs variables lors de la récupération des données.
- Idéal pour stocker des données avec des longueurs constantes, telles que des codes postaux ou des codes de pays.
-
VARCHAR :
- Plus efficace en termes de stockage pour les données de longueur variable mais légèrement plus lent pour les opérations en raison de la surcharge liée à la gestion de la longueur.
4. Cas d'utilisation
-
CHAR :
- Idéal pour les données de longueur fixe telles que :
- Codes pays (par exemple, "US", "UK")
- Codes postaux
- Codes produits
- Assure un stockage et une récupération cohérents.
-
VARCHAR :
- Convient aux données de longueur variable telles que :
- Noms (par exemple, « John », « Alexander »)
- Adresses e-mail
- Descriptions ou commentaires
5. Longueur maximale
-
CHAR :
- Prend en charge jusqu'à 255 caractères (selon le système de base de données).
-
VARCHAR :
- Peut stocker jusqu'à 65 535 caractères dans certains systèmes de base de données (par exemple, MySQL), mais le maximum réel dépend de la taille des lignes et du moteur de base de données.
6. Exemples
Utilisation de CHAR :
CREATE TABLE countries (
country_code CHAR(3) NOT NULL
);
INSERT INTO countries (country_code) VALUES ('US'), ('UK'), ('IN');
- Même si « US » est stocké, il occupera 3 octets (« US » avec remplissage).
Utilisation de VARCHAR :
CREATE TABLE users (
username VARCHAR(50)
);
INSERT INTO users (username) VALUES ('Alice'), ('Alexander');
-
"Alice" occupe 6 octets (5 octets pour la chaîne 1 pour la longueur), et "Alexander" occupe 10 octets.
7. Tableau récapitulatif
Aspect |
CHAR |
VARCHAR |
Length |
Fixed-length |
Variable-length |
Storage |
Always uses the defined size. |
Uses only the required size length metadata. |
Performance |
Faster for fixed-length strings. |
Slightly slower due to length management. |
Padding |
Pads with spaces for shorter data. |
No padding; stores exact string. |
Use Case |
Fixed-length data. |
Variable-length data. |
Max Length |
255 characters. |
Up to 65,535 characters. |
Aspect |
CHAR
|
VARCHAR |
ête>
Longueur
|
Longueur fixe |
Longueur variable |
Stockage
|
Utilise toujours la taille définie. |
Utilise uniquement les métadonnées de taille et de longueur requises. |
Performances |
Plus rapide pour les chaînes de longueur fixe. |
Légèrement plus lent en raison de la gestion de la longueur. |
Rembourrage
|
Blocs avec des espaces pour les données plus courtes. |
Pas de remplissage ; stocke la chaîne exacte. |
Cas d'utilisation |
Données de longueur fixe. |
Données de longueur variable. |
Longueur maximale
|
255 caractères. |
Jusqu'à 65 535 caractères. |
Conclusion
Utilisez CHAR pour les données de longueur fixe où la cohérence de la taille est cruciale et où l'efficacité du stockage n'est pas une préoccupation majeure.
Utilisez VARCHAR pour les données de longueur variable afin d'économiser de l'espace de stockage et de gérer des longueurs de chaînes flexibles.
Bonjour, je m'appelle Abhay Singh Kathayat !
Je suis un développeur full-stack avec une expertise dans les technologies front-end et back-end. Je travaille avec une variété de langages et de frameworks de programmation pour créer des applications efficaces, évolutives et conviviales.
N'hésitez pas à me contacter à mon e-mail professionnel : kaashshorts28@gmail.com.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn