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
orazTEXT
.CHAR
jest typem znaku o stałej długości, podczas gdyVARCHAR
orazTEXT
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) iTEXT
są równoważne.
- Czy ten poradnik był pomocny ?
- TakNie