Postgres VARCHAR vs TEXT

Indledning

Hvis du arbejder med PostgreSQL, er det vigtigt at have en solid forståelse af de forskellige datatyper, så du kan vælge de rigtige, når du opretter dine databasetabeller. To almindelige karaktertyper, der anvendes i PostgreSQL, er TEXT- og VARCHAR-typerne. Selv om der er mange ligheder mellem disse to typer, er der også nogle vigtige forskelle. I denne artikel vil vi lære mere om disse karaktertyper og sammenligne forskellene mellem Postgres VARCHAR vs TEXT.

Forudsætninger

Hvor vi fortsætter med vores sammenligning af Postgres VARCHAR vs TEXT, skal vi holde en pause for at gennemgå nogle få forudsætninger, der er nødvendige for at følge med i eksemplerne i denne artikel:

  • Sørg for, at PostgreSQL-serveren er blevet installeret og konfigureret korrekt. Tjenesten skal køre i baggrunden.

Linux- og Windows-brugere kan downloade PostgreSQL her:

  • For at starte PostgreSQL-serveren op i et Linux-miljø skal du bruge følgende kommando:
1
sudo service postgresql start
  • Du kan se, om tjenesten kører, med kommandoen vist nedenfor:
1
service postgresql status

Opdatet af denne kommando vil se ud som følger:

Service postgresql status

Opdatet af denne kommando vil se således ud:

1
2
3
4
5
6
7
8
9
â— postgresql.service – PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor prese
Active: active (exited) since Thu 2019-08-01 14:51:20 PST; 36min ago
Process: 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: Starting PostgreSQL RDBMS…
Aug 01 14:51:20 user-UX330UAK systemd: Started PostgreSQL RDBMS.
linjer 1-8/8 (END)
  • Hvis du arbejder på en Windows-maskine, kan du bruge følgende instruktioner til at starte, stoppe og genstarte PostgreSQL-serveren:
  1. Åbn Kontrolpanel
  2. Åbn Administrationsværktøjer
  3. Åbn Tjenester
  4. Lokaliser PostgreSQL Server-tjenesten
  5. Slutteligt skal du starte, stoppe eller genstarte tjenesten

Hvad er PostgreSQL-tegntyperne?

Der er tre tegntyper i PostgreSQL: character(n), som almindeligvis er kendt som char(n), character varying(n), som almindeligvis er kendt som varchar(n), og text. Værdien af n skal være et positivt heltal for disse typer. Alle PostgreSQL-tegntyperne kan lagre strenge på op til n tegn.

Hvis du forsøger at lagre en længere streng i en kolonne med denne PostgreSQL-tegntype, vil du få en fejl, medmindre de tegn, der overstiger grænsen, udelukkende består af mellemrum. Hvis dette er tilfældet, vil den overskydende streng eller de overskydende tegn blive afkortet til den tilladte maksimale længde.

Datatypen VARCHAR opfører sig på samme måde som datatypen TEXT, når værdien af n ikke er angivet. Ydelsen af begge karaktertyper er også ens, når n udelades.

I modsætning til andre databaser har PostgreSQL-tegntyperne ingen forskel i ydelse mellem dem. Det meste af tiden vil vi bruge TEXT eller VARCHAR afhængigt af vores behov; vi bruger VARCHAR(n), når vi ønsker, at PostgreSQL udfører kontrol af længdebegrænsninger.

Eksempler med PostgreSQL-tegntyperne

I dette eksempel fortsætter vi vores sammenligning af Postgres VARCHAR vs. TEXT ved at se nærmere på tegntyperne, og hvordan de fungerer i en PostgreSQL-database.

Hvor vi kan fortsætte med vores eksempler, er vi nødt til at oprette en tabel:

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

Når vi har oprettet vores tabel, kan vi udføre en indsætningsoperation:

1
2
3
4
5
6

INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
‘Denne prøvestreng er for kolonnen varchar’,
‘Denne prøvestreng er for den tekstkolonne, der skal indsættes i PostgreSQL-tabellen’
);

Den ovenfor viste erklæring resulterer i en fejl:

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

Denne fejl opstår, fordi vi forsøgte at indsætte en streng med mere end otte tegn i kolonnen my_char, som har datatypen varchar(8).

Lad os prøve at indsætte eksempeldata igen, denne gang med andre værdier:

1
2
3
4
5
6

INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
‘String’,
‘Denne prøvestreng er for den tekstkolonne, der skal indsættes i PostgreSQL-tabellen’
);

For at verificere, at vores indsætningsoperation var vellykket, kan vi bruge følgende erklæring:

1
SELECT * FROM pgsql_char_sample;

Resultatet bør se nogenlunde sådan her ud:

1
2
3
4
id | my_char | my_text

—-+———+———————————————————————————-
1 | String | Denne eksempelstreng ER FOR tekstKOLUMNEN, DER SKAL indsættes I PostgreSQL TABLE
(1 ROW)

I det eksempel, vi kiggede på, kan vi se, at den eneste forskel mellem VARCHAR(n)– og TEXT-kolonnerne er, at der kan sættes en grænse for VARCHAR-kolonnen. I dette tilfælde indstiller vi VARCHAR til en længde på otte tegn, så strenge med en længere længde ikke kan indsættes. Som vi nævnte før, har karaktertyperne VARCHAR og TEXT ingen observerbare forskelle i ydeevne.

Konklusion

Når du gemmer karakterdata i PostgreSQL, er det vigtigt at vælge den rigtige datatype for hver kolonne i din tabel. I denne artikel har vi sammenlignet Postgres VARCHAR- og TEXT-tegntyperne og diskuteret deres grundlæggende ligheder og forskelle. Med oplysningerne i denne artikel vil du være forberedt på at designe dine egne databasetabeller i PostgreSQL og vælge de korrekte datatyper til dine behov.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.