Íàâèãàöèÿ

Ïîèñê ïî Ñàéòó

Ïàðòíåðû

Ñàìîó÷èòåëü. Êíèãè.

Ñòàòèñòèêà

Ñòðîêîâûå òèïû CHAR è VARCHAR â MySQL.

Ãëàâíàÿ Ñòðàíèöà » Êíèãè ïî PHP » MySQL óðîêè äëÿ íà÷èíàþùèõ ñ íóëÿ » Ñòðîêîâûå òèïû CHAR è VARCHAR

Òèïû â MySQL CHAR è VARCHAR ïîäîáíû, íî îòëè÷àþòñÿ ñïîñîáîì èõ õðàíåíèÿ è ïîëó÷åíèÿ.

Äëèíà ñòîëáöà CHAR ôèêñèðîâàíà è çàäàåòñÿ îäíîâðåìåííî ñ òàáëèöåé. Äëèíà ìîæåò áûòü ëþáûì çíà÷åíèåì ìåæäó 1 è 255.  MySQL 3.23 äëèíà CHAR ìîæåò áûòü îò 0 äî 255. Êîãäà çíà÷åíèÿ CHAR ñîõðàíÿþòñÿ â òàáëèöå, îíè äîïîëíÿþòñÿ ñïðàâà ïðîáåëàìè äî íóæíîé äëèíû. Êîãäà çíà÷åíèÿ CHAR áóäóò ïîëó÷åíû èç òàáëèöû, êîíå÷íûå ïðîáåëû áóäóò àâòîìàòè÷åñêè óäàëåíû.

Çíà÷åíèÿ â ñòîëáöàõ VARCHAR ïðåäñòàâëÿþò ñîáîé ñòðîêè ïåðåìåííîé äëèíû. Âû ìîæåòå îáúÿâëÿòü, ÷òî ñòîëáåö VARCHAR áóäåò ëþáîé äëèíû ìåæäó 1 è 255, òî÷íî êàê äëÿ ñòîëáöîâ òèïà CHAR. Îäíàêî, â îòëè÷èå îò CHAR, çíà÷åíèÿ VARCHAR ñîõðàíåíû ñ èñïîëüçîâàíèåì ðîâíî ñòîëüêèõ ñèìâîëîâ, ñêîëüêî òðåáóåòñÿ, ïëþñ îäèí áàéò, ÷òîáû çàïèñàòü äëèíó ñòðîêè. Çíà÷åíèÿ íå äîïîëíÿþòñÿ, âìåñòî ýòîãî êîíå÷íûå ïðîáåëû áóäóò óäàëåíû, êîãäà çíà÷åíèÿ áóäóò ñîõðàíåíû â òàáëèöå. Ýòî óäàëåíèå ïðîáåëîâ îòëè÷àåòñÿ îò ñïåöèôèêàöèè ANSI SQL - òàì îíè îñòàþòñÿ.

Åñëè âû íàçíà÷àåòå çíà÷åíèå ñòîëáöó CHAR èëè VARCHAR, êîòîðîå ïðåâûøàåò ìàêñèìàëüíóþ äëèíó ñòîëáöà, çíà÷åíèå áóäåò óñå÷åíî, ÷òîáû ïîìåñòèòüñÿ â ñòîëáåö.

Òàáë. 5.3 íèæå èëëþñòðèðóåò ðàçëè÷èÿ ìåæäó äâóìÿ òèïàìè ñòîëáöîâ, ïîêàçûâàÿ ðåçóëüòàò ñîõðàíåíèÿ ðàçëè÷íûõ çíà÷åíèé â ñòîëáöû òèïîâ CHAR(4) è VARCHAR(4):

Òàáëèöà 5.3. Ðàçíèöà ìåæäó CHAR(4) È VARCHAR(4)

Çíà÷åíèå CHAR(4) Äëÿ õðàíåíèÿ íàäî VARCHAR(4) Äëÿ õðàíåíèÿ íàäî
" " " " 4 áàéòà " " 1 áàéò
"ab" "ab" 4 áàéòà "ab" 3 áàéò
"abcd" "abcd" 4 áàéòà "abcd" 5 áàéò
"abcdefgh" "abcd" 4 áàéòà "abcd" 5 áàéò

Çíà÷åíèÿ, ïîëó÷åííûå èç ñòîëáöîâ CHAR(4) è VARCHAR(4), áóäóò òå æå ñàìûå â êàæäîì ñëó÷àå ïîòîìó, ÷òî êîíå÷íûå ïðîáåëû óäàëåíû èç ñòîëáöîâ CHAR ïîñëå ïîèñêà.

Çíà÷åíèÿ â ñòîëáöàõ CHAR è VARCHAR ñîðòèðóþòñÿ è ñðàâíèâàþòñÿ áåç ó÷åòà ðåãèñòðà, åñëè àòðèáóò BINARY íå áûë îïðåäåëåí ïðè ñîçäàíèè òàáëèöû. Àòðèáóò BINARY îçíà÷àåò, ÷òî çíà÷åíèÿ ñòîëáöà ñîðòèðóþòñÿ è ñðàâíèâàþòñÿ ñ ó÷åòîì ðåãèñòðà ñîãëàñíî ïîðÿäêó ñèìâîëîâ ñåðâåðíîé (íå êëèåíòñêîé!) ìàøèíû MySQL. BINARY íèêàê íå âîçäåéñòâóåò íà òî, êàê ñòîëáåö áóäåò ñîõðàíåí èëè ïîëó÷åí.

Àòðèáóò BINARY ïðèòÿãèâàåò ê ñåáå. Ýòî îçíà÷àåò, ÷òî, åñëè ñòîëáåö, îòìå÷åííûé êàê BINARY, èñïîëüçóåòñÿ â âûðàæåíèè, âñå âûðàæåíèå ïðèðàâíèâàåòñÿ ê çíà÷åíèþ BINARY.

MySQL ìîæåò òèõî è íåçàìåòíî èçìåíÿòü òèï ñòîëáöà CHAR èëè VARCHAR ïðè ñîçäàíèè òàáëèöû. Ïîäðîáíîñòè â ðàçäåëå 7.3. «Ïîñòåïåííûå èçìåíåíèÿ ñïåöèôèêàöèè ñòîëáöà».