Char vs. Varchar

Char vs. Varchar
I tipi di dati Char e Varchar in SQL sono i più importanti in quanto ci consentono di archiviare i dati di stringa.

Questo tutorial passerà oltre ogni tipo di dati e descriverà la differenza.

Il tipo di char sql

Il tipo di carbone si riferisce a un tipo di dati utilizzato per archiviare stringhe di caratteri di una lunghezza fissa.

Il tipo di char consente di specificare una dimensione specifica per i dati inseriti in quella riga.

Sebbene l'implementazione del tipo CHAR possa variare leggermente in base al motore del database, in SQL standard, il tipo di char può contenere fino a un massimo di 8000 caratteri non unicode.

Per definire una lunghezza di un tipo di carbone, è possibile utilizzare la sintassi:

Char (N)

Dove n si riferisce al numero (lunghezza) dei caratteri che puoi archiviare.

Poiché il tipo di char è di lunghezza fissa, se si inserisce una stringa con meno caratteri rispetto alla dimensione specificata, la stringa è imbottita con spazi extra per abbinare la stringa set.

Allo stesso modo, se si inserisce una stringa di lunghezza maggiore della dimensione set, la stringa viene troncata nella dimensione set.

Per illustrare, inizia creando un database di esempio:

Nota che in questo esempio, utilizziamo PostgreSQL, ma puoi scegliere qualsiasi sapore SQL.

$ Psql -u Postgres

Crea un database di esempio:

Postgres =# Crea database sample_db;

Connettersi al database.

Postgres =# \ c Sample_db

Crea una tabella con due righe. Il primo dovrebbe essere un ID con incremento automatico (seriale) e l'altro del tipo di carbone.

Crea table char_v_varchar (ID serial, full_name char (15))

Si noti che la lunghezza massima della colonna Full_Name è 15.

Aggiungiamo ora alcuni dati di esempio.

Inserisci i valori Char_v_varchar (full_name) ('aaron saggio'); - 10 caratteri
Inserisci i valori Char_v_varchar (full_name) ('Aaron Wise Jack'); - 15 caratteri
Inserisci in char_v_varchar (full_name) valori ('aaron saggio un altro nome blah blah'); - Più di 15 caratteri

Prestare attenzione alle tre dichiarazioni di inserimento. Il primo inserisce un valore di 10 caratteri, il secondo aggiunge un valore di esattamente 15 caratteri e l'altro aggiunge un valore di caratteri superiori a 15.

Il primo valore verrà imbottito con altri 5 caratteri di spazio per massimizzare la lunghezza set se eseguiamo il codice sopra.

Il secondo si adatterà perfettamente e il terzo sarà troncato.

L'aggiunta di un valore maggiore della lunghezza impostata è vietata in alcuni motori di database. Ad esempio, in PostgreSQL, la seconda istruzione Insert fallirà con un errore:

Errore: valore troppo lungo per il carattere di tipo (15)
Stato SQL: 22001

Per controllare la lunghezza dei record, possiamo eseguire la query:

Seleziona lunghezza (full_name) da char_v_varchar;

Il codice sopra dovrebbe restituire la lunghezza di ogni riga nella tabella:

lunghezza
--------
15
15
(2 file)

Si noti che in alcuni motori di database possono consentire di aggiungere un valore di lunghezza inferiore senza imbottitura con spazi extra.

È bene ricordare che il tipo di carattere utilizza 1 byte per un carattere inserito.

Il tipo Varchar SQL

A differenza del tipo di carattere char, varchar o variabile, memorizza le stringhe di caratteri di variazioni variabili.

Ciò significa che puoi definire la dimensione della colonna Varchar. Tuttavia, è possibile aggiungere valori di dimensioni superiori o inferiori alla lunghezza impostata.

Facciamo un esempio di seguito:

Crea table char_v_varchar (ID serial, full_name varchar);

In questo caso, definiamo una tabella con la colonna di varchar. Poiché la dimensione di Varchar può variare, non è necessario impostare una lunghezza.

Possiamo quindi inserire tre valori di dimensioni variabili come:

Inserisci i valori Char_v_varchar (full_name) ('aaron saggio'); - 10 caratteri
Inserisci i valori Char_v_varchar (full_name) ('Aaron Wise Jack'); - 15 caratteri
Inserisci in char_v_varchar (full_name) valori ('aaron saggio un altro nome blah blah'); - Più di 15 caratteri
Seleziona lunghezza (full_name) da char_v_varchar;

Il codice sopra dovrebbe inserire tre record e restituire le dimensioni di ciascuno.

Pensieri finali

Questo è quindi sulla differenza tra un tipo di char e varchar. Un carbone tiene stringhe di carattere di dimensioni fisse, mentre un varchar contiene una stringa di caratteri di lunghezze variabili.

Sebbene il varchar possa sembrare applicabile per la maggior parte delle situazioni, può sostenere hit di prestazioni significative se utilizzate in modo irragionevole. Pertanto, se le prestazioni sono un fattore critico per il tuo database, prendi in considerazione l'uso di un carbone, a meno che non sia necessario.