Lors de la création d'une table dans MySQL, la longueur de la colonne de type VARCHAR doit être définie clairement. Cependant, pour le type TEXT, il n'est pas nécessaire de préciser la longueur. Alors, quelle est la différence entre VARCHAR et TEXT ?
TEXT
VARCHAR(M)
La longueur maximale du TEXTE est fixée à 2¹⁶-1 = 65535 caractères, alors que la longueur maximale de VARCHAR est variable, jusqu'à 2¹⁶-1. Par conséquent, la taille de TEXT n’est pas sélectionnable, mais celle de VARCHAR l’est.
Une autre différence est que les index ne sont pas autorisés sur les colonnes TEXTE (sauf pour les index de texte intégral). Par conséquent, pour indexer cette colonne, vous devez utiliser VARCHAR. Mais attention, la longueur de l'index est également limitée. Si la colonne VARCHAR est trop longue, l'index ne peut utiliser que les premiers caractères de la colonne VARCHAR (voir la documentation CREATE INDEX).
VARCHAR doit également être utilisé si vous savez que la longueur maximale de la chaîne de saisie possible n'est que M, comme un numéro de téléphone ou un nom. Ensuite, vous pouvez utiliser VARCHAR(30) au lieu de TINYTEXT ou TEXT, de sorte que même si quelqu'un essaie de sauvegarder le texte complet du Seigneur des Anneaux dans la colonne que vous utilisez pour stocker les numéros de téléphone, vous n'aurez qu'à stocker les 30 premiers caractères : )
Modifier :Si le texte à stocker dans la base de données est plus long que 65535 caractères, vous devez sélectionner MEDIUMTEXT ou LONGTEXT, mais attention : la longueur maximale de chaîne stockée est de 16 Mo pour MEDIUMTEXT et de 4 Go pour LONGTEXT. Si vous utilisez LONGTEXT et récupérez les données via PHP (au moins si vous utilisez mysqli et n'utilisez pas la fonction store_result), vous risquez d'obtenir une erreur d'allocation de mémoire car PHP tentera d'allouer 4 Go de mémoire pour garantir que la chaîne entière peut être tamponné. Cela peut également se produire dans d'autres langages que PHP.
Cependant, vous devez toujours vérifier l'entrée (est-elle trop longue ? Contient-elle du code bizarre ?) avant de stocker les données dans la base de données .
Veuillez noter : pour les deux types, l'espace disque requis dépend uniquement de la longueur de la chaîne stockée, et non de la longueur maximale. Par exemple, si vous utilisez le jeu de caractères latin1 et stockez le texte "Test" dans VARCHAR(30), VARCHAR(100) et TINYTEXT, il faudra toujours 5 octets (1 octet pour stocker la longueur de la chaîne, chaque caractère 1 octet) . Si vous stockez le même texte dans une colonne VARCHAR(2000) ou TEXT, cela nécessitera également le même espace, mais dans ce cas cela prendra 6 octets (2 octets pour stocker la longueur de la chaîne, 1 mot par caractère Festival).
Voir la documentation pour plus d'informations.
Enfin, je voudrais ajouter que TEXT et VARCHAR sont des types de données de longueur variable, ils minimiseront donc très probablement l'espace requis pour stocker les données
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!