47
Confronto 1. WHERE Data < '2005-07-15' Intervallo temporale 2. WHERE Data BETWEEN '2001-01-01' AND '2005-12-31' Cinque anni fa 3. WHERE YEAR(Data) = YEAR(CURRENT_DATE) - 5 Numero di giorni DATEDIFF(Data1, Data2) Età di una persona SELECT FLOOR(DATEDIFF(CURRENT_DATE, '1994-11-30')/365) Numero di mesi PERIOD_DIFF(Data1, Data2) Differenza 4. Formattazione 5. DATE_FORMAT(Data, '%Y%m') Somma 6. DATE_ADD(Data, INTERVAL 5 YEAR) oppure Data + INTERVAL 5 YEAR -- Controllo età Sottrazione 7. DATE_SUB(Data, INTERVAL 5 YEAR) oppure Data - INTERVAL 5 YEAR Giorno della settimana 8. DAYOFWEEK(Data) Date venerdì 18 novembre 2016 19:01 SQL Page 1

Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

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

Page 2: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

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

Page 3: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 3

Page 4: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

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

Page 5: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

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

Page 6: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

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

Page 7: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

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

Page 8: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

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

Page 9: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 9

Page 10: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 10

Page 11: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 11

Page 12: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 12

Page 13: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 13

Page 14: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 14

Page 15: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 15

Page 16: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 16

Page 17: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 17

Page 18: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 18

Page 19: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 19

Page 20: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 20

Page 21: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Database

Solo/solamente/esclusivamentelunedì 06 febbraio 2017 09:37

SQL Page 21

Page 22: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 22

Page 23: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Semprelunedì 06 febbraio 2017 10:03

SQL Page 23

Page 24: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Maimartedì 07 febbraio 2017 12:04

SQL Page 24

Page 25: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Tuttilunedì 06 febbraio 2017 09:50

SQL Page 25

Page 26: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 26

Page 27: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Tutti o tutti tranne unolunedì 06 febbraio 2017 09:50

SQL Page 27

Page 28: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 28

Page 29: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Database

Numero di volte maggiore (ALL)lunedì 06 febbraio 2017 09:54

SQL Page 29

Page 30: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 30

Page 31: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Incidenzamartedì 07 febbraio 2017 10:49

SQL Page 31

Page 32: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Database

Interpretazione:

Mediamente piùlunedì 06 febbraio 2017 11:21

SQL Page 32

Page 33: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Mediamente per patologia•Più utilizzato per numero di pazienti diversi•

Interpretazione:

Soluzione senza parentesi quadre:

SQL Page 33

Page 34: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Semplice mediamartedì 07 febbraio 2017 11:05

SQL Page 34

Page 35: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Eliminazionelunedì 06 febbraio 2017 10:55

SQL Page 35

Page 36: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Aggiornamentimartedì 07 febbraio 2017 10:57

SQL Page 36

Page 37: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Join-equivalentelunedì 06 febbraio 2017 09:56

SQL Page 37

Page 38: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Report / snapshot / tab. ridondantelunedì 06 febbraio 2017 10:00

SQL Page 38

Page 39: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 39

Page 40: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

DECLARE _terapieMedie INTEGER DEFAULT 0;

SQL Page 40

Page 41: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 41

Page 42: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 42

Page 43: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

Database

Query complesselunedì 06 febbraio 2017 10:03

SQL Page 43

Page 44: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 44

Page 45: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 45

Page 46: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

SQL Page 46

Page 47: Date - Altervistamarcomicera.altervista.org/bce/bdd/SQL.pdf · SQL Page 7 L'ultimo esame dell'anno accademico 2013/2014 è quello del 25 Febbraio 2015. Negli esami dal 10 Giugno 2015

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