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:
- Vezérlőpult megnyitása
- Felügyeleti eszközök megnyitása
- Szolgáltatások megnyitása
- Keresd meg a PostgreSQL Server szolgáltatást
- 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.