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:
- Avaa Ohjauspaneeli
- Avaa Hallintatyökalut
- Avaa Palvelut
- Löydä PostgreSQL-palvelin-palvelu
- 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.