logo

MySQL VARCHAR

Varchar MySQL yra duomenų tipas, naudojamas tekstui saugoti, kurio ilgis gali būti maksimalus 65535 simboliai . Lentelėje esantys varchar stulpeliai yra iš kintamo ilgio eilutė kuriame gali būti arba skaitiniai, ir simboliai, arba abu. Šis duomenų tipas gali saugoti tik 255 simbolius iki 5.0.3 versijos, tačiau naudojant šią ir naujesnę versiją jame gali būti iki 65 535 simbolių. Jis gali būti saugomas MySQL kaip a 1 baitų arba 2 baitų ilgio priešdėlis ir tikrasis dydis.

Ilgio priešdėlis nurodo eilutės reikšmės baito ilgį, o ne didžiausią mūsų nustatytą dydį. Jei reikšmėms nereikia daugiau nei 255 baitų, stulpelyje naudojamas ilgio priešdėlis plius vienas baitas. Jei reikšmės reikalauja daugiau nei 255 baitai, stulpelyje naudojamas ilgio priešdėlis plius du baitai.

Didžiausias VARCHAR ilgis coliais MySQL taikomas maksimalus 65 535 baitų eilutės dydis, kuris dalijamas visuose stulpeliuose, išskyrus stulpelius TEXT/BLOB ir naudojamą simbolių rinkinį. Tai reiškia, kad bendras stulpelis neturėtų būti didesnis nei 65 535 baitai.

Supraskime tai pavyzdžio pagalba.

yra santykiai

Sukursime dvi lenteles ir pavadinsime jas Test1 ir Test2. Abiejose lentelėse yra du stulpeliai, pavadinti T1 ir T2. Norėdami sukurti lentelę, atlikite šį teiginį 1 testas ':

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

Aukščiau pateiktas teiginys sėkmingai sukūrė lentelę, nes stulpelio ilgis T1 = 32765 plius 2 baitai ir T2 = 32766 plius 2 baitai lygus 65535 (32765+2+32766+2). Taigi, stulpelio ilgis atitinka didžiausią varchar eilutės dydį, kuris yra 65535.

MySQL VARCHAR

Dabar pamatysime, kas atsitiks, jei stulpelio dydis viršija maksimalus varchar 65535 dydis. Vykdykite toliau pateiktą teiginį, kur mes padidiname stulpelio T1 dydį, kad sukurtumėte lentelę Testas2 :

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

Įvykdęs aukščiau pateiktą teiginį, MySQL pateikia klaidą. Tai reiškia, kad maksimalus eilutės dydis negali viršyti 65 535 baitų. Bet kokiu atveju, jei jis padidėja, pareiškimas nepavyko ir MySQL sugeneruos klaidą.

MySQL VARCHAR

Kitu atveju tarkime, kad sukūrėme lentelę pavadinimu Testas3 naudojant toliau pateiktą teiginį:

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

Tada į lentelę įterpkite reikšmes naudodami toliau pateiktą teiginį:

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

Dabar vykdykite aukščiau pateiktą teiginį. MySQL pateikia klaidos pranešimą: Duomenys per ilgi stulpelyje „Pavadinimas“ 1 eilutėje . Išvestis tai paaiškina aiškiau.

prologo kalba
MySQL VARCHAR

MySQL VARCHAR ir erdvės

MySQL neužpildo vietos varchar reikšmėms, kai jos saugomos. MySQL taip pat išlaikė galines tarpus, kai saugojo arba nuskaito varchar reikšmes. Tai galime suprasti per šį pavyzdį, kur an įterpti teiginį prideda vertes vardas lentelės stulpelis Testas3 :

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

Tada vykdykite SELECT sakinį, kad gautumėte reikšmes.

alfa beta genėjimo pavyzdys
 SELECT Id, Name, length(Name) FROM Test3; 

Tai pateiks tokią išvestį, kurioje „MySQL“ įtraukė galinę erdvę skaičiuojant ilgį, nes tai nepadidina stulpelio ilgio.

MySQL VARCHAR

Tačiau kai bandome įterpti varchar reikšmę su tarpais, kurie viršija stulpelio ilgį, MySQL sutrumpinti galines erdves. Be to, MySQL problemos a įspėjimas . Toliau pateiktame pavyzdyje tai aiškiau paaiškinama:

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

Aukščiau pateiktas teiginys įterpia reikšmę, kurios ilgis yra šeši į pavadinimo stulpelį. Reikšmė vis dar įterpta į stulpelį, bet prieš pridėdamas vertę MySQL sutrumpina galinę erdvę. Galime patikrinti naudodami toliau pateiktą užklausą, kurioje matome sėkmingai pridėtą įterpimo teiginį, tačiau su įspėjimu, kuris suteikia: 1 eilutės stulpelio „name“ duomenys sutrumpinti :

MySQL VARCHAR

Skirtumas tarp Char ir Varchar duomenų tipų

Toliau pateikiami char ir varchar duomenų tipai ASCII simbolis . Jie yra beveik vienodi, tačiau skiriasi duomenų saugojimu ir gavimu iš duomenų bazės. Šioje lentelėje apibendrinami esminiai char ir varchar duomenų tipų skirtumai:

CHAR VARCHAR
Jis pasižymi charakteriu. Tai reiškia kintamą charakterį.
Jis saugo fiksuoto ilgio reikšmes, kurias deklaruojame kurdami lentelę. Jis saugo reikšmes kintamo ilgio eilutėje su vieno arba dviejų baitų ilgio priešdėliu.
Šis duomenų tipas gali būti užpildytas tarpu, kad būtų išlaikytas nurodytas ilgis. Šio tipo duomenų negalima papildyti jokiu simboliu, įskaitant tarpą, kai jie saugomi.
Jame negali būti daugiau nei 255 simboliai. Jame gali būti iki 65535 simbolių.
Jis palaiko statinį atminties paskirstymą. Jis palaiko dinaminį atminties paskirstymą.