DEV Community

Serena Sensini
Serena Sensini

Posted on • Originally published at theredcode.it on

Creare una tabella con SQL Server

Cosa vedrai

Definizione di tabella

Le tabelle sono oggetti presenti all’interno di un database che contengono tutti i dati. Nelle tabelle, i dati sono organizzati in modo strutturato tramite righe e colonne in un formato simile a quello di un foglio di calcolo, dove ogni riga rappresenta un record e ogni colonna un campo.

Come funziona

Per creare una nuova tabella tramite SQL Server Managament Studio, è sufficiente cliccare con il destro sulla voce “Tabelle” presente all’interno del database di nostro interesse e scegliere “Nuovo”:

Opzione per creare una tabella tramite SQL Server Management Studio

Si aprirà una finestra che ci permetterà di scegliere quali sono le colonne da aggiungere alla nostra tabella, e soprattutto le tipologie di dato.

Nel primo campo, inseriamo il nome della colonna. Nel secondo campo, il tipo di dato che vogliamo rappresentare e l’eventuale dimensione.

Infine, possiamo decidere di permettere o meno la creazione di record in cui la colonna presenta dei valori nulli.

Un esempio di utilizzo dei diversi tipi di dato è riportato di seguito:

Esempio di tabella tramite SQL Server Management Studio

Dopo aver definito le informazioni riguardanti le colonne, clicchiamo sul tasto per salvare (o usiamo “Ctrl+S”) e scegliamo il nome che la tabella assumerà. La tabella non sarà visibile subito nell’elenco a sinistra degli oggetti: sarà necessario cliccare con il destro sul database e selezionare “Aggiorna”:

Nuova tabella

Tipi di dato

Ne esistono moltissime varianti, di cui viene riportato un elenco dettagliato qui sotto:

Dati testuali

Tipo di dato Descrizione Dimensione massima
char(n) Lunghezza fissa di una stringa 8,000 caratteri
varchar(n) Lunghezza variabile di una stringa 8,000 caratteri
varchar(max) Lunghezza variabile di una stringa 1,073,741,824 caratteri
text Lunghezza variabile di una stringa fino a 2GB 2GB
nchar Lunghezza fissa di una stringa Unicode 4,000 caratteri
nvarchar Lunghezza variabile di una stringa Unicode 4,000 caratteri
nvarchar(max) Lunghezza variabile di una stringa Unicode con massimo 536,870,912 caratteri
ntext Lunghezza variabile di una stringa Unicode 2GB
binary(n) Lunghezza variabile di una stringa binaria 8,000 bytes
varbinary Lunghezza variabile di una stringa binaria 8,000 bytes
varbinary(max) Lunghezza variabile di una stringa binaria con massimo 2GB

La differenza tra un campo con lunghezza fissa e una variabile sta nell’allocazione dello spazio: se viene definito un campo di tipo testuale con lunghezza variabile di 100 caratteri, nel caso in cui il valore del record inserito sia inferiore, lo spazio viene “trimmato”, ossia accorciato all’effettiva lunghezza del campo. Un esempio sono i dati anagrafici di una persona, che variano in lunghezza del nome e del cognome.

Se usassimo invece un campo di tipo testuale ma a lunghezza fissa, ogni record avrebbe allocato per sé sempre quella dimensione, anche in caso di utilizzo parziale. Un esempio è il campo che definisce il codice fiscale!

Dati numerici

Tipo di dato Descrizione Dimensione massima
bit 0,1 o NULL
tinyint [0, 255] 1 byte
smallint [-32768,32767] 2 bytes
int [-2147483648,2147483647] 4 bytes
bigint [-9223372036854775808,9223372036854775807] 8 bytes
numeric(p,s) [-10^38 +1, 10^38 –1] 5-17 bytes
smallmoney [-214748.3648,214748.3647] 4 bytes
money [-922337203685477.5808,922337203685477.5807] 8 bytes
float(n) [-1.79E + 308, 1.79E + 308] 4/8 bytes
real [-3.40E + 38 , 3.40E + 38] 4 bytes

Dati temporali

Tipo di dato Descrizione Dimensione massima
datetime Accuratezza in millisecondi 8 bytes
datetime2 Accuratezza in nanosecondi 6-8 bytes
smalldatetime Accuratezza in minuti 4 bytes
date Data per memorizzare giorno, mese e anno 3 bytes
time Tempo espresso con una precisione in termini di nanosecondi 3-5 bytes
datetimeoffset Come datetime2, ma con la possibilità di specificare la timezone 8-10 bytes
timestamp Tempo espresso in millisecondi 4 bytes

Qual è la differenza tra timestamp e time? Un campo di tipo timestamp viene aggiornato automaticamente ogni volta che un valore presente nella riga viene aggiornato o modificato ed è basato su un valore interno al database.

Ogni tabella dovrebbe avere un solo campo di tipo timestamp.

Tip

Qual è la data minima che un campo datetime supporta? Il primo gennaio 1753.

E la data massima? Il 31 dicembre 9999.

Risorse utili

Top comments (0)