logo

MySQL VARCHAR

Varchar în MySQL este un tip de date folosit pentru stocarea textului a cărui lungime poate avea maximum 65535 caractere . Coloanele varchar din tabel sunt de șir de lungime variabilă care poate conține fie numere, fie caractere sau ambele. Acest tip de date este capabil să stocheze doar 255 de caractere înainte de versiunea 5.0.3, dar cu această versiune și mai târziu, poate conține până la 65535 caractere. Poate fi stocat în MySQL ca un 1-byte sau 2-byte prefix de lungime plus dimensiunea reală.

Prefixul de lungime specifică lungimea de octeți a unei valori șir, nu dimensiunea maximă pe care am setat-o. Dacă valorile nu necesită mai mult de 255 de octeți, o coloană folosește prefixul de lungime plus un octet. Dacă valorile necesită mai mult de 255 de octeți, o coloană folosește prefixul de lungime plus doi octeți.

Lungimea maximă a unui VARCHAR în MySQL este supusă dimensiunii maxime a rândului de 65.535 de octeți, care este partajată între toate coloanele, cu excepția coloanelor TEXT/BLOB și a setului de caractere utilizat. Înseamnă că coloana totală nu trebuie să depășească 65535 de octeți.

sortați grămada

Să-l înțelegem cu ajutorul unui exemplu.

Vom crea două tabele și le vom numi Test1 și Test2. Ambele tabele conțin două coloane numite T1 și T2. Executați următoarea instrucțiune pentru a crea un tabel ' Testul 1 ':

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

Declarația de mai sus a creat cu succes un tabel deoarece lungimea coloanei T1 = 32765 plus 2 octeți și T2 = 32766 plus 2 octeți egal cu 65535 (32765+2+32766+2). Deci, lungimea coloanei satisface dimensiunea maximă a rândului varchar, care este 65535.

MySQL VARCHAR

Acum, vom vedea ce se întâmplă dacă dimensiunea coloanei depaseste dimensiunea maximă a varcharului 65535. Executați instrucțiunea de mai jos în care avem crește dimensiunea coloanei T1 pentru a crea un tabel Testul 2 :

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

După executarea instrucțiunii de mai sus, MySQL produce eroarea. Înseamnă că dimensiunea maximă a rândului nu poate depăși 65.535 de octeți. În orice caz, dacă crește, instrucțiunea a eșuat, iar MySQL va genera o eroare.

MySQL VARCHAR

Într-un alt caz, să presupunem că am creat un tabel numit Testul3 folosind declarația de mai jos:

Java șir înlocuiește toate
 CREATE TABLE Test3 ( Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(5) NOT NULL ); 

Apoi, introduceți valori în tabel folosind instrucțiunea de mai jos:

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

Acum, executați instrucțiunea de mai sus. MySQL dă mesajul de eroare: Datele sunt prea lungi pentru coloana „Nume” de pe rândul 1 . Rezultatul explică mai clar.

MySQL VARCHAR

MySQL VARCHAR și spații

MySQL nu adaugă spațiu pentru valorile varchar atunci când acestea sunt stocate. MySQL a păstrat, de asemenea, spațiile de sfârșit atunci când a stocat sau a preluat valori varchar. O putem înțelege prin următorul exemplu în care an inserare declarație adaugă valori în Nume coloana tabelului Testul3 :

verificarea nulă în java
 INSERT INTO Test3(Name) VALUES ('John '); 

Apoi, executați instrucțiunea SELECT pentru a prelua valorile.

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

Va da următoarea ieșire în care MySQL a inclus spațiul de sfârșit în numărarea lungimii, deoarece nu crește lungimea coloanei.

MySQL VARCHAR

Cu toate acestea, atunci când încercăm să inserăm o valoare varchar cu spații finale care depășesc lungimea coloanei, MySQL va trunchia spatiile de urma. De asemenea, MySQL emite a avertizare . Următorul exemplu explică mai clar:

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

Instrucțiunea de mai sus inserează o valoare a cărei lungime este şase în coloana de nume. Valoarea este încă inserată în coloană, dar MySQL trunchiază spațiul de sfârșit înainte de a adăuga valoarea. Putem verifica folosind interogarea de mai jos, unde putem vedea instrucțiunea insert adăugată cu succes, dar cu un avertisment care oferă: Date trunchiate pentru coloana „nume” de la rândul 1 :

MySQL VARCHAR

Diferența dintre tipul de date Char și Varchar

Tipurile de date char și varchar sunt ambele urmate caracter ASCII . Sunt aproape aceleași, dar diferă în ceea ce privește stocarea și preluarea datelor din baza de date. Următorul tabel rezumă diferențele esențiale dintre tipul de date char și varchar:

CHAR VARCHAR
Are caracter. Acesta reprezintă caracterul variabil.
Stochează valorile în lungime fixă ​​pe care le declarăm în timpul creării unui tabel. Stochează valorile într-un șir de lungime variabilă cu prefix de lungime de unul sau doi octeți.
Acest tip de date poate fi umplut cu spațiu final pentru a păstra lungimea specificată. Acest tip de date nu poate fi completat cu niciun caracter, inclusiv spațiu, atunci când sunt stocate.
Nu poate conține mai mult de 255 de caractere. Poate conține până la 65535 de caractere.
Acceptă alocarea de memorie statică. Acceptă alocarea dinamică a memoriei.