Tipi di Dati in SQL

PlushOcean avatar
PlushOcean
·
·
Download

Start Quiz

Study Flashcards

10 Questions

Quale caratteristica ha il tipo di dato NUMBER(p,s) in Oracle?

Ha una precisione e una scala fisse

Quale tipo di dato è utilizzato per memorizzare date in Oracle?

DATE

Quale comando è utilizzato per creare un tipo di dato personalizzato in Oracle?

CREATE TYPE

Quale differenza c'è tra il tipo di dato FLOAT e NUMBER?

FLOAT è utilizzato per memorizzare valori decimali, mentre NUMBER è utilizzato per memorizzare valori interi

Quale tipo di dato è utilizzato per memorizzare stringhe a lunghezza variabile in Oracle?

VARCHAR2

Quale tipo di problema può verificarsi in una transazione se non viene utilizzato il livello di isolamento SERIALIZABLE?

Non-repeatable read e phantom row

Cosa accade se una transazione abortisce a causa di una deadlock?

Nessuna perdita di dati

Quale livello di isolamento garantisce che le query leggano solo dati committed?

READ COMMITTED

Cosa è il phantom row?

Un problema di inserimento di nuove righe in una tabella

Quale comando viene utilizzato per cambiare il livello di isolamento di una transazione?

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

Study Notes

Tipi di dati in SQL

  • I tipi di dati sono essenziali in SQL perché ogni valore deve essere associato a un tipo di dato che ne specifica le caratteristiche.

Tipo di dato DATE

  • Il tipo di dato DATE memorizza le informazioni relative a data e orario fino al secondo.
  • Se l'orario non viene specificato, il default è 12:00:00 AM.
  • Se la data non viene specificata, il default è SYSDATE (la data corrente).
  • Il formato standard utilizzato per la data è specificato nella variabile di sistema NLS_DATE_FORMAT.

Funzioni per la gestione di valori di tipo DATE

  • TO_DATE(stringa[,formato]): converte un campo di testo (CHAR o VARCHAR2) contenente una data espressa nel formato formato in un dato di tipo DATE.
  • TO_CHAR(data[,formato]): converte un campo data contenente una data espressa nel formato formato in una stringa di tipo VARCHAR2.
  • SYSDATE: restituisce la data corrente.

Conversioni di tipi

  • Una espressione ORACLE deve essere svolta su operatori con lo stesso tipo di dato.
  • Nel caso in cui i tipi di dati siano diversi, è necessario effettuare una conversione che può essere implicita o esplicita.
  • Conversioni implicite: effettuate automaticamente da Oracle in certi casi, come ad esempio nelle operazioni di INSERT e UPDATE.
  • Conversioni esplicite: TO_DATE, TO_NUMBER, TO_CHAR.

SQL Data Definition Language

  • La porzione di SQL che permette la creazione/eliminazione degli oggetti dello schema.
  • Creazione di tabelle: CREATE TABLE con PRIMARY KEY e FOREIGN KEY.
  • Eliminazione di tabelle: DROP TABLE.
  • Creazione di sequenze: CREATE SEQUENCE con START WITH e INCREMENT BY.

Utilizzo di sequenze

  • nomesequenza.NEXTVAL: utilizzato per ottenere il prossimo valore di una sequenza.
  • nomesequenza.EXP_FULL_DATABASE: utilizzato per importare ed esportare database.
  • GATHER_SYSTEM_STATISTICS: utilizzato per aggiornare le statistiche di sistema.

Tipi di dati built-in

  • CHAR(size): stringa a lunghezza fissa definita da size < 2000.
  • VARCHAR2(size): stringa a lunghezza variabile definita da size < 4000.
  • NUMBER(p,s): a virgola fissa con scale cifre decimali e precision-scale cifre intere.
  • FLOAT(p): p indica il numero di cifre binarie significative.
  • DATE: utilizzato per memorizzare le informazioni relative a data e orario.
  • ROWID: stringa esadecimale che contiene l'indirizzo univoco di una tupla all'interno di una tabella.

Problemi di Concorrenza tra Transazioni

  • Il problema del Phantom Row si presenta quando una transazione inserisce o cancella tuple che un'altra transazione dovrebbe logicamente considerare
  • Il Phantom Row è un caso particolare di Dirty Read
  • Un esempio di Phantom Row è la tupla t4 che non viene vista da T1

Dirty Read e Cascading Abort

  • Il problema del Dirty Read si verifica quando una transazione legge dati scritti da un'altra transazione non ancora conclusa
  • Il Recovery Manager deve eliminare gli effetti delle transazioni che hanno eseguito "dirty read"
  • Il fenomeno detto cascading abort si verifica quando una transazione fallisce e le transazioni che hanno letto i suoi dati anche loro falliscono

Strict 2PL: No Dirty Read

  • In questo caso l'esecuzione corretta richiede che T2 aspetti la terminazione di T1 prima di poter leggere il valore di X
  • T2 viene messa in attesa finché T1 non ha terminato di lavorare sul valore di X

Strict 2PL: Repeatable Read

  • Anche in questo caso T2 viene messa in attesa, e T1 ha quindi la garanzia di poter leggere sempre lo stesso valore di X
  • T1 legge sempre lo stesso valore di X perché T2 non può leggere il valore di X finché T1 non ha terminato di lavorare su di esso

Assenza di Phantom Row

  • Il problema dell'assenza di Phantom Row è il più difficile da risolvere
  • Non possono presentarsi né non-repeatable read né phantom row
  • Il comando SQL per cambiare il livello di isolamento è: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE | READ COMMITTED

Livello di isolamento Read Committed

  • Non sono possibili dirty read poiché le query leggono solo dati committed
  • Sono possibili non-repeatable read e phantom row perché le query di una stessa transazione possono leggere diverse versioni dello stesso dato in istanti diversi

Protezione da Guasti

  • L'atomicity e la durability sono fondamentali per la gestione delle transazioni
  • I tipi di malfunzionamenti sono essenzialmente 3:
    • Transaction failure: è il caso in cui una transazione abortisce
    • Deadlock: è il caso in cui due o più transazioni si bloccano a vicenda
    • Guasti hardware: è il caso in cui un guasto hardware impedisce il corretto funzionamento delle transazioni

Scopri i tipi di dati in SQL, inclusi il tipo di dato DATE che memorizza informazioni relative a data e orario.

Make Your Own Quizzes and Flashcards

Convert your notes into interactive study material.

Get started for free

More Quizzes Like This

Use Quizgecko on...
Browser
Browser