Postgres VARCHAR vs TEXT

Introduzione

Se si lavora con PostgreSQL, è importante avere una solida comprensione dei diversi tipi di dati in modo da poter scegliere quelli corretti quando si creano le tabelle del database. Due tipi di carattere comuni usati in PostgreSQL sono i tipi TEXT e VARCHAR. Anche se ci sono molte somiglianze tra questi due tipi, ci sono anche alcune differenze chiave. In questo articolo, impareremo di più su questi tipi di carattere e confronteremo le differenze tra Postgres VARCHAR vs TEXT.

Prequisiti

Prima di procedere con il nostro confronto Postgres VARCHAR vs TEXT, fermiamoci a rivedere alcuni prerequisiti che sono necessari per seguire gli esempi in questo articolo:

  • Assicurati che il server PostgreSQL sia stato correttamente installato e configurato. Il servizio deve essere in esecuzione in background.

Gli utenti Linux e Windows possono scaricare PostgreSQL qui:

  • Per avviare il server PostgreSQL in un ambiente Linux, usa il seguente comando:
1
sudo service postgresql start
  • Puoi vedere se il servizio è in esecuzione con il comando mostrato sotto:
1
service postgresql status

L’output di questo comando sarà come il seguente:

1
2
3
4
5
6
7
8
9
â— postgresql.service – PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor prese
Active: active (exited) since Thu 2019-08-01 14:51:20 PST; 36min ago
Process: 1230 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
PID principale: 1230 (code=exited, status=0/SUCCESS)
Aug 01 14:51:20 user-UX330UAK systemd: Avviato PostgreSQL RDBMS…
Aug 01 14:51:20 user-UX330UAK systemd: Avviato PostgreSQL RDBMS.
linee 1-8/8 (FINE)
  • Se stai lavorando su una macchina Windows, le seguenti istruzioni possono essere utilizzate per avviare, fermare e riavviare il server PostgreSQL:
  1. Apri il Pannello di Controllo
  2. Apri gli Strumenti di Amministrazione
  3. Apri i Servizi
  4. Cerca il servizio PostgreSQL Server
  5. Infine, avvia, ferma o riavvia il servizio

Quali sono i tipi di carattere PostgreSQL?

Ci sono tre tipi di carattere in PostgreSQL: character(n), che è comunemente conosciuto come char(n), character varying(n), che è comunemente conosciuto come varchar(n), e text. Il valore di n deve essere un intero positivo per questi tipi. Tutti i tipi di carattere PostgreSQL sono in grado di memorizzare stringhe fino a n caratteri.

Se provate a memorizzare una stringa più lunga in una colonna di questo tipo di carattere PostgreSQL, otterrete un errore a meno che i caratteri che superano il limite siano composti interamente da spazi. Se questo è il caso, la stringa o i caratteri eccedenti saranno troncati alla lunghezza massima consentita.

Il tipo di dati VARCHAR si comporta in modo simile al tipo di dati TEXT quando il valore di n non è specificato. Le prestazioni di entrambi i tipi di carattere sono simili anche quando n è omesso.

A differenza di altri database, i tipi di carattere PostgreSQL non hanno differenze di prestazioni tra loro. La maggior parte del tempo, useremo TEXT o VARCHAR a seconda delle nostre esigenze; usiamo il VARCHAR(n) quando vogliamo che PostgreSQL esegua il controllo dei limiti di lunghezza.

Esempi di utilizzo dei tipi di carattere PostgreSQL

In questo esempio, continueremo il nostro confronto Postgres VARCHAR vs TEXT guardando più da vicino i tipi di carattere e come lavorano in un database PostgreSQL.

Prima di poter procedere con i nostri esempi, avremo bisogno di creare una tabella:

1
2
3
4
5
CREATE TABLE pgsql_char_sample (
id serial PRIMARY KEY,
my_char VARCHAR (8),
my_text TEXT
);

Dopo aver creato la nostra tabella, possiamo eseguire un’operazione di inserimento:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
‘Questa stringa di esempio è per la colonna varchar’,
‘Questa stringa di esempio è per la colonna di testo da inserire nella tabella PostgreSQL’
);

La dichiarazione mostrata sopra risulterà in un errore:

1
ERRORE: VALUE too long FOR TYPE CHARACTER VARYING(8)

Questo errore si verifica perché abbiamo tentato di inserire una stringa con più di otto caratteri nella colonna my_char che ha un tipo di dati varchar(8).

Proviamoci di nuovo ad inserire i dati di esempio, questa volta con valori diversi:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
‘String’,
‘Questa stringa di esempio è per la colonna di testo da inserire nella tabella PostgreSQL’
);

Per verificare che la nostra operazione di inserimento abbia avuto successo, possiamo usare la seguente dichiarazione:

1
SELECT * FROM pgsql_char_sample;

Il risultato dovrebbe essere simile a questo:

1
2
3
4
id | my_char | my_text
—-+———+———————————————————————————-
1 | String | Questa stringa di esempio E’ PER LA COLONNA di testo da inserire NELLA TABLE
PostgreSQL (1 ROW)

Nell’esempio che abbiamo guardato, possiamo vedere che l’unica differenza tra le colonne VARCHAR(n) e TEXT è che un limite può essere impostato sulla colonna VARCHAR. In questo caso, abbiamo impostato il VARCHAR a una lunghezza di otto caratteri, in modo che le stringhe di lunghezza maggiore non possano essere inserite. Come abbiamo detto prima, i tipi di carattere VARCHAR e TEXT non hanno differenze osservabili nelle prestazioni.

Conclusione

Quando si memorizzano dati a carattere in PostgreSQL, è importante scegliere il giusto tipo di dati per ogni colonna della propria tabella. In questo articolo, abbiamo confrontato i tipi di carattere VARCHAR vs TEXT di Postgres, discutendo le loro somiglianze e differenze di base. Con le informazioni fornite in questo articolo, sarete preparati a progettare le vostre tabelle di database in PostgreSQL e a scegliere i tipi di dati corretti per le vostre esigenze.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.