Yhteenveto: Tässä opetusohjelmassa tutustut PostgreSQL:n merkkitietotyyppeihin, mukaan lukien CHAR
, VARCHAR
ja TEXT
, ja opit valitsemaan oikeat merkkityypit taulukkoihisi.
Tutustuminen PostgreSQL:n merkkityyppeihin
PostgreSQL:ssä on kolme ensisijaista merkkityyppiä: CHARACTER(n)
tai CHAR(n)
, CHARACTER VARYINGING(n)
tai VARCHAR(n)
ja TEXT
, jossa n
on positiivinen kokonaisluku.
Seuraava taulukko havainnollistaa PostgreSQL:n merkkityypit:
Character Types | Description |
CHARACTER VARYING(n) , VARCHAR(n) |
variable-length with length limit |
CHARACTER(n) , CHAR(n) |
kiinteä pituus, tyhjä täytetty |
TEXT , VARCHAR |
muuttuja rajoittamattomalla pituudella |
Kumpaakin CHAR(n)
ja VARCHAR(n)
voi varastoida enintään n
merkkiä. Jos yrität tallentaa merkkijonoa, jossa on enemmän kuin n
merkkiä, PostgreSQL antaa virheilmoituksen.
Yksi poikkeus on kuitenkin se, että jos liialliset merkit ovat kaikki välilyöntejä, PostgreSQL typistää välilyönnit maksimipituuteen (n
) ja tallentaa merkit.
Jos merkkijono heitetään eksplisiittisesti CHAR(n)
:ksi tai VARCHAR(n)
:ksi, PostgreSQL typistää merkkijonon n
merkkiin ennen kuin se lisätään taulukkoon.
Tietotyyppi TEXT
voi tallentaa merkkijonon, jonka pituus on rajoittamaton.
Jos tietotyypille VARCHAR
ei määritetä n-kokonaislukua, tietotyyppi käyttäytyy samoin kuin TEXT
-tietotyyppi. VARCHAR
:n (ilman kokoa n
) ja TEXT
:n suorituskyky on sama.
Tietotyypin VARCHAR
ainoana etuna pituuden määrittelyn antamisesta VARCHAR
-tietotyypille on se, että PostgreSQL antaa virheen, jos yrität lisätä VARCHAR(n)
-sarakkeeseen VARCHAR(n)
merkkijonon, jossa on enemmän kuin n
merkkiä.
Toisin kuin VARCHAR
, CHARACTER
tai CHAR
ilman pituuden määrittelyä (n
) on sama kuin CHARACTER(1)
tai CHAR(1)
.
Poikkeuksena muista tietokantajärjestelmistä, PostgreSQL:ssä ei ole suorituskykyeroa kolmen merkkityypin välillä.
Useimmissa tapauksissa kannattaa käyttää TEXT
tai VARCHAR
. Ja käytät VARCHAR(n)
silloin, kun haluat PostgreSQL:n tarkistavan pituuden.
PostgreSQL:n merkkityyppiesimerkkejä
Katsotaanpa esimerkin avulla, miten CHAR
, VARCHAR
ja TEXT
-tietotyypit toimivat.
Luo ensin uusi taulukko nimeltä character_tests:
Code language: SQL (Structured Query Language) (sql)
Lisää sitten uusi rivi character_tests
-taulukkoon.
Code language: SQL (Structured Query Language) (sql)
PostgreSQL antoi virheen:
Code language: SQL (Structured Query Language) (sql)
Tämä johtuu siitä, että x
-sarakkeen tietotyyppi on char(1)
, ja yritimme lisätä sarakkeeseen merkkijonon, jossa on kolme merkkiä. Korjataan se:
Code language: SQL (Structured Query Language) (sql)
PostgreSQL antaa toisen virheen:
Code language: Shell Session (shell)
Tämä johtuu siitä, että yritimme lisätä merkkijonon, jossa on yli 10 merkkiä, sarakkeeseen y
, jonka tietotyyppi on varchar(10)
.
Seuraavalla lausekkeella lisätään uusi rivi character_tests
-tauluun onnistuneesti.
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Code language: Shell Session (shell)
Yhteenveto
- PostgreSQL tukee tietotyyppejä
CHAR
,VARCHAR
jaTEXT
.CHAR
on kiinteäpituinen merkkityyppi, kun taasVARCHAR
jaTEXT
ovat vaihtelevan pituisia merkkityyppejä. - Käytä
VARCHAR(n)
, jos haluat tarkistaa merkkijonon pituuden (n
) ennen sarakkeeseen lisäämistä tai päivittämistä. -
VARCHAR
(ilman pituuden määrittelyä) jaTEXT
vastaavat toisiaan.
- Oliko tästä ohjeesta apua?
- KylläEi