Maison >base de données >tutoriel mysql >MySQL a-t-il varchar2 ?
mysql n'a pas varchar2, seulement varchar. VARCHAR représente une chaîne de longueur variable, pouvant contenir jusqu'à 65 535 caractères ; MySQL traite les valeurs VARCHAR comme un préfixe de 1 ou 2 octets plus les données réelles. VARCHAR2 est un type Oracle qui représente une chaîne de longueur variable et peut stocker des valeurs de 1 à 4 000 octets, ce qui signifie que pour un jeu de caractères à un octet, jusqu'à 4 000 caractères peuvent être stockés dans une colonne VARCHAR2.
L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.
Mysql n'a pas varchar2, seul varchar. Oracle a varchar2, qui représente la longueur d'octets pouvant être hébergée est liée au jeu de caractères de la base de données.
Le type varchar de mysql
VARCHAR est une chaîne de longueur variable dont la longueur peut atteindre 65 535 caractères. MySQL traite les valeurs VARCHAR comme un préfixe de 1 ou 2 octets plus les données réelles.
Le préfixe de longueur spécifie le nombre d'octets de la valeur. Si la colonne nécessite moins de 255 octets, le préfixe de longueur est de 1 octet. Si la colonne nécessite plus de 255 octets, le préfixe de longueur est de deux octets de longueur.
Cependant, la longueur maximale est limitée par la taille maximale de la ligne (65 535 octets) et le jeu de caractères utilisé. Cela signifie que la longueur totale de toutes les colonnes doit être inférieure à 65 535 octets.
Regardons un exemple ci-dessous.
Créez un nouveau tableau avec deux colonnes s1 et s2, avec des longueurs de 32765 (préfixe de longueur +2) et 32766 (+2) respectivement. Notez que 32 765 + 2 + 32 766 + 2 = 65 535, qui correspond à la taille maximale des lignes.
USE testdb; CREATE TABLE IF NOT EXISTS varchar_test ( s1 VARCHAR(32765) NOT NULL, s2 VARCHAR(32766) NOT NULL ) CHARACTER SET 'latin1' COLLATE LATIN1_DANISH_CI;
Cette déclaration a réussi à créer la table. Cependant, si l’on augmente la longueur de la colonne s1 de 1.
USE testdb; CREATE TABLE IF NOT EXISTS varchar_test_2 ( s1 VARCHAR(32766) NOT NULL, -- error s2 VARCHAR(32766) NOT NULL ) CHARACTER SET 'latin1' COLLATE LATIN1_DANISH_CI;
MySQL émettra un message d'erreur :
Error Code: 1118. Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs 0.000 sec
Comme indiqué ci-dessus, la longueur de la ligne est trop grande, donc l'instruction de création a échoué.
MySQL émettra une erreur si vous insérez une chaîne dont la longueur est supérieure à la longueur de la colonne VARCHAR. Prenons l'exemple suivant :
USE testdb; CREATE TABLE items ( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(3) ); INSERT INTO items(title) VALUES('ABCD');
Dans cet exemple, MySQL émet le message d'erreur suivant :
1406 - Data too long for column 'title' at row 1
Type varchar2 d'Oracle
Pour stocker des chaînes de longueur variable, vous pouvez utiliser le type de données Oracle VARCHAR2. Les colonnes VARCHAR2 peuvent stocker des valeurs de 1 à 4 000 octets. Cela signifie que pour un jeu de caractères codé sur un seul octet, jusqu'à 4 000 caractères peuvent être stockés dans une colonne VARCHAR2.
Lors de la création d'une table avec une colonne VARCHAR2, la longueur maximale de la chaîne en octets doit être spécifiée :
VARCHAR2(max_size BYTE)
ou en caractères -
VARCHAR2(max_size CHAR)
Par défaut, si aucun BYTE ou CHAR n'est explicitement spécifié après max_size, alors Oracle utilise BYTE. En d’autres termes, une colonne VARCHAR2(N) peut contenir jusqu’à N octets de caractères.
Oracle génère une erreur si vous stockez une chaîne dont la taille dépasse la longueur maximale d'une colonne VARCHAR2.
Par exemple, si vous définissez une colonne VARCHAR2 d'une longueur maximale de 20, vous pouvez stocker jusqu'à 20 caractères dans un jeu de caractères à un octet. Si 21 caractères ou plus sont stockés, Oracle renvoie une erreur.
De plus, si vous stockez 10 caractères dans une colonne VARCHAR2(20), Oracle n'utilise que 10 octets pour le stockage au lieu de 20 octets. Par conséquent, l'utilisation du type de données VARCHAR2 peut vous aider à économiser l'espace utilisé par votre table.
Lors de la comparaison des valeurs VARCHAR2, Oracle utilise une sémantique de comparaison non complétée.
Longueur maximale de VARCHAR2
À partir d'Oracle 12c, la longueur maximale pouvant être du type de données VARCHAR2 est : 32767. Oracle utilise le paramètre MAX_STRING_SIZE pour contrôler la longueur maximale. Si MAX_STRING_SIZE est STANDARD, la taille maximale de VARCHAR2 est de 4 000 octets. Si MAX_STRING_SIZE est EXTENDED, la limite de taille de VARCHAR2 est 32 767.
Pour obtenir la valeur du paramètre MAX_STRING_SIZE, veuillez utiliser la requête suivante :
SELECT name, value FROM v$parameter WHERE name = 'max_string_size';
Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants -
SHOW PARAMETER max_string_size;
[Recommandations associées : Tutoriel vidéo mysql]
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!