V tomto kurzu se seznámíte se znakovými typy dat PostgreSQL, včetně CHAR, VARCHAR a TEXT, a naučíte se, jak vybrat správné znakové typy pro vaše tabulky: CHARACTER(n) nebo CHAR(n), CHARACTER VARYINGING(n) nebo VARCHAR(n) a TEXT, kde n je celé kladné číslo.

Následující tabulka ilustruje typy znaků v PostgreSQL:

Znakové typy Popis
CHARACTER VARYING(n), VARCHAR(n) proměnná délka s omezením délky
CHARACTER(n), CHAR(n) pevná délka, s prázdným polštářem
TEXT, VARCHAR proměnná neomezené délky

Do CHAR(n) i VARCHAR(n) lze uložit až n znaků. Pokud se pokusíte uložit řetězec, který má více než n znaků, PostgreSQL vyhodí chybu.

Jedinou výjimkou však je, že pokud jsou všechny nadbytečné znaky mezery, PostgreSQL mezery zkrátí na maximální délku (n) a znaky uloží.

Pokud řetězec explicitně obsadí CHAR(n) nebo VARCHAR(n), PostgreSQL před vložením do tabulky řetězec zkrátí na n znaků.

Datový typ TEXT může uložit řetězec neomezené délky.

Pokud u datového typu VARCHAR nezadáte celé číslo n, chová se stejně jako datový typ TEXT. Výkonnost VARCHAR (bez velikosti n) a TEXT je stejná.

Jedinou výhodou zadání specifikátoru délky pro datový typ VARCHAR je, že PostgreSQL vyhodí chybu, pokud se pokusíte do sloupce VARCHAR(n) vložit řetězec, který má více než n znaků.

Na rozdíl od VARCHAR je CHARACTER nebo CHAR bez specifikátoru délky (n) stejný jako CHARACTER(1) nebo CHAR(1).

Na rozdíl od jiných databázových systémů není v PostgreSQL mezi třemi znakovými typy žádný výkonnostní rozdíl.

Ve většině případů byste měli použít TEXTnebo VARCHAR. A VARCHAR(n) použijete, když chcete, aby PostgreSQL kontroloval délku.

Příklady znakových typů PostgreSQL

Podívejme se na příklad, jak fungují datové typy CHAR , VARCHAR a TEXT.

Nejprve vytvořte novou tabulku s názvem znak_testy:

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

Poté vložte nový řádek do tabulky character_tests.

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

PostgreSQL vydala chybu:

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

To proto, že datový typ sloupce x je char(1) a my jsme se pokusili do tohoto sloupce vložit řetězec se třemi znaky. Opravíme to:

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

PostgreSQL vydává jinou chybu:

Code language: Shell Session (shell)

To proto, že jsme se pokusili vložit řetězec s více než 10 znaky do sloupce y, který má datový typ varchar(10).

Následující příkaz úspěšně vloží nový řádek do tabulky character_tests.

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

Souhrn

  • PostgreSQL podporuje datové typy CHAR, VARCHAR a TEXT. CHAR je znakový typ s pevnou délkou, zatímco VARCHAR a TEXT jsou znakové typy s různou délkou.
  • Použijete VARCHAR(n), pokud chcete před vložením do sloupce nebo aktualizací ověřit délku řetězce (n).
  • VARCHAR (bez specifikátoru délky) a TEXT jsou ekvivalentní.
  • Byl tento návod užitečný?

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.