date - altervistamarcomicera.altervista.org/bce/bdd/sql.pdf · sql page 7 l'ultimo esame...

Post on 31-Aug-2019

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related