Postgres VARCHAR vs TEXT

Introducere

Dacă lucrați cu PostgreSQL, este important să aveți o înțelegere solidă a diferitelor tipuri de date, astfel încât să le puteți alege pe cele corecte atunci când creați tabelele bazei de date. Două tipuri de caractere utilizate în mod obișnuit în PostgreSQL sunt tipurile TEXT și VARCHAR. Deși există multe asemănări între aceste două tipuri, există, de asemenea, câteva diferențe cheie. În acest articol, vom afla mai multe despre aceste tipuri de caractere și vom compara diferențele dintre Postgres VARCHAR vs TEXT.

Precondiții

Înainte de a continua cu comparația noastră Postgres VARCHAR vs TEXT, să ne oprim pentru a trece în revistă câteva condiții prealabile care sunt necesare pentru a urmări exemplele din acest articol:

  • Asigurați-vă că serverul PostgreSQL a fost instalat și configurat corespunzător. Serviciul trebuie să funcționeze în fundal.

Utilizatorii Linux și Windows pot descărca PostgreSQL de aici:

  • Pentru a porni serverul PostgreSQL într-un mediu Linux, utilizați următoarea comandă:
1
sudo service postgresql start
  • Puteți vedea dacă serviciul rulează cu ajutorul comenzii prezentate mai jos:
1
service postgresql status

Legătura de ieșire a acestei comenzi va arăta după cum urmează:

1
2
3
4
5
6
7
8
9
â— postgresql.service – PostgreSQL RDBMS
Loaded: încărcat: încărcat (/lib/systemd/system/postgresql.service; enabled; vendor prese
Active: activ (ieșit) din Thu 2019-08-01 14:51:20 PST; 36min ago
Proces: 1230 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 1230 (code=exited, status=0/SUCCESS)
Aug 01 14:51:20 user-UX330UAK systemd: Starting PostgreSQL RDBMS…
Aug 01 14:51:20 user-UX330UAK systemd: A pornit PostgreSQL RDBMS.
lines 1-8/8 (END)
  • Dacă lucrați pe o mașină Windows, următoarele instrucțiuni pot fi folosite pentru a porni, opri și reporni serverul PostgreSQL:
  1. Deschideți Control Panel
  2. Deschideți Administrative Tools
  3. Deschideți Services
  4. Localizați serviciul PostgreSQL Server
  5. În cele din urmă, porniți, opriți sau reporniți serviciul

Ce sunt tipurile de caractere PostgreSQL?

Există trei tipuri de caractere în PostgreSQL: character(n), care este cunoscut în mod obișnuit sub numele de char(n), character varying(n), care este cunoscut în mod obișnuit sub numele de varchar(n), și text. Valoarea lui n trebuie să fie un număr întreg pozitiv pentru aceste tipuri. Toate tipurile de caractere PostgreSQL sunt capabile să stocheze șiruri de până la n caractere.

Dacă încercați să stocați un șir mai lung într-o coloană a acestui tip de caracter PostgreSQL, veți primi o eroare, cu excepția cazului în care caracterele care depășesc limita sunt compuse în întregime din spații. În acest caz, șirul sau caracterele care depășesc limita vor fi trunchiate la lungimea maximă permisă.

Tipul de date VARCHAR se comportă în mod similar cu tipul de date TEXT atunci când valoarea lui n nu este specificată. Performanța ambelor tipuri de caractere este, de asemenea, similară atunci când n este omis.

În comparație cu alte baze de date, tipurile de caractere PostgreSQL nu au nicio diferență de performanță între ele. În cea mai mare parte a timpului, vom folosi TEXT sau VARCHAR în funcție de nevoile noastre; folosim VARCHAR(n) atunci când dorim ca PostgreSQL să efectueze o verificare a limitelor de lungime.

Exemple de utilizare a tipurilor de caractere PostgreSQL

În acest exemplu, vom continua comparația noastră Postgres VARCHAR vs TEXT, analizând mai îndeaproape tipurile de caractere și modul în care acestea funcționează într-o bază de date PostgreSQL.

Înainte de a putea continua cu exemplele noastre, va trebui să creăm un tabel:

1
2
3
4
5
CREATE TABLE pgsql_char_sample (
id serial PRIMARY KEY,
my_char VARCHAR (8),
my_text TEXT
);

După crearea tabelului nostru, putem efectua o operație de inserție:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
‘Acest șir de probă este pentru coloana varchar’,
‘Acest șir de probă este pentru coloana text care urmează să fie introdusă în tabelul PostgreSQL’
);

Explicația prezentată mai sus va avea ca rezultat o eroare:

1
ERROR: VALUE too long FOR TYPE CHARACTER VARYING(8)

Această eroare apare deoarece am încercat să inserăm un șir cu mai mult de opt caractere în coloana my_char care are un tip de date varchar(8).

Să încercăm să inserăm din nou date de probă, de data aceasta cu valori diferite:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
‘String’,
‘Acest șir de probă este pentru coloana text care urmează să fie inserată în tabelul PostgreSQL’
);

Pentru a verifica dacă operațiunea noastră de inserare a avut succes, putem folosi următoarea instrucțiune:

1
SELECT * FROM pgsql_char_sample;

Rezultatul ar trebui să arate cam așa:

1
2
3
4
id | my_char | my_text
—-+———+———————————————————————————-
1 | String | This sample string IS FOR the text COLUMN TO be inserted IN the PostgreSQL TABLE
(1 ROW)

În exemplul pe care l-am analizat, putem observa că singura diferență între coloanele VARCHAR(n) și TEXT este că se poate stabili o limită pentru coloana VARCHAR. În acest caz, am setat VARCHAR la o lungime de opt caractere, astfel încât șirurile cu o lungime mai mare nu pot fi inserate. Așa cum am menționat anterior, tipurile de caractere VARCHAR și TEXT nu prezintă diferențe observabile în ceea ce privește performanța.

Concluzie

Când stocați date de caractere în PostgreSQL, este important să alegeți tipul de date potrivit pentru fiecare coloană din tabel. În acest articol, am comparat tipurile de caractere Postgres VARCHAR vs. TEXT, discutând asemănările și diferențele lor de bază. Cu ajutorul informațiilor furnizate în acest articol, veți fi pregătit să vă proiectați propriile tabele de baze de date în PostgreSQL și să alegeți tipurile de date corecte pentru nevoile dumneavoastră.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.