logo

MySQL VARCHAR

A Varchar a MySQL-ben egy olyan adattípus, amelyet szöveg tárolására használnak, és amelynek hossza legfeljebb 1 lehet 65535 karakter . A táblázat varchar oszlopai a változó hosszúságú karakterlánc amely tartalmazhat számokat vagy karaktereket vagy mindkettőt. Ez az adattípus az 5.0.3-as verzió előtt csak 255 karakter tárolására képes, de ennél a verziónál és újabbnál akár 65535 karakter is elfér benne. MySQL-ben tárolható a 1 bájtos vagy 2 bájtos hossza előtag plusz a tényleges méret.

A hossz előtag a karakterláncérték bájthosszát adja meg, nem pedig az általunk beállított maximális méretet. Ha az értékek nem igényelnek 255 bájtnál többet, akkor egy oszlop hosszúságú előtagot és egy bájtot használ. Ha az értékek több mint 255 bájtot igényelnek, egy oszlop hosszúságú előtagot plusz két bájtot használ.

A VARCHAR maximális hossza hüvelykben MySQL a maximális sorméret 65 535 bájt, amely meg van osztva az összes oszlop között, kivéve a TEXT/BLOB oszlopokat és a használt karakterkészletet. Ez azt jelenti, hogy a teljes oszlop nem lehet több 65 535 bájtnál.

Értsük meg egy példa segítségével.

Létre fogunk hozni két táblát, amelyeket Test1-nek és Test2-nek nevezünk el. Mindkét tábla két T1 és T2 oszlopot tartalmaz. Futtassa a következő utasítást egy tábla létrehozásához 1. teszt ':

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

A fenti utasítás sikeresen hozott létre egy táblázatot, mert az oszlophossz T1 = 32765 plusz 2 bájt és T2 = 32766 plusz 2 bájt, ami egyenlő 65535-tel (32765+2+32766+2). Tehát az oszlop hossza kielégíti a varchar maximális sorméretét, amely 65535.

MySQL VARCHAR

Most meglátjuk, mi történik, ha az oszlop mérete meghaladja a varchar 65535 maximális mérete. Hajtsa végre az alábbi utasítást, ahol megnöveli a T1 oszlop méretét egy táblázat létrehozásához Teszt2 :

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

A fenti utasítás végrehajtása után a MySQL hibát generál. Ez azt jelenti, hogy a maximális sorméret nem haladhatja meg a 65 535 bájtot. Mindenesetre, ha növekszik, az utasítás meghiúsult, és a MySQL hibát generál.

pyspark sql
MySQL VARCHAR

Egy másik esetben tegyük fel, hogy létrehoztunk egy nevű táblát Teszt3 az alábbi állítás segítségével:

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

Ezután szúrjon be értékeket a táblázatba az alábbi utasítással:

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

Most hajtsa végre a fenti utasítást. A MySQL hibaüzenetet ad: Az adatok túl hosszúak az 1. sor „Név” oszlopához . A kimenet világosabban elmagyarázza.

MySQL VARCHAR

MySQL VARCHAR és Spaces

A MySQL nem tölt ki helyet a varchar értékek számára, amikor azokat tárolják. A MySQL a záró szóközöket is megtartotta, amikor a varchar értékeket tárolta vagy lekérte. A következő példán keresztül érthetjük meg, ahol an utasítás beszúrása értékeket ad hozzá a Név táblázat oszlopa Teszt3 :

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

Ezután hajtsa végre a SELECT utasítást az értékek lekéréséhez.

csma és csma cd
 SELECT Id, Name, length(Name) FROM Test3; 

Ez a következő kimenetet adja, ahol a MySQL belevette a záró szóközt a hossz számlálásába, mert nem növeli az oszlop hosszát.

MySQL VARCHAR

Amikor azonban megpróbálunk beszúrni egy varchar értéket olyan záró szóközökkel, amelyek meghaladják az oszlop hosszát, a MySQL csonka a záró terek. Továbbá a MySQL problémái a Figyelem . A következő példa érthetőbben magyarázza ezt:

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

A fenti utasítás beszúr egy értéket, amelynek hossza hat a név oszlopba. Az érték továbbra is be van szúrva az oszlopba, de a MySQL lecsonkítja a záró szóközt az érték hozzáadása előtt. Az alábbi lekérdezéssel ellenőrizhetjük, ahol az insert utasítás sikeresen hozzáadva látható, de egy figyelmeztetéssel, amely a következőket adja: Az 1. sorban lévő „name” oszlop adatai csonkolva :

MySQL VARCHAR

A Char és a Varchar adattípus közötti különbség

A char és a varchar adattípusok egyaránt követik ASCII karakter . Szinte ugyanazok, de különböznek az adatok tárolásában és adatbázisból való lekérésében. Az alábbi táblázat összefoglalja a char és a varchar adattípusok közötti lényeges különbségeket:

CHAR VARCHAR
Jellegzetes. A változó karaktert jelöli.
Rögzített hosszúságú értékeket tárol, amelyeket a táblázat létrehozásakor deklarálunk. Az értékeket egy vagy két bájt hosszúságú előtaggal rendelkező változó hosszúságú karakterláncban tárolja.
Ez az adattípus záró szóközzel kiegészíthető a megadott hosszúság megtartása érdekében. Ez az adattípus nem tölthető ki semmilyen karakterrel, beleértve a szóközt sem, amikor tárolásra kerül.
Nem tartalmazhat 255 karakternél többet. Legfeljebb 65535 karaktert tartalmazhat.
Támogatja a statikus memóriafoglalást. Támogatja a dinamikus memóriakiosztást.