Postgres VARCHAR vs TEXT

Esittely

Jos työskentelet PostgreSQL:n kanssa, on tärkeää tuntea eri tietotyypit, jotta voit valita oikeat, kun luot tietokantatauluja. Kaksi yleistä PostgreSQL:ssä käytettävää merkkityyppiä ovat TEXT- ja VARCHAR-tyypit. Vaikka näiden kahden tyypin välillä on paljon yhtäläisyyksiä, on myös joitakin keskeisiä eroja. Tässä artikkelissa opimme lisää näistä merkkityypeistä ja vertailemme Postgresin VARCHAR- ja TEXT-tyyppien välisiä eroja.

Edellytykset

Ennen kuin jatkamme Postgresin VARCHAR- ja TEXT-tyyppien vertailua, pysähdymme käymään läpi muutamat ennakkoedellytykset, joita tarvitaan, jotta voisimme seurata tässä artikkelissa esitettyjä esimerkkejä:

  • Varmistaudu siitä, että PostgreSQL-palvelin on asennettu ja konfiguroitu oikein. Palvelun on oltava käynnissä taustalla.

Linux- ja Windows-käyttäjät voivat ladata PostgreSQL:n täältä:

  • Käynnistääksesi PostgreSQL-palvelimen Linux-ympäristössä käytä seuraavaa komentoa:
1
sudo service postgresql start
  • Voit nähdä, onko palvelu käynnissä alla olevalla komennolla:
1
service postgresql status

Komennon tuloste näyttää seuraavalta:

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: PostgreSQL RDBMS:n käynnistys…
Aug 01 14:51:20 user-UX330UAK systemd: PostgreSQL RDBMS:n käynnistäminen.
rivit 1-8/8 (END)
  • Jos työskentelet Windows-koneella, PostgreSQL-palvelimen käynnistämiseen, pysäyttämiseen ja uudelleenkäynnistämiseen voidaan käyttää seuraavia ohjeita:
  1. Avaa Ohjauspaneeli
  2. Avaa Hallintatyökalut
  3. Avaa Palvelut
  4. Löydä PostgreSQL-palvelin-palvelu
  5. Viimeiseksi käynnistä, pysäytä tai käynnistä palvelu uudelleen

Mitkä ovat PostgreSQL:n merkkimerkkityypit?

PostgreSQL:ssä on kolme merkkityyppiä: character(n), joka tunnetaan yleisesti nimellä char(n), character varying(n), joka tunnetaan yleisesti nimellä varchar(n), ja text. Näiden tyyppien osalta n:n arvon on oltava positiivinen kokonaisluku. Kaikki PostgreSQL:n merkkityypit pystyvät tallentamaan merkkijonoja enintään n merkkiä.

Jos yrität tallentaa pidempää merkkijonoa tämän PostgreSQL:n merkkityypin sarakkeeseen, saat virheilmoituksen, elleivät rajan ylittävät merkit koostu kokonaan välilyönneistä. Jos näin on, ylittävä merkkijono tai ylittävät merkit typistetään sallittuun enimmäispituuteen.

Tietotyyppi VARCHAR käyttäytyy samalla tavalla kuin tietotyyppi TEXT, kun n:n arvoa ei määritetä. Molempien merkkityyppien suorituskyky on samanlainen myös silloin, kun n jätetään ilmoittamatta.

Muista tietokannoista poiketen PostgreSQL:n merkkityypit eivät eroa toisistaan suorituskyvyssä. Useimmiten käytämme TEXT– tai VARCHAR-merkkiä tarpeistamme riippuen; VARCHAR(n)-merkkiä käytämme silloin, kun haluamme PostgreSQL:n suorittavan pituusrajoitusten tarkistuksen.

Esimerkkejä PostgreSQL:n merkkityyppien käytöstä

Tässä esimerkissä jatkamme Postgresin VARCHAR vs. TEXT -vertailua tarkastelemalla tarkemmin merkkityyppejä ja niiden toimintaa PostgreSQL-tietokannassa.

Ennen kuin voimme jatkaa esimerkkejämme, meidän on luotava taulukko:

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

Taulumme luomisen jälkeen voimme suorittaa insert-operaation:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
’Tämä esimerkki merkkijono on sarakkeelle varchar’,
’Tämä esimerkki merkkijono on tekstisarakkeelle, joka lisätään PostgreSQL-tauluun’
);

Yllä esitetty lauseke johtaa virheeseen:

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

Tämä virhe johtuu siitä, että sarakkeeseen my_char, jonka tietotyyppi on varchar(8), yritettiin lisätä merkkijono, jossa on yli kahdeksan merkkiä.

Yritetään lisätä esimerkkitietoja uudelleen, tällä kertaa eri arvoilla:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
’Merkkijono’,
’Tämä esimerkki merkkijono on PostgreSQL-taulukkoon lisättävää tekstisaraketta varten’
);

Varmistaaksemme, että lisäysoperaatiomme onnistui, voimme käyttää seuraavaa lauseketta:

1
SELECT * FROM pgsql_char_sample;

Tuloksen pitäisi näyttää jotakuinkin tältä:

1
2
3
4
id | my_char | my_text
—-+———+———————————————————————————-
1 | Merkkijono | Tämä esimerkki merkkijono ON tekstisarakkeelle, joka lisätään PostgreSQL-TAULUKKOON
(1 ROW)

Katsomassamme esimerkissä, näemme, että ainoa ero VARCHAR(n)– ja TEXT-sarakkeiden välillä on se, että VARCHAR-sarakkeelle voidaan asettaa raja. Tässä tapauksessa asetamme VARCHAR-sarakkeen pituudeksi kahdeksan merkkiä, joten pidempiä merkkijonoja ei voida lisätä. Kuten aiemmin mainitsimme, VARCHAR- ja TEXT-merkkityypeillä ei ole havaittavia eroja suorituskyvyssä.

Johtopäätös

Kun tallennat merkkidataa PostgreSQL:ssä, on tärkeää valita oikea tietotyyppi taulun kullekin sarakkeelle. Tässä artikkelissa vertailimme Postgresin VARCHAR- ja TEXT-merkkityyppejä ja käsittelimme niiden perusyhtäläisyyksiä ja -eroja. Tässä artikkelissa annettujen tietojen avulla olet valmis suunnittelemaan omat tietokantataulusi PostgreSQL:ssä ja valitsemaan oikeat tietotyypit tarpeisiisi.

Vastaa

Sähköpostiosoitettasi ei julkaista.