SQL_TipiDato
SQL_TipiDato
• Numeri validi:
• -0.1E-1 (-0.01)
• 9
• 9.322
Tipi caratteri
• SQL definisce diversi tipi carattere utilizzati per
rappresentare stringhe (sequenze) di caratteri (inclusa la
rappresentazione a carattere di un numero)
• Assegnare un valore più lungo della lunghezza specificata
nella definizione del tipo di dato costituisce un errore a
tempo di esecuzione (run time error)
• La sintassi per la definizione è:
• tipo_di_dato(dimensione)
• esempio: CHAR, CHAR(100),
• in alcuni casi è obbligatorio indicare la dimensione
• se non si indica, viene assunto un valore di default
Tipi carattere
• CHARACTER (abbreviato CHAR): permette di definire
stringhe di caratteri di lunghezza fissata n. La specifica è
della forma CHAR(n).
• la dimensione massima è 2000 (255 in MYSQL)
• la dimensione minima e di default è1
• Essendo una lunghezza fissa, nel caso che venga inserita una stringa
di m caratteri (dove m è minore di n), il DBMS aggiunge in coda alla
stessa n-m caratteri ‘ ‘ (spazio) in modo da raggiungere la lunghezza
massima dichiarata.
• CHARACTER VARYING (abbreviato VARCHAR): permette di
definire stringhe di caratteri a lunghezza variabile con
lunghezza massima predefinita n. La specifica è della forma
VARCHAR(n).
• la dimensione è obbligatoria e va da 1 a 4000 (65536 in mysql)
• se si immette un dato di lunghezza inferiore, non si effettua il blank
padding
esempi
• CHAR o CHAR(1)
• ‘a’ // valore valido
• ‘Aa’ //valore non valido genera errore
• CHAR(4)
• ‘a’ // valore valido
• ‘a a’ // valore valido (3 caratteri)
• ‘aaaaa’ // valore non valido
• Esempi di letterali
• ‘54:45:00’ // corretto
• ‘154:45:01’ //corretto
• ‘-154:45:01’ // negativo ma corretto
• ‘01:70:00’ // scorretto: i minuti sono > 59
• ‘01:59:61’ // scorretto: i secondi sono > 59
Tipi temporali - DATETIME
• Formato:'YYYY-MM-DD HH:MM:SS.UUUUUU’
• In mysql i letterali hanno il formato di sopra, ma sono
memorizzati nel formato
• 'YYYY-MM-DD HH:MM:SS’
• Con arrotondamento dei microsecondi
• HH:MM:SS devono essere un tempo e non un intervallo
temporale
• Letterali
• ‘2018-02-09 16:00:00’ // valido
• ‘2018-01-10’ // valido
• ‘2018-01-10 00:00:00’ così viene memorizzato
• ‘2018-01-10 10:20’ // valido
• ‘2018-01-10 10:20:00’
• ‘2010-04-31’ // non valido
• ‘2010-04-30 18:75:00’ // non valido
Tipi booleani
• SQL definisce un tipo BOOLEAN per rappresentare
appositamente i valori booleani
• Generalmente un dato booleano occupa soltanto un bit.
• Esempi di valori booleani (letterali):
• TRUE, FALSE, '1', ‘0‘
• UNKNOWN è un valore che può essere utilizzato solo
per verificare i valori (tramite is e is not) – come null
• Presente in mysql come sinonimo di bit(1)
• letterali
• 0 vale FALSE
• 1 vale TRUE
• in realtà TRUE e FALSE sono alias per 1 e 0
• Qui, non in Java
Valore NULL
• Il valore NULL è una speciale costante presente in tutti i DBMS
• Rappresenta l’ assenza di informazione
• è compatibile con ogni tipo di dato
• Non va confuso con lo 0, non sono la stessa cosa, anche se
internamente possono avere la stessa rappresentazione
• Utilizzato nelle espressioni aritmetiche, restituisce sempre il valore
NULL
• Confronti con NULL:
• Per verificare se un valore è NULL si deve usare l’operatore IS NULL o
IS NOT NULL e non l’operatore di uguaglianza
• se A vale NULL
• A = 0 è equivalente a falsa (è null, si comporta da false nella where)
• A > 0 è equivalente a falsa (è null, si comporta da false nella where)
• A < 0 è equivalente a falsa (è null, si comporta da false nella where)
• A <> 0 è equivalente a falsa (è null, si comporta da false nella where)
• A = NULL è equivalente a falsa (è null, si comporta da false nella where)
• A IS NULL è vera
• operatori o funzioni su valori NULL restituiscono NULL
• 1+NULL restituisce null