Creare una tabella con SQL Server

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.