Varchar MySQL ir datu tips, ko izmanto teksta glabāšanai, kura garums var būt maksimālais 65535 rakstzīmes . Varchar kolonnas tabulā ir no mainīga garuma virkne kurā var būt cipari vai rakstzīmes, vai abi. Šis datu tips spēj saglabāt tikai 255 rakstzīmes pirms versijas 5.0.3, taču šajā un jaunākā versijā tajā var būt līdz 65 535 rakstzīmēm. To var saglabāt MySQL kā a 1 baits vai 2 baits garuma prefikss plus faktiskais izmērs.
Garuma prefikss norāda virknes vērtības baita garumu, nevis mūsu iestatīto maksimālo lielumu. Ja vērtībām nav nepieciešami vairāk par 255 baitiem, kolonnā tiek izmantots garuma prefikss plus viens baits. Ja vērtībām ir nepieciešami vairāk nekā 255 baiti, kolonnā tiek izmantots garuma prefikss plus divi baiti.
Maksimālais VARCHAR garums collas MySQL ir pakļauts maksimālajam rindas lielumam 65 535 baiti, kas tiek koplietots starp visām kolonnām, izņemot kolonnas TEXT/BLOB un izmantoto rakstzīmju kopu. Tas nozīmē, ka kopējā kolonna nedrīkst pārsniegt 65 535 baitus.
Ļaujiet mums to saprast, izmantojot piemēru.
Mēs izveidosim divas tabulas un nosauksim tās Test1 un Test2. Abās tabulās ir divas kolonnas ar nosaukumu T1 un T2. Lai izveidotu tabulu, izpildiet šo paziņojumu 1. pārbaudījums ':
CREATE TABLE Test1 ( T1 VARCHAR(32765) NOT NULL, T2 VARCHAR(32766) NOT NULL ) CHARACTER SET = 'latin1' COLLATE LATIN1_DANISH_CI;
Iepriekš minētais apgalvojums veiksmīgi izveidoja tabulu, jo kolonnas garums T1 = 32765 plus 2 baiti un T2 = 32766 plus 2 baiti, kas vienāds ar 65535 (32765+2+32766+2). Tātad kolonnas garums atbilst maksimālajam varchar rindas izmēram, kas ir 65535.
Tagad mēs redzēsim, kas notiek, ja kolonnas izmērs pārsniedz varchar 65535 maksimālais izmērs. Izpildiet tālāk norādīto paziņojumu, kur mums ir jāpalielina kolonnas T1 lielums, lai izveidotu tabulu Tests2 :
CREATE TABLE Test2 ( T1 VARCHAR(32770) NOT NULL, T2 VARCHAR(32766) NOT NULL ) CHARACTER SET = 'latin1' COLLATE LATIN1_DANISH_CI;
Pēc iepriekš minētā paziņojuma izpildes MySQL rada kļūdu. Tas nozīmē, ka maksimālais rindas izmērs nedrīkst pārsniegt 65 535 baitus. Jebkurā gadījumā, ja tas palielinās, paziņojums neizdevās, un MySQL radīs kļūdu.
Citā gadījumā pieņemsim, ka esam izveidojuši tabulu ar nosaukumu Tests3 izmantojot tālāk norādīto paziņojumu:
CREATE TABLE Test3 ( Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(5) NOT NULL );
Pēc tam ievietojiet vērtības tabulā, izmantojot tālāk norādīto paziņojumu:
INSERT INTO Test3(Name) VALUES ('Stephen');
Tagad izpildiet iepriekš minēto paziņojumu. MySQL sniedz kļūdas ziņojumu: Dati ir pārāk gari kolonnai 'Nosaukums' 1. rindā . Izvade to izskaidro skaidrāk.
MySQL VARCHAR un Spaces
MySQL nenodrošina vietu varchar vērtībām, kad tās tiek glabātas. MySQL arī saglabāja beigu atstarpes, kad tās saglabāja vai izguva varchar vērtības. Mēs to varam saprast, izmantojot šādu piemēru, kur an ievietot paziņojumu pievieno vērtības Vārds tabulas kolonna Tests3 :
INSERT INTO Test3(Name) VALUES ('John ');
Pēc tam izpildiet priekšrakstu SELECT, lai izgūtu vērtības.
SELECT Id, Name, length(Name) FROM Test3;
Tas dos šādu izvadi, kur MySQL iekļāva beigu atstarpi garuma skaitīšanā, jo tas nepalielina kolonnas garumu.
Tomēr, mēģinot ievietot varchar vērtību ar beigu atstarpēm, kas pārsniedz kolonnas garumu, MySQL apcirpt beigu atstarpes. Arī MySQL problēmas a brīdinājums . Šis piemērs to izskaidro skaidrāk:
INSERT INTO Test3(Name) VALUES ('Peter ');
Iepriekš minētais paziņojums ievieto vērtību, kuras garums ir seši nosaukuma kolonnā. Vērtība joprojām ir ievietota kolonnā, taču MySQL pirms vērtības pievienošanas saīsina beigu atstarpi. Mēs varam pārbaudīt, izmantojot tālāk norādīto vaicājumu, kurā mēs varam redzēt, ka ievietošanas paziņojums ir veiksmīgi pievienots, bet ar brīdinājumu, kas sniedz: Dati ir saīsināti kolonnai 'name' 1. rindā :
lasiet csv failu java
Atšķirība starp Char un Varchar datu tipu
Tālāk ir norādīti gan char, gan varchar datu tipi ASCII rakstzīme . Tie ir gandrīz vienādi, taču atšķiras datu glabāšanā un izguvē no datu bāzes. Šajā tabulā ir apkopotas būtiskās atšķirības starp char un varchar datu tipu:
CHAR | VARCHAR |
---|---|
Tas raksturo raksturu. | Tas apzīmē mainīgo raksturu. |
Tas saglabā vērtības fiksētā garumā, ko mēs deklarējam, veidojot tabulu. | Tas saglabā vērtības mainīga garuma virknē ar viena vai divu baitu garuma prefiksu. |
Šo datu tipu var papildināt ar beigu atstarpi, lai saglabātu norādīto garumu. | Šo datu tipu nevar papildināt ar rakstzīmēm, tostarp atstarpi, kad tie tiek saglabāti. |
Tajā nedrīkst būt vairāk par 255 rakstzīmēm. | Tajā var būt līdz 65535 rakstzīmēm. |
Tā atbalsta statisko atmiņas piešķiršanu. | Tā atbalsta dinamisko atmiņas piešķiršanu. |