Postgres VARCHAR vs TEXT

Bevezetés

Ha PostgreSQL-el dolgozol, fontos, hogy tisztában legyél a különböző adattípusokkal, hogy a megfelelőt választhasd az adatbázis tábláinak létrehozásakor. A PostgreSQL-ben használt két gyakori karaktertípus a TEXT és a VARCHAR típus. Bár e két típus között sok hasonlóság van, van néhány alapvető különbség is. Ebben a cikkben többet megtudunk ezekről a karaktertípusokról, és összehasonlítjuk a Postgres VARCHAR vs. TEXT közötti különbségeket.

Előfeltételek

Mielőtt folytatnánk a Postgres VARCHAR vs. TEXT összehasonlítást, álljunk meg, és tekintsünk át néhány előfeltételt, amelyek szükségesek ahhoz, hogy a cikk példáit követni tudjuk:

  • Győződjünk meg arról, hogy a PostgreSQL szerver megfelelően telepítve és konfigurálva van. A szolgáltatásnak a háttérben kell futnia.

Linux és Windows felhasználók letölthetik a PostgreSQL-t innen:

  • A PostgreSQL szerver indításához Linux környezetben használja a következő parancsot:
1
sudo service postgresql start
  • Az alábbiakban látható paranccsal ellenőrizheti, hogy a szolgáltatás fut-e:
1
service postgresql status

A parancs kimenete a következőképpen néz ki:

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 indítása…
Aug 01 14:51:20 user-UX330UAK systemd: PostgreSQL RDBMS indítása.
sorok 1-8/8 (END)
  • Ha Windows gépen dolgozik, a PostgreSQL szerver indításához, leállításához és újraindításához a következő utasításokat használhatja:
  1. Vezérlőpult megnyitása
  2. Felügyeleti eszközök megnyitása
  3. Szolgáltatások megnyitása
  4. Keresd meg a PostgreSQL Server szolgáltatást
  5. Végül indítsd el, állítsd le vagy indítsd újra a szolgáltatást

Melyek a PostgreSQL karaktertípusai?

A PostgreSQL-ben három karaktertípus létezik: character(n), amely általában char(n) néven ismert, character varying(n), amely általában varchar(n) néven ismert, és text. A n értékének pozitív egész számnak kell lennie ezeknél a típusoknál. A PostgreSQL összes karaktertípusa n karakterig terjedő karakterláncok tárolására alkalmas.

Ha ennél hosszabb karakterláncot próbál tárolni egy ilyen PostgreSQL karaktertípus oszlopában, hibaüzenetet kap, kivéve, ha a korlátot meghaladó karakterek teljes egészében szóközökből állnak. Ha ez a helyzet, a túllépő karakterlánc vagy karakterek a megengedett maximális hosszúságra csökkennek.

A VARCHAR adattípus a TEXT adattípushoz hasonlóan viselkedik, ha az n értéke nincs megadva. A két karaktertípus teljesítménye akkor is hasonló, ha az n értéket elhagyjuk.

A többi adatbázissal ellentétben a PostgreSQL karaktertípusok között nincs teljesítménybeli különbség. A legtöbbször a TEXT vagy a VARCHAR-t fogjuk használni az igényeinktől függően; a VARCHAR(n)-t akkor használjuk, ha azt akarjuk, hogy a PostgreSQL végezze el a hosszkorlátok ellenőrzését.

Példák a PostgreSQL karaktertípusok használatával

Ebben a példában folytatjuk a Postgres VARCHAR vs. TEXT összehasonlítást azzal, hogy közelebbről megvizsgáljuk a karaktertípusokat és azok működését a PostgreSQL adatbázisban.

Mielőtt folytathatnánk a példáinkat, létre kell hoznunk egy táblát:

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

A táblánk létrehozása után elvégezhetjük a beszúrási műveletet:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
‘This sample string is for the column varchar’,
‘This sample string is for the text column to be inserted in the PostgreSQL table’
);

A fenti utasítás hibát eredményez:

1
HIBA:

Ez a hiba azért következik be, mert a varchar(8) adattípusú my_char oszlopba nyolc karakternél hosszabb karakterláncot próbáltunk beszúrni.

Próbáljuk meg újra beszúrni a mintaadatokat, ezúttal más értékekkel:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
‘String’,
‘Ez a minta string a PostgreSQL táblába beszúrandó szöveg oszlophoz’
);

Az alábbi utasítással ellenőrizhetjük, hogy a beszúrási műveletünk sikeres volt-e:

1
SELECT * FROM pgsql_char_sample;

Az eredménynek valahogy így kell kinéznie:

1
2
3
4
id | my_char | my_text
—-+———+———————————————————————————-
1 | String | Ez a mintaszöveg a PostgreSQL TABLE
(1 ROW)

A példában megnéztük, láthatjuk, hogy az egyetlen különbség a VARCHAR(n) és TEXT oszlopok között az, hogy a VARCHAR oszlopra korlátot lehet beállítani. Ebben az esetben a VARCHAR-t nyolc karakter hosszúságra állítottuk be, így ennél hosszabb karakterláncok nem illeszthetők be. Mint már említettük, a VARCHAR és a TEXT karaktertípusok teljesítménye között nincs megfigyelhető különbség.

Következtetés

Ha karakteres adatokat tárolunk a PostgreSQL-ben, fontos, hogy a táblázat minden oszlopához a megfelelő adattípust válasszuk. Ebben a cikkben összehasonlítottuk a Postgres VARCHAR vs. TEXT karaktertípusait, megvitatva alapvető hasonlóságaikat és különbségeiket. A cikkben található információk birtokában felkészülten tervezheti meg saját adatbázis-tábláit PostgreSQL-ben, és választhatja ki az igényeinek megfelelő adattípusokat.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.