logo

MySQL VARCHAR

Varchar MySQL:ssä on tietotyyppi, jota käytetään tekstin tallentamiseen, jonka pituus voi olla enintään 65535 merkkiä . Taulukon varchar-sarakkeet ovat vaihtuvapituinen merkkijono joka voi sisältää joko numeroita tai merkkiä tai molempia. Tämä tietotyyppi pystyy tallentamaan vain 255 merkkiä ennen versiota 5.0.3, mutta tässä ja uudemmissa versioissa se voi sisältää jopa 65 535 merkkiä. Se voidaan tallentaa MySQL:ään a 1-tavuinen tai 2-tavuinen pituus etuliite plus todellinen koko.

Pituusetuliite määrittää merkkijonoarvon tavupituuden, ei asettamamme enimmäiskokoa. Jos arvot eivät vaadi enempää kuin 255 tavua, sarake käyttää pituuden etuliitettä plus yksi tavu. Jos arvot vaativat enemmän kuin 255 tavua, sarake käyttää pituuden etuliitettä plus kaksi tavua.

VARCHARin enimmäispituus tuumaa MySQL rivin enimmäiskoko on 65 535 tavua, joka jaetaan kaikkien sarakkeiden kesken paitsi TEXT/BLOB-sarakkeissa ja käytetyssä merkistössä. Se tarkoittaa, että sarakkeen kokonaispituus ei saa olla yli 65 535 tavua.

Ymmärtäkäämme se esimerkin avulla.

Luomme kaksi taulukkoa ja annamme sille nimeksi Test1 ja Test2. Molemmissa taulukoissa on kaksi saraketta nimeltä T1 ja T2. Luo taulukko suorittamalla seuraava käsky Testi 1 ':

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

Yllä oleva lauseke luo taulukon onnistuneesti, koska sarakkeen pituus T1 = 32765 plus 2 tavua ja T2 = 32766 plus 2 tavua vastaa 65535 (32765+2+32766+2). Joten sarakkeen pituus täyttää varcharin enimmäisrivikoon, joka on 65535.

MySQL VARCHAR

Nyt aiomme nähdä, mitä tapahtuu, jos sarakkeen koko ylittää varchar 65535:n enimmäiskoko. Suorita alla oleva lauseke, jossa olemme kasvattaneet sarakkeen T1 kokoa taulukon luomiseksi Testi2 :

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

Yllä olevan lauseen suorittamisen jälkeen MySQL tuottaa virheen. Se tarkoittaa, että rivin enimmäiskoko ei voi ylittää 65 535 tavua. Joka tapauksessa, jos se kasvaa, käsky epäonnistui ja MySQL luo virheen.

MySQL VARCHAR

Toisessa tapauksessa oletetaan, että olemme luoneet taulukon nimeltä Testi3 käyttämällä alla olevaa lausetta:

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

Lisää seuraavaksi arvot taulukkoon käyttämällä alla olevaa lausetta:

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

Suorita nyt yllä oleva lause. MySQL antaa virheilmoituksen: Data on liian pitkä rivin 1 sarakkeeseen Nimi . Tulos selittää sen selkeämmin.

MySQL VARCHAR

MySQL VARCHAR ja Spaces

MySQL ei täytä tilaa varchar-arvoille, kun niitä tallennetaan. MySQL säilytti myös välilyönnit, kun ne tallensivat tai hakivat varchar-arvoja. Voimme ymmärtää sen seuraavan esimerkin kautta, jossa an lisää lausunto lisää arvoja Nimi taulukon sarake Testi3 :

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

Suorita seuraavaksi SELECT-käsky noutaaksesi arvot.

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

Se antaa seuraavan tulosteen, jossa MySQL sisällytti lopputilan pituuden laskemiseen, koska se ei lisää sarakkeen pituutta.

tietokoneen organisaatio ja arkkitehtuuri
MySQL VARCHAR

Kuitenkin, kun yritämme lisätä varchar-arvon, jonka lopussa on välilyöntejä, jotka ylittävät sarakkeen pituuden, MySQL katkaista perässä olevat tilat. Myös MySQL-ongelmat a Varoitus . Seuraava esimerkki selittää asian selkeämmin:

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

Yllä oleva lause lisää arvon, jonka pituus on kuusi nimisarakkeeseen. Arvo on edelleen lisätty sarakkeeseen, mutta MySQL katkaisee lopputilan ennen arvon lisäämistä. Voimme varmistaa käyttämällä alla olevaa kyselyä, jossa näemme insert-lauseen lisäyksen onnistuneesti, mutta varoituksella, joka antaa: Tiedot katkaistu sarakkeen nimi rivillä 1 :

MySQL VARCHAR

Ero Char- ja Varchar-tietotyypin välillä

Sekä char- että varchar-tietotyypit ovat seuraavat ASCII-merkki . Ne ovat melkein samat, mutta eroavat tietojen tallentamisesta ja hakemisesta tietokannasta. Seuraavassa taulukossa on yhteenveto olennaisista eroista char- ja varchar-tietotyyppien välillä:

HIILTYÄ VARCHAR
Se edustaa luonnetta. Se tarkoittaa muuttuvaa merkkiä.
Se tallentaa arvot kiinteän pituisena, jonka ilmoitamme luodessasi taulukkoa. Se tallentaa arvot muuttuvapituiseen merkkijonoon, jossa on yksi tai kaksitavuinen etuliite.
Tämä tietotyyppi voidaan täyttää loppuvälillä määritetyn pituuden säilyttämiseksi. Tätä tietotyyppiä ei voi täyttää millään merkillä, mukaan lukien välilyönti, kun ne tallennetaan.
Siinä voi olla enintään 255 merkkiä. Siinä voi olla enintään 65 535 merkkiä.
Se tukee staattista muistin varausta. Se tukee dynaamista muistin varausta.