Ñòðîêîâûå òèïû 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. «Ïîñòåïåííûå èçìåíåíèÿ ñïåöèôèêàöèè ñòîëáöà».



