Postgres VARCHAR vs TEXT

Wprowadzenie

Jeśli pracujesz z PostgreSQL, ważne jest, abyś dobrze rozumiał różne typy danych, abyś mógł wybrać te właściwe podczas tworzenia tabel bazy danych. Dwa popularne typy znaków używane w PostgreSQL to typy TEXT oraz VARCHAR. Chociaż istnieje wiele podobieństw pomiędzy tymi dwoma typami, istnieje również kilka kluczowych różnic. W tym artykule dowiemy się więcej o tych typach znaków i porównamy różnice pomiędzy Postgres VARCHAR vs TEXT.

Warunki wstępne

Zanim przejdziemy do porównania Postgres VARCHAR vs TEXT, zatrzymajmy się na chwilę, aby zapoznać się z kilkoma warunkami wstępnymi, które są wymagane, aby móc podążać za przykładami w tym artykule:

  • Upewnij się, że serwer PostgreSQL został poprawnie zainstalowany i skonfigurowany. Usługa musi być uruchomiona w tle.

Użytkownicy systemów Linux i Windows mogą pobrać PostgreSQL tutaj:

  • Aby uruchomić serwer PostgreSQL w środowisku Linux, należy użyć następującego polecenia:
1
sudo service postgresql start
  • Możesz sprawdzić, czy usługa jest uruchomiona za pomocą polecenia przedstawionego poniżej:
1
service postgresql status

Wyjście tego polecenia będzie wyglądało jak poniżej:

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: Started PostgreSQL RDBMS.
linie 1-8/8 (END)
  • Jeśli pracujesz na komputerze z systemem Windows, poniższe instrukcje mogą być użyte do uruchomienia, zatrzymania i ponownego uruchomienia serwera PostgreSQL:
  1. Otwórz Panel sterowania
  2. Otwórz narzędzia administracyjne
  3. Otwórz usługi
  4. Zlokalizuj usługę serwera PostgreSQL
  5. Na koniec uruchom, zatrzymaj lub uruchom ponownie usługę

Jakie są typy znaków PostgreSQL?

W PostgreSQL występują trzy typy znaków: character(n), który jest powszechnie znany jako char(n), character varying(n), który jest powszechnie znany jako varchar(n), oraz text. Wartość n musi być dodatnią liczbą całkowitą dla tych typów. Wszystkie typy znaków PostgreSQL mogą przechowywać ciągi znaków o długości do n znaków.

Jeśli spróbujesz zapisać dłuższy ciąg znaków w kolumnie tego typu znaków PostgreSQL, otrzymasz błąd, chyba że znaki przekraczające limit składają się wyłącznie ze spacji. Jeśli tak jest, przekroczony łańcuch lub znaki zostaną obcięte do dozwolonej maksymalnej długości.

Typ danych VARCHAR zachowuje się podobnie do typu danych TEXT, gdy wartość n nie jest określona. Wydajność obu typów znaków jest również podobna, gdy wartość n jest pominięta.

W przeciwieństwie do innych baz danych, typy znaków PostgreSQL nie różnią się między sobą wydajnością. Przez większość czasu będziemy używać TEXT lub VARCHAR w zależności od naszych potrzeb; używamy VARCHAR(n), gdy chcemy, aby PostgreSQL sprawdzał ograniczenia długości.

Przykłady użycia typów znaków PostgreSQL

W tym przykładzie będziemy kontynuować nasze porównanie Postgres VARCHAR vs TEXT, przyglądając się bliżej typom znaków i ich działaniu w bazie danych PostgreSQL.

Zanim będziemy mogli przejść do naszych przykładów, będziemy musieli utworzyć tabelę:

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

Po utworzeniu naszej tabeli możemy wykonać operację wstawienia:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
’Ten przykładowy ciąg znaków dotyczy kolumny varchar’,
’Ten przykładowy ciąg znaków dotyczy kolumny tekstowej, która ma zostać wstawiona do tabeli PostgreSQL’
);

Przedstawiona powyżej instrukcja spowoduje wystąpienie błędu:

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

Błąd ten występuje, ponieważ próbowaliśmy wstawić ciąg znaków o długości większej niż osiem znaków do kolumny my_char, która ma typ danych varchar(8).

Spróbujmy ponownie wstawić przykładowe dane, tym razem z innymi wartościami:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
„String”,
„Ten przykładowy ciąg znaków jest dla kolumny tekstowej, która ma być wstawiona do tabeli PostgreSQL’
);

Aby sprawdzić, czy nasza operacja wstawiania zakończyła się sukcesem, możemy użyć następującego stwierdzenia:

1
SELECT * FROM pgsql_char_sample;

Wynik powinien wyglądać coś takiego:

1
2
3
4
id | my_char | my_text
—-+———+—————————————————————.——————-
1 | String | Ten przykładowy ciąg znaków JEST DLA KOLUMNY TEKSTOWEJ, KTÓRA MA BYĆ WSTAWIONA DO TABELI PostgreSQL
(1 ROW)

W przykładzie, któremu się przyjrzeliśmy, widzimy, że jedyną różnicą pomiędzy kolumnami VARCHAR(n) i TEXT jest możliwość ustawienia limitu dla kolumny VARCHAR. W tym przypadku, ustawiliśmy VARCHAR na długość ośmiu znaków, więc ciągi o większej długości nie mogą być wstawiane. Jak już wcześniej wspomnieliśmy, typy znaków VARCHAR oraz TEXT nie mają zauważalnych różnic w wydajności.

Wnioski

Przechowując dane znakowe w PostgreSQL, ważne jest, aby wybrać odpowiedni typ danych dla każdej kolumny w tabeli. W tym artykule porównaliśmy typy znaków Postgres VARCHAR vs TEXT, omawiając ich podstawowe podobieństwa i różnice. Dzięki informacjom zawartym w tym artykule będziesz przygotowany do projektowania własnych tabel baz danych w PostgreSQL i wybierania odpowiednich typów danych dla swoich potrzeb.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.