Podsumowanie: W tym poradniku poznasz typy znaków PostgreSQL, w tym CHAR, VARCHAR oraz TEXT, a także dowiesz się, jak wybrać odpowiednie typy znaków dla swoich tabel.

Wprowadzenie do typów znaków PostgreSQL

PostgreSQL udostępnia trzy podstawowe typy znaków: CHARACTER(n) lub CHAR(n), CHARACTER VARYINGING(n) lub VARCHAR(n) oraz TEXT, gdzie n jest dodatnią liczbą całkowitą.

Poniższa tabela przedstawia typy znaków w PostgreSQL:

Typy znaków Opis
CHARACTER VARYING(n), VARCHAR(n) zmienna długości z limitem długości
CHARACTER(n), CHAR(n) fixed-length, blank padded
TEXT, VARCHAR variable unlimited length

Zarówno CHAR(n), jak i VARCHAR(n) mogą przechowywać do n znaków. Jeśli spróbujesz zapisać ciąg, który ma więcej niż n znaków, PostgreSQL wyświetli błąd.

Jednym z wyjątków jest to, że jeśli nadmierne znaki są spacjami, PostgreSQL obcina spacje do maksymalnej długości (n) i zapisuje znaki.

Jeśli łańcuch jest rzutowany na CHAR(n) lub VARCHAR(n), PostgreSQL skróci go do n znaków przed wstawieniem do tabeli.

Typ danych TEXT może przechowywać łańcuchy o nieograniczonej długości.

Jeśli nie określisz liczby całkowitej n dla typu danych VARCHAR, zachowuje się on jak typ danych TEXT. Wydajność VARCHAR (bez rozmiaru n) i TEXT jest taka sama.

Jedyną zaletą określenia długości dla typu danych VARCHAR jest to, że PostgreSQL wyświetli błąd, jeśli spróbujesz wstawić ciąg znaków, który ma więcej niż n znaków do kolumny VARCHAR(n).

W przeciwieństwie do VARCHAR, CHARACTER lub CHAR bez specyfikatora długości (n) jest taki sam jak CHARACTER(1) lub CHAR(1).

W odróżnieniu od innych systemów baz danych, w PostgreSQL nie ma różnicy w wydajności pomiędzy trzema typami znaków.

W większości przypadków należy używać TEXT lub VARCHAR. Natomiast VARCHAR(n) używamy, gdy chcemy, aby PostgreSQL sprawdził długość.

Przykłady typów znaków PostgreSQL

Przyjrzyjrzyjmy się przykładowi, aby zobaczyć, jak działają typy danych CHAR , VARCHAR oraz TEXT.

Na początek utwórz nową tabelę o nazwie character_tests:

Code language: SQL (Structured Query Language) (sql)

Następnie wstaw nowy wiersz do tabeli character_tests.

Code language: SQL (Structured Query Language) (sql)

PostgreSQL wystosował błąd:

Code language: SQL (Structured Query Language) (sql)

Powodem tego jest fakt, że typ danych kolumny x to char(1), a my próbowaliśmy wstawić do tej kolumny ciąg znaków składający się z trzech znaków. Naprawmy to:

Code language: SQL (Structured Query Language) (sql)

PostgreSQL wypisuje inny błąd:

Code language: Shell Session (shell)

Powodem tego jest próba wstawienia łańcucha o długości większej niż 10 znaków do kolumny y, która ma typ danych varchar(10).

Poniższe wyrażenie wstawia nowy wiersz do tabeli character_tests z powodzeniem.

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Code language: Shell Session (shell)

Podsumowanie

  • PostgreSQL obsługuje typy danych CHAR, VARCHAR oraz TEXT. CHAR jest typem znaku o stałej długości, podczas gdy VARCHAR oraz TEXT są typami znaków o zmiennej długości.
  • Użyj VARCHAR(n) jeśli chcesz sprawdzić długość łańcucha (n) przed wstawieniem lub aktualizacją kolumny.
  • VARCHAR (bez specyfikatora długości) i TEXT są równoważne.
  • Czy ten poradnik był pomocny ?
  • TakNie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.