Postgres VARCHAR vs TEXT

Inleiding

Als u met PostgreSQL werkt, is het belangrijk om een goed begrip te hebben van de verschillende datatypes, zodat u de juiste kunt kiezen bij het maken van uw databasetabellen. Twee veel gebruikte karakter types in PostgreSQL zijn de TEXT en VARCHAR types. Hoewel er veel overeenkomsten zijn tussen deze twee types, zijn er ook enkele belangrijke verschillen. In dit artikel leren we meer over deze karaktertypen en vergelijken we de verschillen tussen Postgres VARCHAR vs TEXT.

Voorvereisten

Voordat we verder gaan met onze Postgres VARCHAR vs TEXT vergelijking, laten we even stilstaan bij een aantal vereisten die nodig zijn om de voorbeelden in dit artikel te kunnen volgen:

  • Zorg ervoor dat de PostgreSQL server correct is geïnstalleerd en geconfigureerd. De service moet op de achtergrond worden uitgevoerd.

Linux- en Windows-gebruikers kunnen PostgreSQL hier downloaden:

  • Om de PostgreSQL-server in een Linux-omgeving op te starten, gebruikt u het volgende commando:
1
sudo service postgresql start
  • U kunt zien of de service wordt uitgevoerd met het onderstaande commando:
1
service postgresql status

De uitvoer van deze opdracht zal er als volgt uitzien:

1
2
3
4
5
6
7
8
9
â— postgresql.service – PostgreSQL RDBMS
Geladen: geladen (/lib/systemd/postgresql.service; ingeschakeld; vendor prese
Actief: actief (verlaten) sinds 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: Start PostgreSQL RDBMS…
Aug 01 14:51:20 user-UX330UAK systemd: PostgreSQL RDBMS gestart.
regels 1-8/8 (END)
  • Als u op een Windows-machine werkt, kunt u de volgende instructies gebruiken om de PostgreSQL-server te starten, te stoppen en opnieuw op te starten:
  1. Open configuratiescherm
  2. Open administratieve hulpmiddelen
  3. Open diensten
  4. Localiseer de PostgreSQL Server service
  5. Start, stop of herstart ten slotte de service

Wat zijn de PostgreSQL Character Types?

Er zijn drie karakter typen in PostgreSQL: character(n), dat algemeen bekend staat als char(n), character varying(n), dat algemeen bekend staat als varchar(n), en text. De waarde van n moet voor deze types een positief geheel getal zijn. Alle PostgreSQL karakter types kunnen strings tot n karakters opslaan.

Als u een langere string in een kolom van dit PostgreSQL karakter type probeert op te slaan, krijgt u een foutmelding tenzij de karakters die de limiet overschrijden geheel uit spaties bestaan. Als dit het geval is, zullen de string of karakters die de limiet overschrijden worden ingekort tot de toegestane maximale lengte.

Het VARCHAR datatype gedraagt zich vergelijkbaar met het TEXT datatype wanneer de waarde van n niet is opgegeven. De prestaties van beide karakter types zijn ook vergelijkbaar wanneer n wordt weggelaten.

In tegenstelling tot andere databases, is er bij PostgreSQL geen verschil in prestaties tussen de karakter types. Meestal zullen we TEXT of VARCHAR gebruiken, afhankelijk van onze behoeften; we gebruiken VARCHAR(n) wanneer we willen dat PostgreSQL controleert op lengte limieten.

Voorbeelden met behulp van de PostgreSQL karakter types

In dit voorbeeld gaan we verder met onze Postgres VARCHAR vs TEXT vergelijking door de karakter types en hoe ze werken in een PostgreSQL database van dichterbij te bekijken.

Voordat we verder kunnen gaan met onze voorbeelden, moeten we een tabel maken:

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

Nadat we onze tabel hebben gemaakt, kunnen we een invoegbewerking uitvoeren:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
‘Deze voorbeeldtekenreeks is voor de kolom varchar’,
‘Deze voorbeeldtekenreeks is voor de tekstkolom die in de PostgreSQL-tabel moet worden ingevoegd’
);

De bovenstaande verklaring leidt tot een fout:

1
FOUT: VALUE te lang VOOR TYPE CHARACTER VARYING(8)

Deze fout treedt op omdat we hebben geprobeerd een tekenreeks met meer dan acht tekens in te voegen in de kolom my_char die een gegevenstype heeft van varchar(8).

Laten we opnieuw proberen gegevens in te voegen, deze keer met andere waarden:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, mijn_tekst)
VALUES
(
‘String’,
‘Deze voorbeeldtekst is voor de tekstkolom die in de PostgreSQL-tabel moet worden ingevoegd’
);

Om te controleren of onze invoegbewerking geslaagd is, kunnen we het volgende statement gebruiken:

1
SELECT * FROM pgsql_char_sample;

Het resultaat zou er ongeveer zo uit moeten zien:

1
2
3
4
id | my_char | my_text
—-+———+———————————————————————————-
1 | String | Deze voorbeeldtekst IS VOOR de tekst COLUMN TO be inserted IN the PostgreSQL TABLE
(1 ROW)

In het voorbeeld dat we bekeken hebben, kunnen we zien dat het enige verschil tussen de kolommen VARCHAR(n) en TEXT is dat er een limiet kan worden ingesteld voor de kolom VARCHAR. In dit geval stellen we de VARCHAR in op een lengte van acht tekens, zodat strings van een grotere lengte niet kunnen worden ingevoegd. Zoals we al eerder zeiden, hebben de VARCHAR en TEXT karakter types geen waarneembare verschillen in performance.

Conclusie

Wanneer u karakter data in PostgreSQL opslaat, is het belangrijk om het juiste data type te kiezen voor elke kolom in uw tabel. In dit artikel hebben we de Postgres VARCHAR vs TEXT karakter types vergeleken en hun basis overeenkomsten en verschillen besproken. Met de informatie uit dit artikel bent u voorbereid om uw eigen database tabellen in PostgreSQL te ontwerpen en de juiste data types voor uw behoeften te kiezen.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.