Anteprima
Vedrai una selezione di 20 pagine su 101
Appunti sistemi informativi Pag. 1 Appunti sistemi informativi Pag. 2
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 6
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 11
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 16
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 21
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 26
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 31
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 36
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 41
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 46
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 51
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 56
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 61
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 66
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 71
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 76
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 81
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 86
Anteprima di 20 pagg. su 101.
Scarica il documento per vederlo tutto.
Appunti sistemi informativi Pag. 91
1 su 101
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

SELECT

Utilizziamo DISTINCT (o UNIQUE) per gestire i duplicati. Senza DISTINCT (o UNIQUE), il risultato è una tabella. Con DISTINCT (o UNIQUE), il risultato è una vera e propria relazione del modello relazionale, quindi un insieme di tuple.

VALORI NULLI:

C'è la possibilità di gestire VALORI NULLI e vale quanto già visto in Algebra Relazionale. Quindi:

SELECT * FROM STUDENTE WHERE CITTA IS [NOT] NULL

Quindi, il predicato IS NULL (o IS NOT NULL) viene utilizzato a questo scopo. IS non è nient'altro che un sinonimo dell'uguale. L'utilizzo o meno del NOT comporta la presenza di query diverse. Se non c'è il NOT (quindi, WHERE CITTA IS NULL), selezioniamo le tuple di studente in cui la città ha valore nullo. Se invece scriviamo: WHERE CITTA IS NOT NULL, selezioniamo tutte le tuple in cui la città ha un valore specificato, non nullo.

Per verificare se un valore è NULL si deve usare l'operatore IS NOT (A IS NULL), che è vera se il valore dell'attributo A non è NULL, si scrive anche A IS NOT NULL. Nel caso di espressioni complesse, SQL ricorre alla LOGICA A TRE VALORI: VERO (V), FALSO (F) e "SCONOSCIUTO" (?). Quindi se CITTA' ha un valore NULL, il risultato per (CITTA' = 'Milano') ha un valore UNKNOWN, quindi la tupla se c'è soltanto quel predicato non viene selezionata e se fa parte di un predicato più complesso si usa la logica a tre valori. Alcune REGOLE:

  • V AND U = U;
  • V OR U = V;
  • F AND U = F;
  • F OR U = U;
  • NOT U = U.

JOIN SU DUE TABELLE: A parte il caso del join naturale, per combinare le tuple di due relazioni è necessario scrivere dei predicati di join. Lavorare su due o più tabelle significa fare un join. Il problema è che se gli attributi su cui si fa il join hanno nomi uguali c'è ambiguità.

Per esprimere il join ci sono due possibilità.

VARIANTE SINTATTICA:

SELECT NOME FROM STUDENTE JOIN ESAME ON STUDENTE.MATR=ESAME.MATR WHERE C-DIP LIKE 'In%' AND VOTO =30

Oppure:

SELECT NOME FROM STUDENTE, ESAME WHERE STUDENTE.MATR=ESAME.MATR AND C-DIP LIKE 'In%' AND VOTO=30

JOIN FRA TRE TABELLE

È possibile eseguire il join anche su tre tabelle. Ad esempio:

SELECT NOME FROM STUDENTE, ESAME, CORSO WHERE STUDENTE.MATR=ESAME.MATR AND CORSO.COD-CORSO=ESAME.COD-CORSO AND TITOLO LIKE 'info%' AND VOTO<24

NOME ANTONIO

VARIABILI RELAZIONALI (ALIAS)

Per abbreviare la scrittura (una non solo) si può introdurre uno pseudonimo (ALIAS) per la tabella. Ad esempio:

SELECT X.NOME FROM IMPIEGATO AS X, DIPARTIMENTO AS Y WHERE X.MATR-MGR=Y.MATR_MGR AND Y.CITTA='X.CITTA' X NOME PIERO AND Y.CITTA!='X.CITTA' X. NOME GIOVANNI

BLOCCHI SQL PER LA MODIFICA

Le istruzioni che permettono di aggiornare il DB sono:

-INSERT: inserire nuove

tuple nel DB; FANNO PARTE-DELETE: cancella tuple dal DB; DEL DATA MANIPULATION -UPDATE:modifica tuple dal DB; LANGUAGE (DML)INSERT può usare il risultato di una query. DELETE e UPDATE possono fare uso di condizioni per specificare le tuple da cancellare o modificare. In ogni caso gli aggiornamenti riguardano una sola relazione.

CANCELLAZIONE DI TUPLE:L’istruzione DELETE può fare uso di una condizione per specificare le tuple da cancellare. Esempio:DELETE FROM STUDENTE WHEREMATR=’678678’• voglio cancellare le tuple da STUDENTE, cancello quelle per cui è vero il predicato della WHERE (WHEREMATR=’678678’)

INSERIMENTO DI TUPLE:Per inserire una o più tuple bisogna specificare i valori, dicendo quale valore va assegnato a quale attributo. Lasintassi è la seguente:INSERT INTO STUDENTEVALUES (‘456878’, ‘Giorgio Rossi’, ‘Bologna’, ‘Logistica’ e ‘Produzione’)

Sono i valori che vanno assegnati alle colonne STUDENTE rispettivamente come sono state dichiarate nello schema. Nel dubbio, se non mi ricordo come sono state dichiarate le colonne dello schema, allora uso una forma in cui le esplicito (posso scriverle anche non in ordine) in questo modo.

INSERT INTO STUDENTE (MATR, CITTA, NOME, C-DIP) VALUES ('34565', 'MODENA', ...) quello che metto per primo va in MATR, quello che metto in secondo alla CITTA. Un'altra possibilità è quello di fare un inserimento CALCOLATO, ovvero la tupla o le tuple da inserire in una relazione sono il risultato di una SELECT. Ad esempio:

INSERT INTO BOLOGNESI (SELECT * FROM STUDENTE WHERE CITTA='Bologna') inserito nella tabella BOLOGNESI. Ovviamente le colonne di STUDENTE e di BOLOGNESI devono corrispondersi, ovvero lo stesso numero di colonne e lo stesso dominio.

MODIFICA DI ...

TUPLE: Anche l'istruzione UPDATE può fare uso di una condizione per specificare le tuple da modificare e di espressioni per determinare i nuovi valori. Ad esempio:

UPDATE (verbo transitivo) ESAME voglio modificare la tabella ESAME e la specifica di modifica si SET VOTO=30 fa tramite la clausola SET in cui posso specificare, anche separati WHERE DATA='1997-04-01' da virgole, gli assegnamenti alle colonne che corrispondono allamodifica

Anche l'UPDATE può portare a violare il vincolo di integrità referenziale.

RIASSUMENDO: L'istruzione SELECT consiste nella sua forma base di 3 parti: SELECT, FROM e WHERE.

  • A questo si aggiunge ORDER BY per ordinare il risultato.
  • Per trattare i VALORI NULLI, SQL ricorre a una logica a 3 fattori (vero, falso e sconosciuto).
  • INTERROGAZIONI COMPLESSE CLASSIFICAZIONI DELLE INTERROGAZIONI COMPLESSE Si distinguono:
  • QUERY CON ORDINAMENTO;
  • QUERY CON AGGREGAZIONE;
  • QUERY CON RAGGRUPPAMENTO;
  • QUERY BINARIE; QUERY ANNIDATE.
  • QUERY CON ORDINAMENTO: ORDINAMENTO DEL RISULTATO

Per ordinare il risultato secondo i valori di una o più colonne si introduce la clausola ORDER BY, e per ogni colonna si specifica se l'ordinamento è per valori "ascendenti" (ASC, il default) o "discendenti" (DESC). Si ordina sulla prima colonna, a parità di valori di questa sulla seconda e così via. ORDER BY è sempre l'ultima clausola della select e normalmente si va a capo. Ad esempio:

SELECT * FROM ORDINE
WHERE IMPORTO > 100
ORDER BY DATA

Order by regge un elenco di uno o più colonne del risultato, separate eventualmente da virgole e con modificatori. Dirà al sistema di presentarci il risultato per valori crescenti della colonna data.

Nel caso in cui si voglia ordinare sui valori di una colonna risultato di una espressione si usa una

notazione "posizionale". Ad esempio: (importi in migliaia) <SELECT COD-CLI, IMPORTO/1.000 FROM ORDINE WHERE IMPORTO > 10.000 ORDER BY 2> (ordina sulla seconda colonna) La colonna importo non è presente nel risultato, ma c'è un'espressione (IMPORTO/1.000) che coinvolge la colonna importo ma non c'è la colonna importo di per se. Order by 2 fa riferimento alla posizione della colonna, su cui vogliamo ordinare il risultato. Si può ordinare contemporaneamente su più colonne, ad esempio scrivendo: <ORDER BY COD-CLI ASC, DATA DESC> ASC e DESC sono dei modificatori e stanno per ASCENDING e DESCENDING, quindi i valori CRESCENTI (ASCENDING) e i valori DECRESCENTI (DESCENDING). Il modificatore ASC è solitamente di default. Se vogliamo che il sistema ordini in base ai valori decrescenti si usa il modificatore DESC, viceversa se vogliamo che siano modificati in base a valori crescenti si usa ASC. QUERY AGGREGATE Lo standard SQL mette adisposizione una serie di funzioni aggregate (o "di colonna"), tra cui: MIN minimo; MAX massimo; SUM somma; AVG media aritmetica; COUNT contatore. Una funzione aggregata opera sulla tabella risultante dall'applicazione delle clausole FROM e WHERE, e produce un unico valore che sintetizza il contenuto di tale tabella. Nelle query aggregate, queste funzioni calcolano dei valori complessivi sui dati presenti andando ad aggregare tutti i valori presenti all'interno della colonna su cui operano. SUM e AVG lavorano soltanto su dati di tipo numerico, mentre MIN e MAX, che estraggono il valore minimo e il valore massimo, lavorano sia su dati numerici che su dati di tipo stringhe. Calcolare il minimo e il massimo in base all'ordinamento, al lessico grafico fra le stringhe. L'ordinamento al lessico grafico è quello con cui le varie stringhe compaiono, ad esempio, come voce di un dizionario o di un'enciclopedia. COUNT conta la cardinalità, il

numero di valori presenti, quindi è una sorta di CONTATORE.

OSSERVAZIONE: se nella colonna ci sono dei NULLI, il COUNT applicato a una colonna conterebbe i valori diversi dal nullo.

QUERY MASSIMO: selezionare l'importo massimo degli ordini. Ad esempio:

SELECT MAX(IMPORTO) AS MAX_IMP
FROM ORDINE

Le query aggregate sono query che nella target list della select hanno soltanto funzioni aggregate (in questo caso ce n'è solo una, ossia, MAX(IMPORTO)).

Il risultato di una query aggregata è una tabella che ha sempre una sola riga. Quindi se avessi più funzioni aggregate il risultato avrebbe più colonne ma comunque sempre è soltanto una sola riga, una sola tupla.

Quindi, le QUERY AGGREGATE sono query in cui nella SELECT ci sono soltanto funzioni aggregate e come conseguenze di questo fatto restituiscono un risultato che ha sempre solo un'unica tupla.

Query con sommatoria: selezionare la somma degli importi degli ordini relativi al cliente numero 1.

Ad esempio:
<SELECT SUM(IMPORTO) AS SOMMA-IMP
FROM ORDINE
WHERE ORDINE COD-CLIENTE = 1>
L'argomento di una funzione aggregata è una qualunque espressione che può figurare nella SELECT list (ma non un'altra funzione aggregata). Inoltre, tutte le funzioni, ad eccezione di COUNT, ignorano i valori nulli. Il risultato è NULL se tutti i valori sono NULL.
<SELECT SUM(DISTINCT Stipendio)
FROM Imp
WHERE Sede='SOI'>
L'opzione DISTINCT considera solo i valori distinti.
<COUNT E VALORI NULLI>
La forma COUNT(*) conta tutte le tuple del risultato; viceversa, specificando una colonna, si omettono quelle con valore NULL.
Dettagli
Publisher
A.A. 2022-2023
101 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher giammabos di informazioni apprese con la frequenza delle lezioni di Sistemi informativi T-1 e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bologna o del prof Grandi Fabio.