SQL conosciamolo!
Tipi di database
- Grafo
- Documentali
-
Key-value
- RDBMS
Relazionali
Non Relazionali

Che cosa è SQL?
SQL (Structured Query Language)
è il linguaggio di interrogazione più diffuso tra quelli usati per l’interazione con i principali Database Management Systems (DBMS)
Esistono alcuni "dialetti" per alcune tipologia di DB (T-SQL per SQL server ; HANA-SQL per SAP-HANA ..)

Concetti basi: Tabelle
Le tabelle sono la rappresentazione delle entità concrete.
Dipendente
Fattura
Appuntamento
Paziente
Visita

sono composte da attributi che le descrivono
Ogni riga (tupla) di una tabella è l'insieme dei valori di una tabella
Medico
Accettazoione
Concetti basi: Indici
Chiave primaria
è un insieme di attributi che permette di individuare univocamente un record o tupla in una tabella o relazione.
Indice
è un insieme di attributi che permettono di ricercare più velocemente i dati all'interno di una tabella
Chiave esterna
è un insieme di attributi che permettono di relazionare una o più tabelle tra di loro
Concetti basi: Relazioni
1:1
è una relazione con rapporto 1 ad 1
1:N
è una relazione con un rapporto 1 a molti
N:M
è una relazione con un rapporto Molti a Molti



Concetti basi: Diagramma ER

Frecce
identificano relazioni tra tabelle
Icona gialla (grassetto)
chiave primaria che identifica univocamente una riga
Icona rossa (sottolineato)
chiave esterna, identifica i campi che permettono la relazione con l'altra tabella
Icona azzurrina
attributi di tabella
Concetti basi: Relazioni






Query SQL


Risultato
Query
Il risultato di una query è una tabella,
dove le colonne sono i campi indicati nella prima parte della query
Text
Sintassi SQL
Selezione
(le colonne della tabella)
Provenienza
Filtri
(le condizioni e la logica per estrrre ciò che ci serve)
Raggruppamento
(per raggruppare i dati e avere risultati aggregati)
Filtri su raggruppamenti

Sintassi SQL: la proiezione

Nella prima parte della query si specificano i dati che vogliamo vengano visualizzati nel nostro risultato.
La dicitura "as" identifica come si deve chiamare la colonna nel risultato
I dati possono anche essere combinazioni di:
- dati semplici (attirbuti contenuti nel database)
- aggregati (somme, medie, conteggi)
- condizioni (if-then)
- complessi (sotto query, funzioni)
Sintassi SQL: provenienza e join

Qui si identificano le tabelle da dove si dovranno prendere i dati o fare i filtri
LE JOIN
Servono per creare le relazioni tra le tabelle: sono quei collegamenti che le relazionano tra di loro.
Le join possono essere esplicite o implicite.
In un DB relazionale, se si usano join esplicite con indici definiti migliori le performance
TIPI di JOIN:
INNER, LEFT, RIGHT
[INNER|LEFT|RIGHT] JOIN <tabella> ON <condizione di aggregazione>
Sintassi SQL: Join

Sintassi SQL: filtri e raggruppamenti

Tutti i filtri e la logica per estrarre i dati avviene principalmente qui.
Si usano:
- condizioni di AND, OR, NOT
- operazioni matematiche di =, ≠, >, < , ≤, ≥
- operatori complessi LIKE, IN
Operatori di raggruppamento ed ordinamento
Sono operatori che svolgono azioni sui dati filtrati.
- Group by: raggruppa secondo alcuni attributi che si elencano
- Having: filtra i dati secondo la logica di raggruppamento
- Order by: ordina i dati secondo alcuni attributi che si elencano
Sintassi SQL: alcuni operatori/funzioni
Devono essere usati con GROUP BY
COUNT: Serve per contare le righe
SUM: Serve per sommare valori numerici
AVG: serve per fare uan media tra i valori numerici
IF-THEN: serve per effettuare condizioni per avere "risultati dinamici"
DISTINCT: costrutto che identifica di selezionare risultati distinti (elimina quelli uguali)
REPLACE, SUBSTRING: per manipolare le stringhe
Nexts steps se si vorrà!
UNION
EXTRACT
INTERSECT
SUB-QUERY
SIDE EFFECT
VIEW
STORE PROCEDURE
FUNCTION
TRIGGER

Esercizi
Il nome di tutte le sale di Pisa

SELECT Nome
FROM Sala
WHERE Citta = 'Pisa'
Esercizi
Il titolo dei film di Fellini prodotti dopo il 1960.

SELECT Titolo
FROM Film
WHERE AnnoProduzione > 1960 AND Regista = 'Fellini'
Esercizi
Il regista ed il titolo dei film in cui recitano meno di 6 attori

SELECT Titolo, Regista, COUNT(R.*) as numeroAttori
FROM Film as F
JOIN Recita as R ON R.CodFilm = F.CodFilm
GROUP BY R.CodFilm
HAVING numeroAttori < 6
Esercizi
Il titolo dei film in cui recita Mastroianni

SELECT F.Titolo
FROM Film as F
JOIN Recita as R ON F.CodFilm = R.CodFilm
JOIN Attore as A ON A.CodAttore = R.CodAttore
WHERE R.Nome = 'Mastroianni'
Sql conosciamolo part.1
By Saverio M.
Sql conosciamolo part.1
- 186