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,VARCHARorazTEXT.CHARjest typem znaku o stałej długości, podczas gdyVARCHARorazTEXTsą 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) iTEXTsą równoważne.
- Czy ten poradnik był pomocny ?
- TakNie