BASI DI DATI ESERCITAZIONI -2- MSSQL - SQL Email: francesco.magagnino@ewave.it Università di Trento Corso di Laurea in Ingegneria dell’Informazione e dell’Organizzazione
NORTWIND  TABLES MSSQL 2000
NORTWIND  TABLES MSSQL 2005
MSSQL 2000 NORTWIND  TABLE Orders Table Design Table Per impostare un contatore Identity = Yes Per impostare Primary Key Pulsante dx -> Set Primary Key
Per impostare un contatore Identity = Yes Per impostare Primary Key Pulsante dx -> Set Primary Key MSSQL 2005 NORTWIND  TABLE Orders Table Design Table
Vincoli 5 classi di vincoli: NOT NULL  specifica che la colonna non accetta valori NULL I vincoli  CHECK  assicurano l’integrità di dominio tramite la limitazione dei valori che e possibile inserire in una colonna (Sesso può essere solo M o F) I vincoli  UNIQUE  garantiscono l’univocità dei valori in un set di colonne (in un vincolo UNIQUE non e consentito che due righe della stessa tabella contengano gli stessi valori diversi da Null per le colonne. L'univocità viene garantita anche dalle chiavi primarie che pero non consentono valori Null) I vincoli  PRIMARY KEY  identificano la colonna o il set di colonne contenente valori che identificano in modo univoco una riga in una tabella (Non e possibile immettere un valore NULL per una colonna di chiave primaria) I vincoli  FOREIGN KEY  identificano le relazioni tra le tabelle (Non e possibile inserire una riga con un valore di chiave esterna, ad eccezione di NULL, se non e presente una chiave candidata con tale valore =  INTEGRITA’ REFERENZIALE )
Data types -1- Numeri esatti Bigint Int Smallint Tinyint Bit Decimal e Numeric Money e Smallmoney Numeri approssimati Float Real Datetime  e Smalldatetime Stringhe di caratteri Char Varchar Text Stringhe di carattere unicode Nchar Nvarchar Ntext Stringhe binarie Binary Varbinary Image Altri tipi di dati Cursor Sql_variant Table Timestamp Uniqueidentifier Definite dall’utente
Data types -2- Int  Dati Integer compresi tra -2.147.483.648 e 2.147.483.647 [-2 31  e (2 31 -1)]  Le dimensioni di archiviazione sono pari a 4 byte. Bit Tipo di dati Integer con valori possibili 1 o 0 In MSSQL è implementata un’archiviazione ottimizzata per i dati di tipo bit; se una tabella contiene più colonne di tipo bit, le colonne vengono archiviate 8 in 8 in un singolo byte.  Datetime Dati relativi alla data e all'ora dal 1° gennaio 1753 al 31 dicembre 9999, con un margine di precisione di tre centesimi di secondo. I valori di tipo datetime vengono archiviati internamente in MSSQL come due valori integer a 4 byte. Nei primi 4 byte viene archiviato il numero di giorni precedente o successivo alla data di base. Negli altri 4 byte viene archiviata l'ora del giorno espressa come numero di millisecondi dopo la mezzanotte. NText E’ un tipo dati a lunghezza variabile, che può memorizzare fino a 2.147.483.647 caratteri.  Nvarchar La domensione massima della colonna corrisponde a 4000 caratteri Ha una lunghezza variabile e può contenere fino a 4000 caratteri UNICODE (cioè 8000 bytes, nei caratteri UNICODE servono 2 bytes per memorizzare un carattere)
Data types -3- TextArea tipico campo da   NText TextField tipico campo da   Nvarchar
A globally unique identifier   uniqueidentifier   A database-wide unique number that gets updated every time a row gets updated   timestamp   A special data type used to store a result set for later processing   table   A data type that stores values of various data types, except text, ntext, timestamp, and sql_variant   sql_variant   A reference to a cursor   cursor   Variable-length binary data with a maximum length of 2^31 - 1 bytes   image   Variable-length binary data with a maximum length of 8,000 bytes   varbinary   Fixed-length binary data with a maximum length of 8,000 bytes   binary   Variable-length Unicode data with a maximum length of 2^30 - 1 characters   ntext   Variable-length Unicode data with a maximum length of 4,000 characters   nvarchar   Fixed-length Unicode data with a maximum length of 4,000 characters   nchar   Variable-length data with a maximum length of 2^31 - 1 characters   text   Variable-length data with a maximum of 8,000 characters   varchar   Fixed-length character data with a maximum length of 8,000 characters   char   Date and time data from January 1, 1900, through June 6, 2079, with an accuracy of one minute   smalldatetime   Date and time data from January 1, 1753, through December 31, 9999, with an accuracy of 3.33 milliseconds   datetime   Floating precision number data from -3.40E + 38 through 3.40E + 38   real   Floating precision number data from -1.79E + 308 through 1.79E + 308   float   Monetary data values from -214,748.3648 through +214,748.3647   smallmoney   Monetary data values from -2^63 through 2^63 - 1   money   Fixed precision and scale numeric data from -10^38 +1 through 10^38 -1   numeric   Fixed precision and scale numeric data from -10^38 +1 through 10^38 -1   decimal   Integer data with either a 1 or 0 value   bit   Integer data from 0 through 255   tinyint   Integer data from -2^15 through 2^15 - 1   smallint   Integer data from -2^31 through 2^31 - 1   int   Integer data from -2^63 through 2^63-1   bigint   Description   Data Types
Da sapere 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, XP 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) I caratteri codificabili con UNICODE sono oltre 65.000 con ANSI solo 256. Le colonne di  dati binari  (binary, varbinary, image), permettono di archiviare documenti binari (Word, Excel, Jpg, Gif..). Nel caso superino gli 8kb si utilizza esclusivamente image Image come anche text e ntext permette di archiviare fino a 2GB
Views La View è una tabella virtuale il cui contenuto è definito da una Query. La View eredita la stessa struttura dei campi delle tabelle che la compongono La View ha una funzione di filtro sulle tabelle che la compongono La View risulta come una tabella virtuale. Non esiste realmente come set di valori archiviati nel db.
  Le Views permettono di applicare selects SQL. Sono richiamabili dall’applicazione esterna. In questo modo la stringa è direttamente sul server.  NORTWIND  VIEWS Design View
 
Stored Procedures Sviluppando un software che si interfacci con SqlServer si possono utilizzare 2 differenti approcci: Archiviare i programmi a livello locale e creare applicazioni (funzioni) che inviino i comandi a SqlServer e ne elaborino i risultati Archiviare i programmi come Stored Procedure dentro SqlServer e creare applicazioni che richiamino le Stored Procedure stesse e ne elaborino poi i risultati In SqlServer esistono Stored Procedures definite di Sistema che permettono la gestione del DB e la visualizzazione delle sue caratteristiche.
Le Stored Procedures permettono di togliere tutto il carico di lavoro dall’applicazione esterna. L’applicazione non fa altro che passare le variabili alla SP.
Sintassi tabelle “ t” seguito dal nome della tabella con la prima lettera maiuscola. Nome legato alla rappresentazione del suo significato. Sempre in forma singolare. tUtente tCliente
Sintassi tabelle di relazione “ t” seguito da una dicitura stabilita (Lk o Rel) e i nomi delle tabelle relazionate distinte dalla lettera maiuscola o da “_”. tRelUtenteCliente tRel_Utente_Cliente tLk_Utente_Cliente
Sintassi Views e Stored Procedures La stessa logica della sintassi delle tabelle. Le View precedute dalla lettera minuscola “v” al posto di “t” Le Stored Procedure precedute dalle due lettere minuscole “sp” spCancellaUtente vListaIscritti
Riassunto sulla sintassi in SQL Una sintassi ottimizzata dovrebbe essere univoca  In un db con molte decine di tabelle e consigliabile utilizzare la sintassi abbreviata: 4 lettere, le prime 4 consonanti del nome della tabella, in assenza di sufficienti consonanti si utilizzano anche le vocali. ES: Tabella “Clienti”     tCliente Id Cliente     Clienti_Id  (CLNT_Id) Nome Cliente     Clienti_Nome  (CLNT_Nome) Tabella “Ordini”     tOrdine Id Ordine     Ordini_Id  (ORDN_Id) Titolo Ordine     Ordini_Titolo  (ORDN_Titolo) Id Cliente di quell’ordine     Ordini_Clienti_Id  (ORDN_CLNT_Id) View  “Ordini” con “Clienti”     vOrdiniClienti
ESERCIZIO Realizzare un DB per raccolta CD CDs Titolo Prezzo Anno Immagine Copertina Canzoni  (La stessa canzone può essere in più CD) Titolo Testo Cantanti/Gruppi  (Informazioni riferite ai CD)  Nome Descrizione Sito internet Generi  (Informazioni riferite ai Cantanti)  Tipo genere Label Nome Immagine Logo
ESERCIZIO
 
Lavorando sulle Views (e iniziando a guardare Sql) Visualizzare tutti i titoli dei cd e i rispettivi titoli delle canzoni Cambiare nome alle colonne: “Titoli miei cd” & “Titoli canzoni nei miei cd”  Visualizzare il risultato in ordine ascendente rispetto la colonna “Titoli miei cd” Aggiungere nella visualizzazione la colonna dell’anno del cd. Chiamarla “Anno miei cd” Visualizzare il risultato in ordine ascendente rispetto alla colonna del “Anno miei cd” Tenendo l’ordine corrente, non visualizzare la colonna “Anno miei cd”
Lavorando sulle Views (e iniziando a guardare Sql) Aggiungere tabelle cantanti e generi. Aggiungere alla visualizzazione il nome del cantante e il suo genere. Filtrare la visualizzazione per il genere. Il filtro deve fare riferimento al valore Identity del genere senza farlo visualizzare.

Basi Di Dati 02

  • 1.
    BASI DI DATIESERCITAZIONI -2- MSSQL - SQL Email: francesco.magagnino@ewave.it Università di Trento Corso di Laurea in Ingegneria dell’Informazione e dell’Organizzazione
  • 2.
    NORTWIND TABLESMSSQL 2000
  • 3.
    NORTWIND TABLESMSSQL 2005
  • 4.
    MSSQL 2000 NORTWIND TABLE Orders Table Design Table Per impostare un contatore Identity = Yes Per impostare Primary Key Pulsante dx -> Set Primary Key
  • 5.
    Per impostare uncontatore Identity = Yes Per impostare Primary Key Pulsante dx -> Set Primary Key MSSQL 2005 NORTWIND TABLE Orders Table Design Table
  • 6.
    Vincoli 5 classidi vincoli: NOT NULL specifica che la colonna non accetta valori NULL I vincoli CHECK assicurano l’integrità di dominio tramite la limitazione dei valori che e possibile inserire in una colonna (Sesso può essere solo M o F) I vincoli UNIQUE garantiscono l’univocità dei valori in un set di colonne (in un vincolo UNIQUE non e consentito che due righe della stessa tabella contengano gli stessi valori diversi da Null per le colonne. L'univocità viene garantita anche dalle chiavi primarie che pero non consentono valori Null) I vincoli PRIMARY KEY identificano la colonna o il set di colonne contenente valori che identificano in modo univoco una riga in una tabella (Non e possibile immettere un valore NULL per una colonna di chiave primaria) I vincoli FOREIGN KEY identificano le relazioni tra le tabelle (Non e possibile inserire una riga con un valore di chiave esterna, ad eccezione di NULL, se non e presente una chiave candidata con tale valore = INTEGRITA’ REFERENZIALE )
  • 7.
    Data types -1-Numeri esatti Bigint Int Smallint Tinyint Bit Decimal e Numeric Money e Smallmoney Numeri approssimati Float Real Datetime e Smalldatetime Stringhe di caratteri Char Varchar Text Stringhe di carattere unicode Nchar Nvarchar Ntext Stringhe binarie Binary Varbinary Image Altri tipi di dati Cursor Sql_variant Table Timestamp Uniqueidentifier Definite dall’utente
  • 8.
    Data types -2-Int Dati Integer compresi tra -2.147.483.648 e 2.147.483.647 [-2 31 e (2 31 -1)] Le dimensioni di archiviazione sono pari a 4 byte. Bit Tipo di dati Integer con valori possibili 1 o 0 In MSSQL è implementata un’archiviazione ottimizzata per i dati di tipo bit; se una tabella contiene più colonne di tipo bit, le colonne vengono archiviate 8 in 8 in un singolo byte. Datetime Dati relativi alla data e all'ora dal 1° gennaio 1753 al 31 dicembre 9999, con un margine di precisione di tre centesimi di secondo. I valori di tipo datetime vengono archiviati internamente in MSSQL come due valori integer a 4 byte. Nei primi 4 byte viene archiviato il numero di giorni precedente o successivo alla data di base. Negli altri 4 byte viene archiviata l'ora del giorno espressa come numero di millisecondi dopo la mezzanotte. NText E’ un tipo dati a lunghezza variabile, che può memorizzare fino a 2.147.483.647 caratteri. Nvarchar La domensione massima della colonna corrisponde a 4000 caratteri Ha una lunghezza variabile e può contenere fino a 4000 caratteri UNICODE (cioè 8000 bytes, nei caratteri UNICODE servono 2 bytes per memorizzare un carattere)
  • 9.
    Data types -3-TextArea tipico campo da NText TextField tipico campo da Nvarchar
  • 10.
    A globally uniqueidentifier uniqueidentifier A database-wide unique number that gets updated every time a row gets updated timestamp A special data type used to store a result set for later processing table A data type that stores values of various data types, except text, ntext, timestamp, and sql_variant sql_variant A reference to a cursor cursor Variable-length binary data with a maximum length of 2^31 - 1 bytes image Variable-length binary data with a maximum length of 8,000 bytes varbinary Fixed-length binary data with a maximum length of 8,000 bytes binary Variable-length Unicode data with a maximum length of 2^30 - 1 characters ntext Variable-length Unicode data with a maximum length of 4,000 characters nvarchar Fixed-length Unicode data with a maximum length of 4,000 characters nchar Variable-length data with a maximum length of 2^31 - 1 characters text Variable-length data with a maximum of 8,000 characters varchar Fixed-length character data with a maximum length of 8,000 characters char Date and time data from January 1, 1900, through June 6, 2079, with an accuracy of one minute smalldatetime Date and time data from January 1, 1753, through December 31, 9999, with an accuracy of 3.33 milliseconds datetime Floating precision number data from -3.40E + 38 through 3.40E + 38 real Floating precision number data from -1.79E + 308 through 1.79E + 308 float Monetary data values from -214,748.3648 through +214,748.3647 smallmoney Monetary data values from -2^63 through 2^63 - 1 money Fixed precision and scale numeric data from -10^38 +1 through 10^38 -1 numeric Fixed precision and scale numeric data from -10^38 +1 through 10^38 -1 decimal Integer data with either a 1 or 0 value bit Integer data from 0 through 255 tinyint Integer data from -2^15 through 2^15 - 1 smallint Integer data from -2^31 through 2^31 - 1 int Integer data from -2^63 through 2^63-1 bigint Description Data Types
  • 11.
    Da sapere 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, XP 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) I caratteri codificabili con UNICODE sono oltre 65.000 con ANSI solo 256. Le colonne di dati binari (binary, varbinary, image), permettono di archiviare documenti binari (Word, Excel, Jpg, Gif..). Nel caso superino gli 8kb si utilizza esclusivamente image Image come anche text e ntext permette di archiviare fino a 2GB
  • 12.
    Views La Viewè una tabella virtuale il cui contenuto è definito da una Query. La View eredita la stessa struttura dei campi delle tabelle che la compongono La View ha una funzione di filtro sulle tabelle che la compongono La View risulta come una tabella virtuale. Non esiste realmente come set di valori archiviati nel db.
  • 13.
    LeViews permettono di applicare selects SQL. Sono richiamabili dall’applicazione esterna. In questo modo la stringa è direttamente sul server. NORTWIND VIEWS Design View
  • 14.
  • 15.
    Stored Procedures Sviluppandoun software che si interfacci con SqlServer si possono utilizzare 2 differenti approcci: Archiviare i programmi a livello locale e creare applicazioni (funzioni) che inviino i comandi a SqlServer e ne elaborino i risultati Archiviare i programmi come Stored Procedure dentro SqlServer e creare applicazioni che richiamino le Stored Procedure stesse e ne elaborino poi i risultati In SqlServer esistono Stored Procedures definite di Sistema che permettono la gestione del DB e la visualizzazione delle sue caratteristiche.
  • 16.
    Le Stored Procedurespermettono di togliere tutto il carico di lavoro dall’applicazione esterna. L’applicazione non fa altro che passare le variabili alla SP.
  • 17.
    Sintassi tabelle “t” seguito dal nome della tabella con la prima lettera maiuscola. Nome legato alla rappresentazione del suo significato. Sempre in forma singolare. tUtente tCliente
  • 18.
    Sintassi tabelle direlazione “ t” seguito da una dicitura stabilita (Lk o Rel) e i nomi delle tabelle relazionate distinte dalla lettera maiuscola o da “_”. tRelUtenteCliente tRel_Utente_Cliente tLk_Utente_Cliente
  • 19.
    Sintassi Views eStored Procedures La stessa logica della sintassi delle tabelle. Le View precedute dalla lettera minuscola “v” al posto di “t” Le Stored Procedure precedute dalle due lettere minuscole “sp” spCancellaUtente vListaIscritti
  • 20.
    Riassunto sulla sintassiin SQL Una sintassi ottimizzata dovrebbe essere univoca In un db con molte decine di tabelle e consigliabile utilizzare la sintassi abbreviata: 4 lettere, le prime 4 consonanti del nome della tabella, in assenza di sufficienti consonanti si utilizzano anche le vocali. ES: Tabella “Clienti”  tCliente Id Cliente  Clienti_Id (CLNT_Id) Nome Cliente  Clienti_Nome (CLNT_Nome) Tabella “Ordini”  tOrdine Id Ordine  Ordini_Id (ORDN_Id) Titolo Ordine  Ordini_Titolo (ORDN_Titolo) Id Cliente di quell’ordine  Ordini_Clienti_Id (ORDN_CLNT_Id) View “Ordini” con “Clienti”  vOrdiniClienti
  • 21.
    ESERCIZIO Realizzare unDB per raccolta CD CDs Titolo Prezzo Anno Immagine Copertina Canzoni (La stessa canzone può essere in più CD) Titolo Testo Cantanti/Gruppi (Informazioni riferite ai CD) Nome Descrizione Sito internet Generi (Informazioni riferite ai Cantanti) Tipo genere Label Nome Immagine Logo
  • 22.
  • 23.
  • 24.
    Lavorando sulle Views(e iniziando a guardare Sql) Visualizzare tutti i titoli dei cd e i rispettivi titoli delle canzoni Cambiare nome alle colonne: “Titoli miei cd” & “Titoli canzoni nei miei cd” Visualizzare il risultato in ordine ascendente rispetto la colonna “Titoli miei cd” Aggiungere nella visualizzazione la colonna dell’anno del cd. Chiamarla “Anno miei cd” Visualizzare il risultato in ordine ascendente rispetto alla colonna del “Anno miei cd” Tenendo l’ordine corrente, non visualizzare la colonna “Anno miei cd”
  • 25.
    Lavorando sulle Views(e iniziando a guardare Sql) Aggiungere tabelle cantanti e generi. Aggiungere alla visualizzazione il nome del cantante e il suo genere. Filtrare la visualizzazione per il genere. Il filtro deve fare riferimento al valore Identity del genere senza farlo visualizzare.