Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

I tipi di dati in SQL Server

I vari tipi di dati che è possibile utilizzare
I vari tipi di dati che è possibile utilizzare
Link copiato negli appunti

Nelle lezioni precedenti di T-SQL abbiamo visto come le tabelle siano gli oggetti all'interno dei databases destinati a contenere i nostri dati.
Quando creiamo una tabella dobbiamo definire in modo esatto il tipo di dati che ogni colonna può contenere. SQL Server ci permette di definire vari tipi di dati utili per immagazzinare: caratteri, numeri, bytes, date, immagini, ecc... oltre a questo possiamo definire tipi di dati personalizzati secondo le nostre esigenze.

Tipi di dati con SQL Server

Ecco l'elenco e la descrizione dei tipi di dati disponibili con SQL Server 7.0:

Dati binari:

  • binary[(n)]
    ha una lunghezza fissa e può contenere fino ad 8000 bytes di dati
    binari
  • varbinary[(n)]
    ha una lunghezza variabile e può contenere fino ad 8000 bytes di
    dati binari

Dati carattere: varchar SQL

  • char[(n)]
    ha una lunghezza fissa e può contenere fino ad 8000 caratteri ANSI
    (cioè 8000 bytes)
  • varchar[(n)]
    ha una lunghezza variabile e può contenere fino ad 8000 caratteri
    ANSI (cioè 8000 bytes)
  • nchar[(n)]
    ha una lunghezza fissa e può contenere fino a 4000 caratteri
    UNICODE (cioè 8000 bytes, ricordiamo che per i caratteri UNICODE
    servono 2 bytes per memorizzare un carattere)
  • nvarchar[(n)]
    ha una lunghezza variabile e può contenere fino a 4000 caratteri
    UNICODE (cioè 8000 bytes, ricordiamo che per i caratteri UNICODE
    servono 2 bytes per memorizzare un carattere)

Dati ora e data:

  • datetime
    ammette valori compresi dal 1 gennaio 1753 al 31 dicembre 9999
    (precisione al trecentesimo di secondo), occupa uno spazio di 8 byte
  • smalldatetime
    meno preciso del precedente (precisione al minuto), ,occupa uno
    spazio di 4 byte

Dati monetari:

  • money
    Contiene valori monetari da -922337203685477.5808 a
    922337203685477.5807 con una precisione al decimillesimo di unità
    monetaria, occupa 8 bytes di memoria
  • smallmoney
    Contiene valori monetari da - 214748.3648 a 214748.3647 con una
    precisione al decimillesimo di unità monetaria, occupa 4 bytes di
    memoria.

Dati numerici approssimati: SQL float 

  • float[(n)]
    Contiene numeri a virgola mobile positivi e negativi, compresi tra
    2.23E-308 e 1.79E308 per i valori positivi e tra -2.23E-308 e
    -1.79E308 per i valori negativi, occupa 8 bytes di memoria ed ha una
    precisione di 15 cifre
  • real
    Contiene numeri a virgola mobile positivi e negativi comprese tra
    1.18E-38 e 3.40E38 per i valori positivi e tra -1.18E-38 e -3.40E38
    per i valori negativi, occupa 4 bytes di memoria ed ha una
    precisione di 7 cifre

Dati numerici esatti: SLQ int

  • decimal[(p[, s])]
  • numeric[(p[, s])]
    decimal e numeric sono sinonimi per SQL Server 7, possono avere
    valori compresi tra 10^38 - 1 e - 10^38 -1. La memoria che occupano
    per essere immagazzinati varia a seconda della precisione che
    utilizziamo per rappresentarli, da un minimo di 2 bytes a un massimo
    di 17 bytes
    p - è la precisione, che rappresenta il numero massimo di cifre
    decimali che possono essere memorizzate (da entrambe le parti della
    virgola). Il massimo della precisione è 28 cifre.
    s - è la scala, che rappresenta il numero di massimo di cifre
    decimali dopo la virgola e deve essere minore od uguale alla
    precisione.
  • int
    occupa 4 byte di memoria e memorizza i valori da -2147483648 a
    2147483647
  • smallint
    occupa 2 byte di memoria e memorizza i valori da -32768 a 32,767
  • tinyint
    occupa 1 byte di memoria e memorizza i valori da 0 a 255

Dati speciali:

  • bit
    tipicamente è usato per rappresentare i flag, vero/false o true/false
    o si/no, perché può accettare solo due valori 0 o 1. Occupa un bit
    ovviamente. Le colonne che hanno un tipo dati bit non possono avere
    valori nulli e non possono avere indici.
  • cursor
    sono usati come varibili in stored proc oppure come parametri di
    OUTPUT sempre in stored proc, fanno riferimento ai cursori. Possono
    essere nulli e non possono essere usati con le istruzioni CREATE
    TABLE.
  • sysname
    una varchar di 128 caratteri ed occupa 256 bytes, viene usato per
    assegnare i nomi ad ogggetti del database, come tabelle, procedure,
    triggere, indici, ecc...
  • timestamp
    occupa 8 bytes ed è un contatore incrementale per colonna assegnato
    automaticamente da SQL Server 7.
  • UNIQUEIDENTIFIER (GUID)
    E' un identificatore unico a livello globale di 16 byte di lunghezza
    chiamato anche GUID. E' generato (molto lentamente) automaticamente
    da SQL Server.

Dati text ed image:

I dati di questo tipo, non vengono memorizzati nelle normali pagine dati
di SQL Server, ma sono tratati in modo speciale su apposite pagine di
memorizzazione.

  • text
    un tipo dati a lunghezza variabile, che può memorizzare fino a
    2147483647 caratteri.
  • ntext
    come il precedente ma memorizza caratteri UNICODE, quindi fino alla
    metà del precedente, cioè 1073741823 caratteri.
  • image
    può memorizzare fino a 2147483647 bytes di dati binari, è
    solitamente usato per le immagini.

Sinonimi per i tipi di dati in SQL Server

Per assicurare la compatibilità con lo standard SQL-92, SQL Server può
usare i seguenti sinonimi per i corrispondenti tidi di dati quando
usiamo istruzioni che fanno parte del data definition language (DDL),
come CREATE TABLE, CREATE PROCEDURE o in DECLARE @nomevariable.

Sinonimo Mappato su SQL Server 7.0
Binary varying Varbinary
char varying Varchar
character Char
character char(1)
character(n) char(n)
character varying(n) varchar(n)
Dec decimal
Double precision float
float[(n)] for n = 1-7 real
float[(n)] for n = 8-15 float
Integer Int
national character(n) nchar(n)
national char(n) nchar(n)
national character varying(n) nvarchar(n)
national char varying(n) nvarchar(n)
national text ntext

Vediamo un esempio:

use tempdb
go
declare @sinonimo_carattere national character varying(10)
/* è la stessa cosa che scrivere: */
declare @carattere nvarchar(10)

La conversione dei data types in altri linguaggi
Una delle cose che T-SQL non fa è mappare i tipi di dati con quelli di
altri linguaggi di programmazione. Nelle due tabelle sottostanti abbiamo
le corrispondenze tra i tipi di dati di SQL Server e quelli di Visual
Basic (VB) 

Convertire I VB Data Types in SQL Server Data Types
Tipi di dati in VB Tipi di dati corrispondenti in SQL Server
Long, Integer, Byte, Boolean T-SQL Int
Double, Single T-SQL Float
Currency T-SQL Money
Date T-SQL
DateTime
Stringhe fino a 255 caratteri T-SQL VarChar
Stringhe
superiori a 255 caratteri
T-SQL
Text
Array monodimensionale fino a 255 elementi
T-SQL VarBinary
Array monodimensionale con più di 255 elementi T-SQL Image

Cosa è lo standard UNICODE ?

Lo standard UNICODE a differenza dello standard
ANSI mira a supportare tutti i caratteri dei linguaggi e alfabeti del mondo.
UNICODE è ben supportato nei programma che girano nella galassia
Windows: NT, W 95, 98 ME, 2000 ma non efficacemente nei sistemi UNIX
,IBM, e DOS.
La memoria necessaria per memorizzare un carattere UNICODE è doppia (2
byte per carattere
) rispetto a quella per i caratteri ANSI (1 byte per
carattere)
In Sql Server i tipi dati che supportano lo standard UNICODE sono: nchar,
nvarchar, ntext. Il prefisso n(national) non è casuale ma è stato
fissato dallo standard SQL-92.
I caratteri codificabili con UNICODE sono oltre 65.000 con ANSI solo 256.

Ti consigliamo anche