logo

MySQL VARCHAR

Varchar in MySQL ist ein Datentyp zum Speichern von Text, dessen Länge maximal sein kann 65535 Zeichen . Die Varchar-Spalten in der Tabelle sind von Zeichenfolge variabler Länge das entweder Zahlen oder Zeichen oder beides enthalten kann. Dieser Datentyp kann vor Version 5.0.3 nur 255 Zeichen speichern, aber ab dieser Version kann er bis zu 65535 Zeichen speichern. Es kann in MySQL als gespeichert werden 1 Byte oder 2 Byte Längenpräfix plus tatsächliche Größe.

Das Längenpräfix gibt die Bytelänge eines Zeichenfolgewerts an, nicht die maximale Größe, die wir festgelegt haben. Wenn Werte nicht mehr als 255 Byte erfordern, verwendet eine Spalte das Längenpräfix plus ein Byte. Wenn Werte mehr als 255 Bytes erfordern, verwendet eine Spalte das Längenpräfix plus zwei Bytes.

Die maximale Länge eines VARCHAR in MySQL unterliegt der maximalen Zeilengröße von 65.535 Byte, die von allen Spalten mit Ausnahme der TEXT-/BLOB-Spalten und des verwendeten Zeichensatzes gemeinsam genutzt wird. Das bedeutet, dass die Gesamtspalte nicht mehr als 65535 Bytes umfassen sollte.

Lassen Sie es uns anhand eines Beispiels verstehen.

Wir werden zwei Tabellen erstellen und sie Test1 und Test2 nennen. Beide Tabellen enthalten zwei Spalten mit den Namen T1 und T2. Führen Sie die folgende Anweisung aus, um eine Tabelle zu erstellen: Test 1 ':

 CREATE TABLE Test1 ( T1 VARCHAR(32765) NOT NULL, T2 VARCHAR(32766) NOT NULL ) CHARACTER SET = 'latin1' COLLATE LATIN1_DANISH_CI; 

Mit der obigen Anweisung wurde eine Tabelle erfolgreich erstellt, da die Spaltenlänge T1 = 32765 plus 2 Bytes und T2 = 32766 plus 2 Bytes gleich 65535 (32765+2+32766+2) ist. Die Spaltenlänge entspricht also der maximalen Zeilengröße von Varchar, die 65535 beträgt.

NullpointerException
MySQL VARCHAR

Jetzt werden wir sehen, was passiert, wenn die Spaltengröße überschreitet Die maximale Größe von Varchar beträgt 65535. Führen Sie die folgende Anweisung aus, in der wir die Größe der Spalte T1 erhöhen, um eine Tabelle zu erstellen Test2 :

 CREATE TABLE Test2 ( T1 VARCHAR(32770) NOT NULL, T2 VARCHAR(32766) NOT NULL ) CHARACTER SET = 'latin1' COLLATE LATIN1_DANISH_CI; 

Nach der Ausführung der obigen Anweisung erzeugt MySQL den Fehler. Das bedeutet, dass die maximale Zeilengröße 65.535 Byte nicht überschreiten darf. In jedem Fall ist die Anweisung bei einem Anstieg fehlgeschlagen und MySQL generiert einen Fehler.

MySQL VARCHAR

Angenommen, wir haben in einem anderen Fall eine Tabelle mit dem Namen erstellt Test3 unter Verwendung der folgenden Anweisung:

 CREATE TABLE Test3 ( Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(5) NOT NULL ); 

Fügen Sie als Nächstes Werte in die Tabelle ein, indem Sie die folgende Anweisung verwenden:

Sammlungen Java
 INSERT INTO Test3(Name) VALUES ('Stephen'); 

Führen Sie nun die obige Anweisung aus. MySQL gibt die Fehlermeldung aus: Die Daten für Spalte „Name“ in Zeile 1 sind zu lang . Die Ausgabe erklärt es klarer.

MySQL VARCHAR

MySQL VARCHAR und Leerzeichen

MySQL füllt beim Speichern keinen Platz für Varchar-Werte auf. MySQL behielt auch die nachgestellten Leerzeichen beim Speichern oder Abrufen von Varchar-Werten bei. Wir können es anhand des folgenden Beispiels verstehen, in dem an insert-Anweisung Fügt Werte hinzu Name Spalte der Tabelle Test3 :

 INSERT INTO Test3(Name) VALUES ('John '); 

Führen Sie als Nächstes die SELECT-Anweisung aus, um die Werte abzurufen.

 SELECT Id, Name, length(Name) FROM Test3; 

Es wird die folgende Ausgabe ausgegeben, bei der MySQL das nachgestellte Leerzeichen in die Längenzählung einbezogen hat, da es die Spaltenlänge nicht erhöht.

MySQL VARCHAR

Wenn wir jedoch versuchen, einen Varchar-Wert mit abschließenden Leerzeichen einzufügen, der die Spaltenlänge überschreitet, wird MySQL dies tun kürzen die nachgestellten Leerzeichen. Außerdem gibt MySQL a aus Warnung . Das folgende Beispiel erklärt es noch deutlicher:

 INSERT INTO Test3(Name) VALUES ('Peter '); 

Die obige Anweisung fügt einen Wert mit der Länge ein sechs in die Namensspalte ein. Der Wert wird weiterhin in die Spalte eingefügt, aber MySQL schneidet das Leerzeichen am Ende ab, bevor der Wert hinzugefügt wird. Mithilfe der folgenden Abfrage können wir überprüfen, ob die Einfügeanweisung erfolgreich hinzugefügt wurde, jedoch mit einer Warnung, die Folgendes anzeigt: Daten für Spalte „Name“ in Zeile 1 abgeschnitten :

MySQL VARCHAR

Unterschied zwischen Char- und Varchar-Datentyp

Die Datentypen char und varchar sind beide folgende ASCII-Zeichen . Sie sind nahezu gleich, unterscheiden sich jedoch in der Speicherung und dem Abruf der Daten aus der Datenbank. Die folgende Tabelle fasst die wesentlichen Unterschiede zwischen den Datentypen char und varchar zusammen:

VERKOHLEN VARCHAR
Es steht für Charakter. Es steht für variablen Charakter.
Es speichert die Werte in fester Länge, die wir beim Erstellen einer Tabelle deklarieren. Es speichert die Werte in einer Zeichenfolge variabler Länge mit einem oder zwei Byte langem Präfix.
Dieser Datentyp kann mit abschließendem Leerzeichen aufgefüllt werden, um die angegebene Länge beizubehalten. Dieser Datentyp kann beim Speichern nicht mit Zeichen, einschließlich Leerzeichen, aufgefüllt werden.
Es darf nicht mehr als 255 Zeichen enthalten. Es kann bis zu 65535 Zeichen enthalten.
Es unterstützt die statische Speicherzuweisung. Es unterstützt die dynamische Speicherzuweisung.