Char ja Varchari erinevus

Mõlemad on andmetüübid paljudes programmeerimiskeeltes ja andmebaasisüsteemides, kus “char” tähistab märki ja “varchar” tähistab muutuvat märki. C-s olev tähis Char tähistab märgitüüpi, mida kasutatakse stringi väärtuste, enamasti UTF-8 kodeeritud märkide ja täisarvude, salvestamiseks. Varchar on seevastu andmetüüp, mis võib sisaldada mis tahes tüüpi määratlemata pikkusega andmeid. Varchar viitab andmevälja haldussüsteemi välja andmetüübile. Ehkki nad mõlemad saavad salvestada stringiväärtusi kuni 8000 tähemärgi pikkuses, nõuab char rohkem salvestusruumi kui varchar. Tehniliselt kasutatakse neid mõlemaid sama tüüpi andmete salvestamiseks, kuid need erinevad nende säilitamise ja hankimise viiside poolest. Vaatame üksikasjalikult nende erinevusi.

Mis on Char?

Char on kindla pikkusega andmetüüp, mida kasutatakse mitte-Unicode-tähemärkide salvestamiseks, järelikult ka nimi (lühike tähemärk). See võtab iga tähemärgi jaoks ühe baiti ruumi, mis on kodeeritud numbriteks - need, mis pärinevad ASCII kodeeringust. Char-tüüpi saab kasutada ka väikeste täisarvude deklareerimiseks. Märgimuutuja deklareerimiseks kasutatakse märksõna 'char', mis tähendab, et üks täht salvestatakse ühte baiti.

Sarnaselt täisarvudega võib ka char olla allkirjastatud või allkirjastamata. See võib hoida allkirjastatud säriväärtusi vahemikus -128 kuni 127 ja sõltuvalt arhitektuurimõõdust võib see olla ka signeerimata, hoides väärtusi vahemikus 0 kuni 255. Sörtiväärtuste salvestamisel on need parempoolse polsterdusega ja täpsustatud pikkusega. . Lõplikud tühikud eemaldatakse nende kättesaamisel.

Näiteks kui deklareerite andmetüübi char (7) muutuja, võtab see alati 7 baiti andmeid sõltumata sellest, kas salvestate ühte või 7 märki, mis tähendab, et veergu saab salvestada maksimaalselt 7 märki.

Mis on Varchar?

Nagu nimest järeldada võib, on Varchar muutuva pikkusega andmetüüp, mis võib sisaldada mis tahes tüüpi andmeid pikkusega 0 kuni 65 535. Varchari väli võib salvestada suvalises suuruses väärtusi kuni teatud piirini, sõltuvalt andmebaasist. Seda saab määratleda kas programmeerimiskeeltes või andmebaasi tasandil. Varchari välja suurus võib olla vahemikus nullist kuni maksimaalse deklareeritud välja pikkuseni.

Muutuva märgi deklareerimiseks kasutatakse märksõna 'varchar'. Varchar võtab muutuva ruumi, mis tähendab, et ta kasutab ainult tähemärkide arvuga võrdset baitide arvu. See aitab vältida ruumi raiskamist, kuna see kasutab ära ainult stringi suuruseks vajalikku ruumi. Mõnes programmeerimiskeeles ja andmebaasisüsteemides eemaldatakse kogu lisaruum andmebaasist automaatselt.

Näiteks - kui kuulutate muutuja varchar (10), kasutab see märkide arvuga võrdset baitide arvu. Seega, kui salvestad ainult ühte märki, võtab see ainult ühe baiti ja kui salvestate 10 tähemärki, võtab see 10 baiti, vältides sellega andmebaasi ruumi raiskamist.

Char ja Varchari erinevus

  1. Andmetüüp

„Char” on fikseeritud pikkusega andmetüüp, mida kasutatakse fikseeritud pikkusega tähemärkide stringi väärtuse salvestamiseks, samas kui „Varchar” on muutuva pikkusega andmetüüp, mida kasutatakse muutuva pikkusega tähtnumbriliste andmete salvestamiseks.

  1. Ladustamise suurus

Tähemärgi väärtuse salvestusmaht on võrdne selle veeru maksimaalse suurusega, mille deklareerite tabeli loomisel. Teisalt on varchari väärtuse salvestusmaht sisestatud andmete tegelik pikkus, mitte selle veeru maksimaalne suurus.

  1. Andmesisestused

Võite kasutada char, kui veeru andmesisestused on eeldatavasti sama suurusega, vastupidi, varchar saab kasutada siis, kui veeru andmesisestuste suurus peaks eelduste kohaselt olema erinev.

  1. Mälu eraldamine

Char kasutab staatilist mälujaotust, varchar aga dünaamilist mälujaotust

  1. Pikkus

Char muutuja pikkus võib olla mis tahes väärtus vahemikus 0 kuni 255, samas kui varchar muutuja pikkus on vahemikus 0 kuni 65 535.

  1. Rakendus

Andmesisestused on ühesugused sümbolitega, mida kasutatakse andmete, näiteks telefoninumbrite, salvestamiseks, samas kui varcharit kasutatakse erinevate andmete, näiteks aadresside salvestamiseks..

Char vs Varchar

Char Varchar
Fikseeritud pikkusega tähemärgiväärtuse salvestamiseks. Kasutatakse muutuva pikkusega tähtnumbriliste andmete salvestamiseks.
Pikkus varieerub vahemikus 0 kuni 255. Pikkus varieerub vahemikus 0 kuni 65 535.
Salvestamiseks kulub märgi kohta 1 bait. Pikkusinfo salvestamiseks on vaja 1 baiti tähemärgi kohta ja 1 või 2 lisabaiti.
Söe mälumaht on sama, mis deklareeritud. Varchari salvestusmaht sõltub konkreetsest salvestatud stringist.
Kasutab staatilist mälujaotust. Kasutab dünaamilist mälujaotust.
Char tuleks kasutada siis, kui muutuja pikkus on teada. Varcharit tuleks kasutada ainult siis, kui muutuja pikkus pole teada.
See võtab vastu ainult tähemärke. See võtab vastu nii märke kui ka numbreid.
See on 50 protsenti kiirem kui Varchar. See on aeglasem kui Char.
Char väärtuse salvestusmaht on võrdne veeru maksimaalse suurusega. Varchari väärtuse salvestusmaht võrdub sisestatud andmete tegeliku pikkusega, mitte veeru maksimaalse suurusega.

Kokkuvõte

  • Nii Char kui ka Varchar on andmetüübid programmeerimiskeeltes ja andmebaasisüsteemides, millel on funktsionaalsuse ja tehnilisuse osas ühiseid jooni. Kuid need erinevad üksteisest märkimisväärselt ladustamise ja väljavõtmise viisi poolest.
  • Kui char viitab tegelaskujule, viitab varchar muutujale. Nagu nimigi ütleb, on char kindla pikkusega andmetüüp, samas kui varchar on muutuva pikkusega andmetüüp.
  • Char võtab kuni 1 baiti tähemärgi kohta, samas kui varchar võtab ka kuni 1 baiti tähemärgi kohta, millele lisandub 1 või 2 baiti pikkuse teabe salvestamiseks. Söe puhul varieerub pikkus vahemikus 0 kuni 255 ja varišarri puhul võib see olla vahemikus 0 kuni 65 535.
  • Kuna süsi on kindla pikkusega, on põllule allesjäänud ruum kaetud toorikutega. Varchar seevastu on muutuva pikkusega, nii et selles on ainult need märgid, mille te sellele määrate.
  • Kui väärtused salvestatakse väljadele char, siis ülejäänud märgid täidetakse valgete tühikutega, samas kui 'varchar' ei lisa täiendavaid tühikuid, kui esitate kindlaksmääratud pikkusest vähem andmeid.