Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Confronto1.WHERE Data < '2005-07-15'
Intervallo temporale2.WHERE Data BETWEEN '2001-01-01' AND '2005-12-31'
Cinque anni fa3.WHERE YEAR(Data) = YEAR(CURRENT_DATE) - 5
Numero di giorni○
DATEDIFF(Data1, Data2)
Età di una personaSELECT FLOOR(DATEDIFF(CURRENT_DATE, '1994-11-30')/365)
Numero di mesi○
PERIOD_DIFF(Data1, Data2)
Differenza4.
Formattazione5.DATE_FORMAT(Data, '%Y%m')
Somma6.DATE_ADD(Data, INTERVAL 5 YEAR)oppureData + INTERVAL 5 YEAR -- Controllo età
Sottrazione7.DATE_SUB(Data, INTERVAL 5 YEAR)oppureData - INTERVAL 5 YEAR
Giorno della settimana8.DAYOFWEEK(Data)
Datevenerdì 18 novembre 2016 19:01
SQL Page 1
Join naturale: fa l'unione di due tabelle unendo i valori uguali sugli attributi che hanno lo stesso nome.•
T1 NATURAL JOIN T2
Theta join: fa l'unione di due tabelle su una condizione.•
Using: Fa un join naturale solo su determinati attributi omonimi elencati.○
T1 INNER JOIN T2 USING(AttributiElencati)
Self join: combina le tuple della stessa tabella in base a certe condizioni. ○
Tabella T1 INNER JOIN Tabella T2 ON T2.Data < T1.Data
T1 INNER JOIN T2 ON A1 = A2
Prodotto cartesiano: prodotto cartesiano senza condizione.•
T1 CROSS JOIN T2
Join esterni: se non c'è corrispondenza, mantiene la riga specificata (LEFT o RIGHT) e riempie la tabella non indicata con valori NULL.
•
T1 LEFT OUTER JOIN T2 ON A1 = A2
T1 RIGHT OUTER JOIN T2 ON A1 = A2
Join multiplo•
INNER JOIN … ON … INNER JOIN … ON …
Joingiovedì 20 marzo 2014 13:47
SQL Page 2
SQL Page 3
Persistente Ricalcolo all'utilizzo Utilizzo Creazione
View No Sì Scomposizione di query.SELECT *FROM Table;
CREATE VIEW ViewName AS
Temporary table No No
Immediate: trigger•Deferred: temporal trigger (event)•On demand: stored procedure•
Tre tipi di refresh:
Risultati multi-tupla di funzioni. -- Uso per risultato multi-tuplaDROP PROCEDURE IF EXISTS ProcedureName;DELIMITER $$CREATE PROCEDURE ProcedureName([…])
Attribute1 CHAR(50) NOT NULL,Attribute2 INT(11) NOT NULL DEFAULT 0,PRIMARY KEY(Attribute1)
CREATE TEMPORARY TABLE IF NOT EXISTS _TempTableName(
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- oppure
LIKE AnotherSampleTable;CREATE TEMPORARY TABLE IF NOT EXISTS _TempTableName
TRUNCATE _TempTableName;
SELECT *FROM Table;
INSERT INTO _TempTableName
BEGIN
END $$DELIMITER ;;
-- Chiamata e visualizzazione del risultatoCALL ProcedureName([…]);SELECT * FROM _TempTableName;
Materialized view(tabella in MySQL)(snapshot)
Sì No
Immediate: trigger•Deferred: temporal trigger (event)•On demand: stored procedure•
Tre tipi di refresh:
Per ottenere una risposta veloce, anche non aggiornata.La query che riempie la materialized view di solito è lenta e complessa.
Attribute1 CHAR(50) NOT NULL,Attribute2 INT(11) NOT NULL DEFAULT 0,PRIMARY KEY(Attribute1)
CREATE TABLE MAT_VIEW_NAME(
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Views, temporary tables, …mercoledì 18 gennaio 2017 10:21
SQL Page 4
Sintassi Dove può essere chiamata
Stored procedures
DELIMITER $$DROP PROCEDURE IF EXISTS procedureName;CREATE PROCEDURE procedureName(IN param1 INT(11), OUT param2 CHAR(50))
VariabiliDECLARE var1 INTEGER DEFAULT 0;DECLARE var2 VARCHAR(255) DEFAULT '';
Cursori
-- Query;DECLARE cursorName CURSOR FOR
OPEN cursorName;
Loops
FETCH cursorName INTO var2;-- ...
loopName: LOOP
END LOOP loopName;
CLOSE cursorName;
BEGIN
END $$DELIMITER ;
Fuori da altri pezzi di codice.
Functions DELIMITER $$DROP FUNCTION IF EXISTS functionName;CREATE FUNCTION functionName(param1 INT, param2 CHAR(50))RETURNS VARCHAR(6) [NOT] DETERMINISTIC
Variabile risultatoDECLARE result VARCHAR(6) DEFAULT '';
RETURN (result);
BEGIN
END $$DELIMITER ;
Query•Stored procedure•Trigger•Event•
Procedures & functionslunedì 30 gennaio 2017 17:11
SQL Page 5
Sintassi
Triggers DROP TRIGGER IF EXISTS TriggerName;DELIMITER $$
{BEFORE, AFTER} {INSERT, UPDATE, DELETE} ON TableName FOR EACH ROWCREATE TRIGGER TriggerName
Errori
SIGNAL SQLSTATE '45000'SET MESSAGE_TEXT = 'Message';
IF(Condition) THEN
END IF;
BEGIN
END $$DELIMITER ;
Events(temporal triggers)
DROP EVENT IF EXISTS EventName;DELIMITER $$CREATE EVENT EventName ON SCHEDULE EVERY 3 {DAY, MONTH, …} DOBEGIN
END $$DELIMITER ;
Events & triggersdomenica 05 febbraio 2017 17:05
SQL Page 6
Proposizioni Operatori
Appartenenza IN•INNER JOIN•WHERE >, <, …•
Esclusione NOT IN•OUTER JOIN•WHERE >, <, …•
Unione OR•UNION (elimina i duplicati)•
La disgiunzione non esclude l'intersezioneUNION ALL (conserva i duplicati)•
Differenza tranne•eccetto che•solamente•esclusivamente•ma non•
NOT IN•OUTER JOIN•
Esclusività solamente•soli/e•
Pazienti visitati solamente dal dott. Verdi•
Dose giornaliera media dei farmaci indicati per la cura di sole patologie intestinali•SELECT AVG(I1.DoseGiornaliera)FROM Indicazione I1
SELECT I2.Farmaco
ON I2.Patologia = P.NomeFROM Indicazione I2 INNER JOIN Patologia P
WHERE P.ParteCorpo <> 'Intestino'
WHERE I1.Farmaco NOT IN (
);
Analisi del testomercoledì 25 gennaio 2017 11:22
SQL Page 7
L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015.Negli esami dal 10 Giugno 2015 in poi, vanno considerati gli esercizi dell' "a.a. precedente".
Database
Tutti gli esercizi 1mercoledì 01 febbraio 2017 09:55
SQL Page 8
SQL Page 9
SQL Page 10
SQL Page 11
SQL Page 12
SQL Page 13
SQL Page 14
SQL Page 15
SQL Page 16
SQL Page 17
SQL Page 18
SQL Page 19
SQL Page 20
Database
Solo/solamente/esclusivamentelunedì 06 febbraio 2017 09:37
SQL Page 21
SQL Page 22
Semprelunedì 06 febbraio 2017 10:03
SQL Page 23
Maimartedì 07 febbraio 2017 12:04
SQL Page 24
Tuttilunedì 06 febbraio 2017 09:50
SQL Page 25
SQL Page 26
Tutti o tutti tranne unolunedì 06 febbraio 2017 09:50
SQL Page 27
SQL Page 28
Database
Numero di volte maggiore (ALL)lunedì 06 febbraio 2017 09:54
SQL Page 29
SQL Page 30
Incidenzamartedì 07 febbraio 2017 10:49
SQL Page 31
Database
Interpretazione:
Mediamente piùlunedì 06 febbraio 2017 11:21
SQL Page 32
Mediamente per patologia•Più utilizzato per numero di pazienti diversi•
Interpretazione:
Soluzione senza parentesi quadre:
SQL Page 33
Semplice mediamartedì 07 febbraio 2017 11:05
SQL Page 34
Eliminazionelunedì 06 febbraio 2017 10:55
SQL Page 35
Aggiornamentimartedì 07 febbraio 2017 10:57
SQL Page 36
Join-equivalentelunedì 06 febbraio 2017 09:56
SQL Page 37
Report / snapshot / tab. ridondantelunedì 06 febbraio 2017 10:00
SQL Page 38
SQL Page 39
DECLARE _terapieMedie INTEGER DEFAULT 0;
SQL Page 40
SQL Page 41
SQL Page 42
Database
Query complesselunedì 06 febbraio 2017 10:03
SQL Page 43
SQL Page 44
SQL Page 45
SQL Page 46
Italiano Italiano in forma SQL SQL
Tutti Medici che hanno visitato tuttii pazienti di Roma.
Per ogni medico, non esiste paziente romano che non abbia visitato.
Doppio NOT EXISTS•Si filtra sulla condizione e si impone il numero di record prodotti uguale al numero di oggetti presenti nella condizione
•
"SQLizzare"giovedì 02 febbraio 2017 14:22
SQL Page 47