Il Linguaggio SQL. Lo standard attuale è noto come SQL 92 ed è articolato in tre livelli: entry level intermediate full
|
|
- Bruno Di Carlo
- 2 anni fa
- Visualizzazioni
Transcript
1 Il Linguaggio SQL SQL (Structured Query Language) nasce in ambiente IBM nel 1974, all'interno del progetto di System R. Utilizzato come linguaggio di manipolazione, definizione e controllo in R*, Starburst, SQL/DS, DB2, ORACLE, INFORMIX, INGRES, SQL Server,... N.B. Ogni sistema fa uso di un proprio dialetto, nonostante sia definito uno standard ANSI (American National Standard Institute) e ISO (International Standards Organization) Lo standard attuale è noto come SQL 92 ed è articolato in tre livelli: entry level intermediate full SQL è utilizzabile sia in modo interattivo sia facendo uso di un linguaggio ospite ("embedded SQL") Sistemi Informativi - Linguaggio SQL pag. 1
2 Caratteristiche principali linguaggio non procedurale le istruzioni non contengono sequenze, cicli o test, ma permettono una descrizione diretta di cosa si vuole ottenere e non come manipolazione "set-oriented" (insiemi di tuple) gli insiemi di tuple interessati da una operazione sono definiti sulla base di predicati completezza relazionale ogni espressione dell'algebra relazionale può essere realizzata facendo uso di statement SQL Sistemi Informativi - Linguaggio SQL pag. 2
3 Esempio guida - schema concettuale Fornitori 0,n Magazzino 0,n Parti Sistemi Informativi - Linguaggio SQL pag. 3
4 Esempio guida F FNUM FNOME VOLUME CITTA M FNUM PNUM QTA F1 Sassi 20 Lecce F1 P1 300 F2 Galli 10 Pisa F1 P2 200 F3 Bisi 30 Pisa F1 P3 400 F4 Celli 20 Lecce F1 P4 200 F5 Adami 30 Ancona F1 P5 100 F1 P6 100 P PNUM PNOME COLORE PESO CITTA F2 P1 300 P1 Dado Rosso 12 Lecce F2 P2 400 P2 Vite Verde 17 Pisa F3 P2 200 P3 Chiodo Blu 17 Roma F4 P2 200 P4 Chiodo Rosso 14 Lecce F4 P4 300 P5 Anello Blu 12 Pisa F4 P5 400 P6 Tappo Rosso 19 Lecce Sistemi Informativi - Linguaggio SQL pag. 4
5 Oggetti e Operatori di base (cenni) Dati Numerici: INTEGER (o INT) SMALLINT DECIMAL(p,q) { p cifre, q decimali } FLOAT(p) { p cifre } Dati Stringa: CHAR[ACTER](n) { n < 255 } VARCHAR(n) { long strings } Data/Tempo: DATE TIME TIMESTAMP { = DATE + TIME } Sono supportati gli operatori numerici di base, gli operatori logico-relazionali, e operatori per la manipolazione di stringhe. Sistemi Informativi - Linguaggio SQL pag. 5
6 Null Values (NULL) SQL utilizza una logica a 3 valori (T = 'True, F= 'False, e? = 'Unknown' o NULL), basata sulle seguenti tabelle di verità: AND T? F OR T? F NOT T T? F T T T T T F??? F? T???? F F F F F T? F F T Due NULL non sono considerati uguali se confrontati tra loro, ma lo sono ai fini dell'indiciamento e altre operazioni. Valore di default (es.: stringa vuota, zero, ecc.): permette di accettare informazione incompleta anche nei casi in ciò non sarebbe lecito. Nella definizione di un attributo sono pertanto possibili le opzioni NOT NULL e NOT NULL WITH DEFAULT. Sistemi Informativi - Linguaggio SQL pag. 6
7 Data Definition Language Permette la creazione, modifica, e cancellazione sia di oggetti "logici" (le relazioni e le viste) sia di oggetti fisici (gli indici). Creazione di una relazione (table) CREATE TABLE F ( FNUM CHAR(5) NOT NULL, FNOME CHAR(20) NOT NULL WITH DEFAULT, VOLUME SMALLINT, CITTA CHAR(15) NOT NULL WITH DEFAULT PRIMARY KEY (FNUM)) ; CREATE TABLE M ( FNUM CHAR(5) NOT NULL, PNUM CHAR(5) NOT NULL, QTA SMALLINT PRIMARY KEY (FNUM,PNUM)) FOREIGN KEY (FNUM) REFERENCES F FOREIGN KEY (PNUM) REFERENCES P ; Sistemi Informativi - Linguaggio SQL pag. 7
8 Indici CREATE INDEX FX on F (FNUM DESC) ; (*Il criterio di ordinamento di default è ASC.*) DROP INDEX FX ; È possibile creare indici composti su 2 o più attributi di una relazione: CREATE INDEX C_FX on F (CITTA,VOLUME) ; imporre l'unicità della chiave (non necessariamente primaria, ma priva di duplicati all'atto della creazione dell'indice): CREATE CREATE UNIQUE INDEX FX on F (FNUM); UNIQUE INDEX MX on M (FNUM,PNUM); e, infine, forzare l'ordinamento dei dati attraverso la creazione di un indice clustered: CREATE CLUSTER INDEX CX on F (FNUM) ; Sistemi Informativi - Linguaggio SQL pag. 8
9 Data Manipulation Language Il DML di SQL si basa su 4 statement di base: SELECT: per il reperimento (di una o più tuple), ricava da relazioni di partenza una relazione, come gli operatori dell algebra relazionale INSERT: per l'inserimento di tuple in una relazione UPDATE: per l'aggiornamento di tuple di una relazione DELETE: per la cancellazione di tuple da una relazione Tutti i quattro statement possono fare uso di una clausola WHERE < condizione > che è equivalente alla condizione dell operatore di selezione in algebra relazionale e permette la specifica di condizioni logiche che i dati da reperire (modificare) devono soddisfare. Sistemi Informativi - Linguaggio SQL pag. 9
10 La forma generale dello statement è: Lo statement SELECT SELECT [ALL DISTINCT ] <select_list> proiezione FROM <table_list> prodotto cartesiano [WHERE <condition>] selezione (include predicati [GROUP BY <attribute_list> di join e altri) [HAVING <condition>]] [ORDER BY <attribute_list>] Solo le clausole SELECT e FROM sono obbligatorie SELECT: quali informazioni devono essere fornite in uscita (attributi, medie di valori, ecc.) N.B. La clausola SELECT realizza l'operatore di Proiezione dell'algebra relazionale, non quello di Selezione. Quest'ultimo è realizzato dalla clausola WHERE. FROM: da quali relazioni si estraggono le informazioni Sistemi Informativi - Linguaggio SQL pag. 10
11 trovare "Codici e volumi dei fornitori di Pisa" selezione con predicato su Città e proiezione su FNUM e VOLUME SELECT FNUM, VOLUME FROM F WHERE CITTA = "Pisa" ; FNUM VOLUME F2 10 F3 30 È possibile (talvolta necessario in caso di ambiguità) fare uso di nomi di attributi qualificati con il nome della relazione SELECT F.FNUM AS "Fornitore", F.VOLUME AS "Volume Affari" FROM F WHERE F.CITTA = "Pisa" ; e rinominare le colonne di uscita Sistemi Informativi - Linguaggio SQL pag. 11
12 Relazioni e tabelle Le tables di SQL sono collezioni di tuple, con eventuali duplicati Per produrre "relazioni" e non solamente "tables" è sufficiente utilizzare l'opzione DISTINCT (UNIQUE è un sinonimo). SELECT PNUM SELECT DISTINCT PNUM FROM M ; FROM M ; PNUM P1 P2 P3 P4 P5 P6 P1 P2 P2 P2 P4 P5 PNUM P1 P2 P3 P4 P5 P6 Sistemi Informativi - Linguaggio SQL pag. 12
13 "Codici delle parti fornite dal fornitore F1 in quantità maggiore di 200." SELECT PNUM, QTA FROM M WHERE FNUM = "F1" AND QTA > 200 ; PNUM QTA P1 300 P3 400 "Tutti i dati dei fornitori di Pisa" SELECT * FROM F WHERE CITTA = "Pisa" ; "Codice e volume dei fornitori di Pisa, in ordine discendente di volume" SELECT FNUM, VOLUME FROM F WHERE CITTA = "Pisa" ORDER BY VOLUME DESC ; Sistemi Informativi - Linguaggio SQL pag. 13
14 N.B. Gli attributi citati nella clausola ORDER BY devono comparire nella clausola SELECT (anche implicitamente se si usa *). SELECT FNUM, 10*QTA FROM M WHERE PNUM = "P1" ORDER BY 2, 1 ; Sistemi Informativi - Linguaggio SQL pag. 14
15 Interrogazioni di range "Parti il cui peso è compreso tra 16 e 19" SELECT PNUM FROM P WHERE PESO BETWEEN 16 AND 19 ; equivale a: SELECT PNUM FROM P WHERE PESO >=16 AND PESO <=19 ; Interrogazioni di set "Parti il cui peso è 14, 18, o 19" SELECT PNUM FROM P WHERE PESO IN (14, 18, 19) ; Sistemi Informativi - Linguaggio SQL pag. 15
16 equivale a: SELECT PNUM FROM P WHERE PESO = 14 OR PESO = 18 OR PESO = 19 ; Esistono le forme NOT BETWEEN e NOT IN Interrogazioni LIKE Usando le wildcards % (stringhe arbitrarie) e ricercare stringhe arbitrarie in specifici attributi. _ (singolo carattere) è possibile "Tutti i fornitori il cui nome inizia con C" SELECT * FROM F WHERE FNOME LIKE "C%" ; Sistemi Informativi - Linguaggio SQL pag. 16
17 Interrogazioni e NULL Si supponga che il volume di F5 sia NULL, anzichè 30. Allora la query SELECT FNUM FROM F WHERE VOLUME > 25 ; restituisce il solo F3. In generale, nessun operatore di confronto restituisce True in presenza di NULL. Per selezionare tuple con NULL, si usa: SELECT FNUM FROM F WHERE VOLUME IS NULL ; Sistemi Informativi - Linguaggio SQL pag. 17
18 Interrogazioni di join Quando in SELECT si specificano più relazioni, SQL realizza una operazione di prodotto cartesiano e, in combinazione con la clausola WHERE, un θ-join. I predicati che confrontano attributi di diverse relazioni sono detti predicati di join. "Tutte le combinazioni di parti e di fornitori situati nella stessa città" SELECT F.FNUM, F.CITTA, P.PNUM, F.FNUM F.CITT P.PNUM P.CITT P.CITTA A A FROM F, P F1 Lecce P1 Lecce WHERE F.CITTA = P.CITTA ; F1 Lecce P4 Lecce F1 Lecce P6 Lecce F2 Pisa P2 Pisa F2 Pisa P5 Pisa F3 Pisa P2 Pisa F3 Pisa P5 Pisa F4 Lecce P1 Lecce F4 Lecce P4 Lecce F4 Lecce P6 Lecce Vengono concatenate le tuple di F e P con lo stesso valore del campo CITTA. Il risultato è poi proiettato sui campi della select_list. Sistemi Informativi - Linguaggio SQL pag. 18
19 Join con "predicati locali" "Tutte le parti in città diverse da quella del fornitore F1." SELECT FROM WHERE AND P.PNUM, P.CITTA, F.CITTA F, P F.CITTA <> P.CITTA F.FNUM = "F1"; P.PNUM P.CITTA F.CITTA P2 Pisa Lecce P3 Roma Lecce P5 Pisa Lecce Sistemi Informativi - Linguaggio SQL pag. 19
20 Self Join Esprime una condizione su attributi della stessa relazione. Occorre diversi riferimenti alle tuple facendo uso di "variabili di range" (alias) SELECT FIRST.FNUM, SECOND.FNUM FROM F FIRST, F SECOND WHERE FIRST.CITTA = SECOND.CITTA AND FIRST.FNUM < SECOND.FNUM ; distinguere i FIRST.FNUM F1 F2 SECOND.FNUM F4 F3 Sistemi Informativi - Linguaggio SQL pag. 20
21 Altro esempio Fornitori 0,n Progetti 0,n Magazzino 0,n Parti DB schema = { F( FNUM, FNOME, VOLUME, CITTA ), P( PNUM,PNOME,COLORE,PESO,CITTA ), J( JNUM,JNAME,CITTA ), FPJ( FNUM, PNUM, JNUM, QTA ) } FPJ: La parte PNUM è stata fornita dal fornitore FNUM per il progetto JNUM in quantità QTA. Sistemi Informativi - Linguaggio SQL pag. 21
22 Q1: "Fornitori del progetto J1, in ordine di codice" SELECT DISTINCT FNUM FROM FPJ WHERE JNUM = "J1" ORDER BY FNUM Q2: "Come Q1, ma ordinati per nome" SELECT DISTINCT F.FNUM,F.FNOME FROM F, FPJ WHERE FPJ.JNUM = "J1" AND F.FNUM = FPJ.FNUM ORDER BY F.FNOME Q3: "Tutte le coppie di città tali che un fornitore della prima ha rifornito un progetto della seconda" SELECT FROM WHERE AND DISTINCT F.CITTA, J.CITTA F, J, FPJ F.FNUM = FPJ.FNUM J.JNUM = FPJ.JNUM Sistemi Informativi - Linguaggio SQL pag. 22
23 Q4: "Parti fornite ad un progetto da un fornitore della stessa città del progetto" SELECT DISTINCT FPJ.PNUM FROM F, J, FPJ WHERE F.FNUM = FPJ.FNUM AND J.JNUM = FPJ.JNUM AND F.CITTA = J.CITTA N.B. È una cosiddetta "query ciclica" in quanto il grafo con "nodi" F, J, e FPJ e "archi" i predicati di join è ciclico. Q5: "Progetti per cui esiste almeno un fornitore di un'altra città" SELECT DISTINCT J.JNUM FROM F, J, FPJ WHERE F.FNUM = FPJ.FNUM AND J.JNUM = FPJ.JNUM AND F.CITTA <> J.CITTA Q6: "Tutte le coppie di parti tali che esiste un fornitore che le abbia fornite entrambe" SELECT FPJX.PNUM, FPJY.PNUM FROM FPJ FPJX, FPJ FPJY WHERE FPJX.FNUM = FPJY.FNUM AND FPJX.PNUM < FPJY.PNUM Sistemi Informativi - Linguaggio SQL pag. 23
24 Query innestate (subquery) Una query si dice innestata se nella clausola WHERE è presente un altro statement SELECT. La presenza di "nested queries" giustifica il termine Structured di SQL. È da notare che nei primi prototipi di SQL l'uso di nested queries era l'unico modo per poter eseguire dei join. "Nomi dei fornitori che hanno fornito la parte P1" SELECT FROM WHERE AND diventa F.FNOME F, M F.FNUM = M.FNUM M.PNUM = "P1" SELECT FNOME FROM F WHERE F.FNUM IN ( SELECT FNUM FROM M WHERE PNUM = "P1" ) Sistemi Informativi - Linguaggio SQL pag. 24
25 La valutazione della subquery restituisce l'insieme di codici ("F1", "F2"). Il SELECT esterno è pertanto equivalente a SELECT FROM WHERE FNOME F F.FNUM IN ("F1", "F2") e il risultato è { ("Sassi"), ("Galli") }. Sistemi Informativi - Linguaggio SQL pag. 25
26 "Nomi dei fornitori che hanno fornito almeno una parte rossa" SELECT FROM WHERE AND AND F.FNOME F, P, M F.FNUM = M.FNUM P.PNUM = M.PNUM P.COLORE = "Rosso" diventa SELECT FNOME FROM F WHERE F.FNUM IN ( SELECT FNUM FROM M WHERE PNUM IN ( SELECTPNUM FROM P WHERE COLORE = "Rosso" )) La subquery piu interna ha risultato ("P1", "P4", "P6"). Sistemi Informativi - Linguaggio SQL pag. 26
27 La subquery intermedia ha risultato ("F1", "F2", "F4") (in realtà occorrerebbe DISTINCT) Anche se semanticamente una query innestata equivale ad una query senza nesting, non è detto che il DBMS (l'ottimizatore) le tratti allo stesso modo, per ciò che riguarda le modalità di esecuzione (la forma innestata può dar luogo a interpretazioni procedurali). NB: Le due query sono equivalenti dal punto di vista dell algebra relazionale; all atto pratico, possono differire per la presenza di duplicati: in questo caso, la versione con subquery proietta la relaz. esterna su un campo chiave (alternativa), quindi privo di duplicati, mentre il join a tre produce uno stesso fornitore tante volte quante sono le parti rosse da lui fornite. Sistemi Informativi - Linguaggio SQL pag. 27
28 Subquery correlate Nel SELECT innestato si può fare riferimento a variabili del SELECT esterno. In questo caso (almeno concettualmente) la subquery non può essere valutata in un singolo passo. "Nomi dei fornitori che hanno fornito la parte P1" SELECT FNOME FROM F FX WHERE "P1" IN ( SELECT PNUM FROM M WHERE M.FNUM = FX.FNUM ) FX è una variabile il cui range sono le tuple di F. Per ognuna di queste la subquery viene valutata, e restituisce tutte le parti relative al fornitore corrente. Se P1 è parte del risultato, allora FNOME del fornitore corrente fa parte del risultato finale. Sistemi Informativi - Linguaggio SQL pag. 28
29 "Parti fornite da più di un fornitore" SELECT DISTINCT PNUM FROM M FPX WHERE FPX.PNUM IN ( SELECT FPY.PNUM FROM M FPY WHERE FPY.FNUM <> FPX.FNUM ) Per ogni tupla di FPX la subquery restituisce le parti fornite da fornitori diversi da quello corrente. Se FPX.PNUM è tra queste, allora fa parte del risultato. Sistemi Informativi - Linguaggio SQL pag. 29
30 Altri operatori Gli operatori relazionali =, <,..., si possono usare se e solo se la subquery non ritorna più di un valore (se il risultato è vuoto, allora equivale a NULL) "Fornitori della stessa città di F1" SELECT FNUM FROM F WHERE CITTA = ( SELECTCITTA FROM F WHERE FNUM = "F1" ); Parti di peso massimo per ogni colore SELECT PNUM FROM P PX WHERE PX.PESO > ( SELECT PY.PESO FROM P PY WHERE PX.COLORE = PY.COLORE AND PX.PNUM <> PY.PNUM ); Questa non è corretta, in quanto il risultato contiene in generale più di una tupla. È anche scorretta perchè esclude le parti che sono le sole ad avere un dato colore. Sistemi Informativi - Linguaggio SQL pag. 30
31 Il quantificatore esistenziale (EXISTS) L'espressione EXISTS (SELECT...) restituisce True se e solo se il risultato del SELECT non è vuoto. Analogamente, NOT EXISTS (SELECT...) restituisce True se e solo se il risultato del SELECT è vuoto. "Nomi dei fornitori che hanno (o non hanno) fornito la parte P1" SELECT FNOME FROM F FX WHERE EXISTS ( SELECT * FROM M WHERE M.FNUM = FX.FNUM AND M.PNUM = "P1" ) SELECT FNOME FROM F FX WHERE NOT EXISTS ( SELECT * FROM M WHERE M.FNUM = FX.FNUM AND M.PNUM = "P1" ) Sistemi Informativi - Linguaggio SQL pag. 31
32 Si può fare uso del costrutto <op_rel> ALL ( SELECT... ) per verificare che una condizione sia vera per tutti i valori restituiti dalla subquery "Parti di peso massimo per ogni colore" SELECT PNUM FROM P PX WHERE PX.PESO >= ALL ( SELECT PY.PESO FROM P PY WHERE PX.COLORE = PY.COLORE ) Per una tupla di PX, la subquery restituisce i pesi di tutte le parti con il colore corrente. La parte viene selezionata se il suo peso è >= di quello di tutte le parti restituite. Sistemi Informativi - Linguaggio SQL pag. 32
33 Funzioni aggregate (column functions) SQL mette a disposizione una serie di comode funzioni per elaborare i valori di un attributo ( MAX, MIN, AVG, SUM ) e per contare le tuple che soddisfano una condizione (COUNT). Numero di fornitori presenti SELECT COUNT(*) FROM F ; Numero di fornitori che forniscono SELECT COUNT(DISTINCT FNUM) almeno una parte FROM M ; Numero di colori di parti presenti SELECT COUNT(DISTINCT COLORE) FROM P ; Peso medio di una parte fornita da F1 SELECT AVG(PESO) FROM P, M WHERE P.PNUM = M.PNUM AND M.FNUM = "F1" ; Quantità totale fornita della parte P3 SELECT SUM(QTA) FROM M WHERE PNUM = "P3" ; Sistemi Informativi - Linguaggio SQL pag. 33
34 Fornitori il cui volume è minore del volume massimo presente SELECT FNUM FROM F WHERE VOLUME < ( SELECT MAX(VOLUME) FROM F ) N.B....WHERE VOLUME < MAX(VOLUME) non va bene, perchè MAX() si applica a tutte le tuple che soddisfano la clausola WHERE. Poichè questa include MAX(VOLUME)... "Parti di peso massimo per ogni colore" SELECT PNUM FROM P PX WHERE PX.PESO = ( SELECT MAX(PY.PESO) FROM P PY WHERE PX.COLORE = PY.COLORE ) Sistemi Informativi - Linguaggio SQL pag. 34
35 La clausole GROUP BY e HAVING Con la clausola GROUP BY <attribute_list> si possono raggruppare le tuple per valori omogenei degli attributi specificati. Quantità totali fornite per ogni parte SELECT PNUM, SUM(QTA) FROM M GROUP BY PNUM ; Quantità totali fornite per ogni parte il SELECT PNUM, SUM(QTA) cui codice è compreso tra P2 e P5 FROM M GROUP BY PNUM HAVING PNUM IN ("P2", P3, P4,"P5") ; La clausola HAVING è l'equivalente del SELECT PNUM, SUM(QTA) WHERE applicata a gruppi di tuple. FROM M GROUP BY PNUM "Quantità totali fornite per ogni parte fornita da più di un fornitore" HAVING COUNT(*) > 1 ; Sistemi Informativi - Linguaggio SQL pag. 35
36 "Quantità minime e massime fornite per ogni parte, escludendo le forniture di F1" SELECT PNUM, MIN(QTA), MAX(QTA) FROM M WHERE FNUM <> "F1" GROUP BY PNUM; L'operatore UNION È possibile fare l'unione dei risultati di due o più query se le relazioni prodotto sono dello stesso tipo o "compatibili" (dipende dalla versione di SQL). UNION non è strettamente necessario (esiste l'or!). "Parti il cui peso è maggiore di 15 o che sono state fornite da F2" SELECT PNUM FROM P WHERE PESO > 15 UNION SELECT PNUM FROM M WHERE FNUM = "F2" ; Sistemi Informativi - Linguaggio SQL pag. 36
37 SELECT DISTINCT P.PNUM FROM P, M WHERE P.PESO > 15 OR (P.PNUM=M.PNUM AND M.FNUM= F2 ); Attenzione alla priorità dei predicati: M.PNUM=P.PNUM AND (M.FNUM= F2 OR P.PESO>15) non prenderebbe le tuple di P che non sono state fornite da nessuno Sistemi Informativi - Linguaggio SQL pag. 37
38 Un esempio completo "Per tutte le parti la cui quantità fornita è maggiore di 300 (non considerando nel totale le forniture in quantità minore di 200), si forniscano codice e quantità massima fornita, ordinando il risultato su quest'ultima e, a parità, per valori discendenti del codice" SELECT PNUM, MAX(QTA) {5} FROM M {1} WHERE QTA >= 200 {2} GROUP BY PNUM {3} HAVING SUM(QTA) > 300 {4} ORDER BY 2, PNUM DESC ; {6} 1) Si considera la relazione M. 2) Le tuple che non soddisfano QTA >= 200 vengono eliminate. 3) Si raggruppano le tuple restanti per valori di PNUM. 4) Si sommano le quantità in ogni gruppo e si selezionano i soli gruppi per cui SUM(QTA) > ) Si calcola MAX(QTA) per i restanti gruppi e si estraggono PNUM e MAX(QTA). 6) Si ordina il risultato su MAX(QTA) e quindi su valori discendenti di PNUM. Sistemi Informativi - Linguaggio SQL pag. 38
39 Lo statement INSERT L'inserimento di tuple in una relazione può essere eseguito sia fornendo esplicitamente i valori (single-record Insert), sia utilizzando il risultato di una query (multiplerecord Insert). Insert singolo INSERT INTO P( PNUM, CITTA, PESO ) VALUES ("P7","Ancona",24 ) ; INSERT INTO VALUES P ("P8","Molla","Rosa",14,"Napoli"); L'ordine deve corrispondere a quello dichiarato nella CREATE TABLE. Sistemi Informativi - Linguaggio SQL pag. 39
40 Insert multiplo CREATE TABLE TEMP ( PNUM CHAR(6), TOTQTY INTEGER ) ; INSERT INTO TEMP ( PNUM, TOTQTY ) SELECT PNUM, SUM(QTA) FROM M GROUP BY PNUM ; Sistemi Informativi - Linguaggio SQL pag. 40
41 Lo statement UPDATE Per l'update non esiste a priori una distinzione tra UPDATE singolo e multiplo. In generale, il numero di tuple da modificare dipende dai predicati presenti nella calusola WHERE. Caso di UPDATE singolo UPDATE P SET COLORE = "Giallo", PESO = PESO + 5, CITTA = NULL WHERE PNUM = "P2" ; Caso di UPDATE multiplo UPDATE F SET VOLUME = 2*VOLUME WHERE CITTA = "Lecce" ; Sistemi Informativi - Linguaggio SQL pag. 41
42 UPDATE con subquery UPDATE M SET QTA = 0 WHERE "Lecce" = ( SELECT CITTA FROM F WHERE F.FNUM = M.FNUM ) ; Sistemi Informativi - Linguaggio SQL pag. 42
43 UPDATE di più relazioni Per aggiornare le tuple di più relazioni, è necessario fare uso di più statement UPDATE. In generale: Ogni statement UPDATE può modificare le tuple di una singola relazione (lo stesso vale per INSERT e DELETE). UPDATE F SET FNUM = "S9" WHERE FNUM = "F2" ; UPDATE M SET FNUM = "S9" WHERE FNUM = "F2" ; Il problema di garantire l'integrità delle informazioni è demandato al DBMS, rendendo i due statement parte di una singola transazione. Sistemi Informativi - Linguaggio SQL pag. 43
44 Lo statement DELETE Vale quanto detto a proposito dell'update, per ciò che riguarda il numero di tuple che vengono cancellate da una relazione. Caso di DELETE singolo DELETE FROM F WHERE FNUM = "F1" ; Caso di DELETE multiplo DELETE FROM F WHERE CITTA = "Lecce" ; DELETE di tutte le tuple DELETE FROM F ; Sistemi Informativi - Linguaggio SQL pag. 44
45 DELETE con subquery DELETE FROM M WHERE "Lecce" = ( SELECT CITTA FROM F WHERE F.FNUM = M.FNUM ) ; Sistemi Informativi - Linguaggio SQL pag. 45
46 Vincoli di integrità In fase di creazion7e di una tabella è possibile definire chiave primaria, semplice o composta CREATE TABLE F (FNUM CHAR(4) NOT NULL, FNOME CHAR(10) NOT NULL, VOLUME SMALLINT, CITTA CHAR(10) PRIMARY KEY (FNUM) ); Nota: la chiave FNUM deve essere dichiarata NOT NULL Sistemi Informativi - Linguaggio SQL pag. 46
47 chiavi importate, con indicazione della tabella di riferimento CREATE TABLE M(FNUM CHAR(4) NOT NULL, PNUM CHAR(4) NOT NULL, QTA INTEGER PRIMARY KEY (FNUM,PNUM) FOREIGN KEY (FNUM) REFERENCES F(FNUM) ON UPDATE CASCADE ON DELETE CASCADE FOREIGN KEY (PNUM) REFERENCES P(PNUM) ON UPDATE CASCADE ON DELETE CASCADE ); Nota: la clausola REFERENCES si riferisce implicitamente ad un attributo della tabella referenziata con lo stesso nome. Sistemi Informativi - Linguaggio SQL pag. 47
48 Azioni di mantenimento del vincolo di riferimento Siano X la tabella che viene referenziata, con la chiave primaria A, e Y la tabella che effettua il riferimento con la chiave esterna A (quindi la clausola REFERENCES compare nella creazione di Y). È necessario intraprendere una azione di mantenimento in caso di cancellazione di una riga di X che contiene un valore del campo A presente in almeno una riga di Y. Analogamente accade in caso di modifica di un valore del campo A in X. CASCADEl aggiornamento del valore nella tabella X si propaga alle righe riferite nella tabella Y; la cancellazione di una riga di X con campo A=a si propaga con la cancellazione di tutte le righe di Y con campo A=a RESTRICT l aggiornamento (o la cancellazione) nella tabella X di una riga con A=a viene rifiutato se esistono in Y righe con A=a; per effettuare la cancellazione occorrerà preventivamente (con altra istruzione SQL) eliminare le righe riferite in Y; per l aggiornamento la procedura è più complessa, e può essere necessario prima eliminare le righe riferite Y, poi effettuare la modifica in X e re-inserire in Y le righe con il valore nuovo SET NULL l aggiornamento (o la cancellazione) nella tabella X di una riga con A=a provoca l aggiornamento delle righe corrispondenti in Y, dove il campo A è posto a NULL Sistemi Informativi - Linguaggio SQL pag. 48
49 Azioni di mantenimento del vincolo di riferimento (ii) La scelta di quale azione di mantenimento dei vincoli adottare è a carico del progettista e dipende dal significato delle informazioni memorizzate nelle tabelle. In SQL standard, in assenza di specifica dell azione di mantenimento si assume RESTRICT. Molte implementazioni di SQL richiedono che, in presenza di controllo dell integrità referenziale, vengano costruiti degli indici. La definizione di una chiave primaria implica la creazione di un indice unico. Esempio: all esecuzione di DELETE FROM F WHERE FNUM= F1 ; se per la tabella M è stata specificata l azione CASCADE, il sistema esegue, implicitamente, anche DELETE FROM M WHERE FNUM= F1 ; Sistemi Informativi - Linguaggio SQL pag. 49
50 Creazione di viste logiche Il risultato di una select è una tabella, che esiste soltanto per il tempo necessario alla visualizzazione. Una select può quindi essere utilizzata per la definizione di una relazione. È possibile memorizzare tale definizione sotto forma di view (vista); in seguito, la vista può essere interrogata come le altre relazioni: il DBMS provvede a trasformare le select sulla vista in select equivalenti sulle tabelle reali. Vista dei totali forniti per ogni parte CREATE VIEW P_TOT (PNUM, PNOME, TOT) AS SELECT P.PNUM, PNOME, SUM(QTA) FROM P, M WHERE P.PNUM = M.PNUM GROUP BY P.PNUM, PNOME; Sistemi Informativi - Linguaggio SQL pag. 50
51 Reperire i totali forniti per le parti P1, P3 e P5 SELECT * FROM P_TOT WHERE PNUM IN ( P1, P3, P5 ); La creazione di vista è permanente: la nuova tabella (virtuale) sarà disponibile fino ad esplicita cancellazione. Esistono forti limitazioni all inserimento e all aggiornamento delle viste (meglio operare sulle tabelle base). Le viste possono essere utilizzate anche per garantire diversi livelli di privatezza dei dati. Sistemi Informativi - Linguaggio SQL pag. 51
52 MULTIUTENZA - AUTORIZZAZIONI (privileges) La presenza di una pluralità di utenti della base di dati pone il problema di chi può operare su quali dati. SQL adotta il concetto di privilegio di accesso, inteso come l autorizzazione a eseguire una data azione su un oggetto della base di dati. Ogni oggetto ha un proprietario, che può eseguire ogni operazione su di esso. Se il proprietario vuole consentire ad altri di usare le tabelle e gli oggetti che ha creato deve concedere esplicitamente il privilegio di farlo. Descrittori di privilegi: di uso di tabella di colonna Ogni descrittore contiene: oggetto al quale si applica il privilegio: tabella o colonna) identificatore dell utente che concede il privilegio identificatore dell utente privilegiato identificatore dell azione permessa INSERT, UPDATE, DELETE, SELECT, REFERENCES Sistemi Informativi - Linguaggio SQL pag. 52
53 AUTORIZZAZIONI (ii) GRANT aut.tab ON tabella TO {PUBLIC user} [WITH GRANT OPTION] GRANT ALL PRIVILEGES ON tabella TO user REVOKE [...] FROM... La clausola WITH GRANT OPTION permette che chi riceve il privilegio lo trasmetta ad altri Esempio: l utente A può consultare le tabelle P e M, mentre l utente B può consultare soltanto la tabella dei totali forniti per ogni parte GRANT SELECT ON P TO A; GRANT SELECT ON M TO A; GRANT SELECT ON P_TOT TO B; Sistemi Informativi - Linguaggio SQL pag. 53
54 SQL da linguaggio ospite È possibile eseguire enunciati SQL da un programma scritto in un linguaggio di programmazione quale COBOL, PL/1, RPG, C,... ed avere una interazione tra variabili di programma e oggetti SQL PROBLEMI: SQL opera in modo orientato agli insiemi, mentre i linguaggi di programmazione imperativi operano in modo orientato al record È necessario poter utilizzare variabili di programma per la composizione di statement SQL e poter copiare valori di campi in variabili di programma È necessario disporre di strumenti per comunicare al programma lo stato delle esecuzioni SQL Sistemi Informativi - Linguaggio SQL pag. 54
55 Per il primo punto si introduce la nozione di cursore: si associa un cursore ad una query di selezione si apre il cursore come se si trattasse di un file sequenziale si acquisisce un record alla volta dal cursore, con la possibilità di consultare i valori dei campi, aggiornare, cancellare si chiude il cursore Per il secondo punto, ogni implementazione di SQL per uno specifico linguaggio ospite predispone adeguati strumenti sintattici. Per il terzo punto, è spesso disponibile un parametro SQLCODE per restituire al programma ospite un codice che indica l'esito dell'istruzione SQL eseguita: SQLCODE=0 SQLCODE<0 ok, situazione di errore Sistemi Informativi - Linguaggio SQL pag. 55
56 Operazioni di cursore Ogni cursore viene associato ad una specifica SELECT: DECLARE <cursor_name> CURSOR FOR <select_clause> La query non viene eseguita all'atto della sua dichiarazione, ma solo quando il cursore viene aperto con OPEN <cursor_name> Quando è aperto il cursore identifica un raccolta ordinata di righe, e una specifica posizione all'interno dell'ordinamento: su una certa riga, prima di una certa riga, dopo l'ultima riga. La OPEN porta il cursore sulla prima riga; con l'istruzione FETCH <cursor_name> INTO <target_list> se ne ricopiano i valori nei parametri target (che devono corrispondere alle colonne indicate nella SELECT relativa) e si passa sulla riga seguente; se si era sull'ultima riga ci si posiziona dopo l'ultima riga. Sistemi Informativi - Linguaggio SQL pag. 56
57 La riga corrente può essere modificata con UPDATE <table_name> SET <assign_list> WHERE CURRENT OF <cursor_name> dove ogni assegnamento ha la forma: <col_name> = [scalar_expression NULL] La riga corrente può essere cancellata con DELETE FROM <table_name> WHERE CURRENT OF <cursor_name> Quando tutte le righe sono state esaminate il cursore può essere chiuso con CLOSE <cursor_name> Sistemi Informativi - Linguaggio SQL pag. 57
58 Esempi: 1. Definizione e apertura cursore: DECLARE X CURSOR FOR SELECT * FROM M WHERE PNO=NOMEVAR OPEN X 2. Update posizionata UPDATE M SET QTA=M.QTA+10 WHERE CURRENT OF X; 4. Cancellazione posizionata DELETE FROM M WHERE CURRENT OF X Sistemi Informativi - Linguaggio SQL pag. 58
59 Composizione dei cataloghi La struttura di un DB è memorizzata in un insieme di cataloghi. I cataloghi sono, a loro volta, relazioni, interrogabili in SQL. La struttura dei cataloghi è standard, ma specifiche implementazioni possono non usarne tutte le parti. SELECT TBNAME FROM SYSTABLS WHERE CREATOR='SYSTEM' SYSTABLS SYSCOLS SYSIDXS SYSVIEWS SYSSYNS SYSCOLAU SYSKEYS SYSVDEPS SYSAUTH SYSTIMES descrizioni tabelle descrizione colonne informazioni su indici descrizione viste descrizione sinonimi autorizzazioni di colonna descrizioni di chiavi descrizioni dipendenze autorizzazioni di tabella tempi di accesso Sistemi Informativi - Linguaggio SQL pag. 59
Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.
(Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System
Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL
Basi di dati Il Linguaggio SQL Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,
SQL (STRUCTURED QUERY LANGUAGE)
SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan SQL DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language DDL Obiettivo: Definire la struttura
OR true null false true true true true null true null null false true null false NOT
Il linguaggio SQL è un linguaggio standard per la definizione, manipolazione e interrogazione delle basi di dati relazionali ed ha le seguenti caratteristiche: è dichiarativo; opera su multiset di tuple,
DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione
SQL DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE SQL è più di un semplice linguaggio di interrogazione! Linguaggio di definizione dati (Data-definition language, DDL):! Crea/distrugge/modifica relazioni
IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI
IL LINGUAGGIO SQL Il linguaggio SQL ( Structured Query Languages) è un linguaggio non procedurale che è diventato uno standard tra i linguaggi per la gestione dei database relazionali. Il linguaggio procedurale
Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:
Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Si consiglia di creare il data base, inserire i dati nelle tabelle, provare
MAX, SUM, AVG, COUNT)
INTRODUZIONE A SQL Definizione di tabelle e domini Alcuni vincoli di integrità Struttura base SELECT FROM WHERE Funzioni di aggregazione (MIN, MAX, SUM, AVG, COUNT) Query da più tabelle (FROM R1, Rk) Join
Il linguaggio SQL: le basi
Il linguaggio SQL: le basi Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLa-basi.pdf Sistemi Informativi L-A SQL: caratteristiche generali
Basi di Dati: Corso di laboratorio
Basi di Dati: Corso di laboratorio Lezione 2 Raffaella Gentilini 1 / 45 Sommario 1 Il DDL di SQL: Cancellazione ed Aggiornamento di una BD Cancellazione di Schemi, Tabelle, e Domini Aggiornamento di Tabelle
Il linguaggio SQL: DDL di base
Il linguaggio SQL: DDL di base Sistemi Informativi T Versione elettronica: 04.1.SQL.DDLbase.pdf SQL: caratteristiche generali SQL (Structured Query Language) èil linguaggio standard de facto per DBMS relazionali,
SQL PER LA DEFINIZIONE DI BASI DI DATI
SQL PER LA DEFINIZIONE DI BASI DI DATI SQL non è solo un linguaggio di interrogazione (Query Language), ma Un linguaggio per la definizione di basi di dati (Data-definition language (DDL)) CREATE SCHEMA
----------------------------------------------------------------------------
APPUNTI DI SQL Gli appunti qui forniti vogliono essere un riferimento scritto di alcuni degli argomenti trattati a lezione per gli studenti a cui vengono messi a disposizione. Non viene fornita alcuna
SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))
SQL PER LA DEFINIZIONE DI BASI DI DATI 1 SQL non è solo un linguaggio di interrogazione (Query Language), ma Un linguaggio per la definizione di basi di dati (Data-definition language (DDL)) CREATE SCHEMA
SQL (STRUCTURED QUERY LANGUAGE)
SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan SQL DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language DDL Obiettivo: Definire la struttura
I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER
Caratteristiche generali del linguaggio SQL Il linguaggio SQL è il linguaggio usato per la gestione dei database relazionali, cioè dei database creati con un DBMS di tipo relazionale. Esso nacque nella
Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:
Corso di Basi di Dati Spaziali Linguaggi: SQL Angelo Montanari Donatella Gubiani Storia Storia: 1974: prima proposta SEQUEL 1981: prime implementazioni 1983: standard di fatto 1986, 1989, 1992 e 1999:
Lezione 8. Metadati, Viste e Trigger
Lezione 8 Metadati, Viste e Trigger Pag.1 Metadati e catalogo di sistema I metadati sono dati a proposito dei dati (quali tabelle esistono?, quali campi contengono?, quante tuple contengono?, ci sono vincoli
Gestione delle tabelle
Linguaggio SQL: fondamenti Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati 2 Creazione di una tabella (1/3) Si utilizza
Il linguaggio SQL: query innestate
Il linguaggio SQL: query innestate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLc-subquery.pdf Sistemi Informativi L-A DB di riferimento
Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle
Linguaggio SQL: fondamenti Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati 2 2007 Politecnico di Torino 1 Creazione
DBMS (Data Base Management System)
Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire
********************* MODIFICA STRUTTURA DI UNA TABELLA (inserimento di un nuovo campo) ALTER TABLE Personale ADD Nascita date;
CREAZIONE STRUTTURA DI UNA TABELLA by Marinsalta Fausto CREATE TABLE Personale Matricola char(5), Cognome char(30), Nome char(20), Codfis char(16) not null, Assunzione date, Filiale smallint, Funzione
Definizione di domini
Definizione di domini Come nei linguaggi ad alto livello (es. C) è possibile definire nuovi domini (tipi di dati) a partire da quelli predefiniti, anche se il costruttore è più limitato. create domain
Structured Query Language parte 1
Consorzio per la formazione e la ricerca in Ingegneria dell'informazione Structured Query Language parte 1 Come interrogare una base di dati relazionale ed avere la risposta esatta Docente: Gennaro Pepe
Basi di Dati e Sistemi Informativi. Structured Query Language
Basi di Dati e Sistemi Informativi Structured Query Language Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale SQL come DDL e DML SQL non è solo un linguaggio di interrogazione Linguaggio
Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema}
Documentazione SQL Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema} Definizione tabella Definizione dominio Specifica di valori
Corso di Informatica Generale 1 IN1. Linguaggio SQL
Università Roma Tre Facoltà di Scienze M.F.N. di Laurea in Matematica di Informatica Generale 1 Linguaggio SQL Marco (liverani@mat.uniroma3.it) Sommario Prima parte: le basi dati relazionali Basi di dati:
INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.
INFORMATICA Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. APPLICAZIONI WEB L architettura di riferimento è quella ampiamente diffusa ed
Il linguaggio SQL: viste e tabelle derivate
Il linguaggio SQL: viste e tabelle derivate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLd-viste.pdf Sistemi Informativi L-A DB di riferimento
Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL
Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone SQL: il DDL Parti del linguaggio SQL Definizione di basi di dati (Data Definition Language DDL) Linguaggio per modificare
Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf
Il linguaggio SQL: viste e tabelle derivate Versione elettronica: SQLd-viste.pdf DB di riferimento per gli esempi Imp Sedi CodImp Nome Sede Ruolo Stipendio Sede Responsabile Citta E001 Rossi S01 Analista
Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.
Programma 30 set 205 Installazione Macchina Virtuale Introduzione alla BI nelle Aziende Introduzione SQL Macchina Virtuale È un emulazione di un computer su un altro computer Stesso punto di partenza per
Corso di Laboratorio di Basi di Dati
Corso di Laboratorio di Basi di Dati F1I072 - INF/01 a.a 2009/2010 Pierluigi Pierini Technolabs S.p.a. Pierluigi.Pierini@technolabs.it Università degli Studi di L Aquila Dipartimento di Informatica Technolabs
Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf
Il linguaggio SQL: le basi Versione elettronica: SQLa-basi.pdf SQL: caratteristiche generali SQL (Structured Query Language) è il linguaggio standard de facto per DBMS relazionali, che riunisce in sé funzionalità
SQL IL LINGUAGGIO DI INTERROGAZIONE
SQL IL LINGUAGGIO DI INTERROGAZIONE SQL! Originato da SEQUEL-XRM e System-R (1974-1977) dell IBM! Significato originario Structured Query Language! Standard de facto! Attuale standard ANSI/ISO è SQL:1999
Vincoli di Integrità Approccio dichiarativo alla loro implementazione
Vincoli di Integrità Approccio dichiarativo alla loro implementazione Antonella Poggi Dipartimento di informatica e Sistemistica SAPIENZA Università di Roma Progetto di Applicazioni Software Anno accademico
Il linguaggio SQL. ing. Alfredo Cozzi 1
Il linguaggio SQL ing. Alfredo Cozzi 1 Il linguaggio SQL Il linguaggio SQL (Structured Query Language) è nato con l intento di soddisfare alle seguenti richieste nei db relazionali: - definire e creare
Lezione V. Aula Multimediale - sabato 29/03/2008
Lezione V Aula Multimediale - sabato 29/03/2008 LAB utilizzo di MS Access Definire gli archivi utilizzando le regole di derivazione e descrivere le caratteristiche di ciascun archivio ASSOCIAZIONE (1:1)
SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:
SQL SQL (pronunciato anche come l inglese sequel: acronimo di Structured Query Language (linguaggio di interrogazione strutturato Linguaggio completo che presenta anche proprietà di: DDL (Data Definition
Basi di dati Il linguaggio SQL
Basi di dati Il linguaggio SQL teoria e pratica con Microsoft Access Riepilogando Nelle basi di dati esiste 1. una parte invariante nel tempo, lo schema, costituita dalle caratteristiche dei dati (nomi
Basi di dati Il linguaggio SQL
Riepilogando Basi di dati Il linguaggio SQL Nelle basi di dati esiste 1. una parte invariante nel tempo, lo schema, costituita dalle caratteristiche dei dati (nomi degli attributi, domini, 2. una parte
Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici
Il linguaggio SQL Il linguaggio SQL il linguaggio SQL è un linguaggio per la definizione e la manipolazione dei dati, sviluppato originariamente presso il laboratorio IBM a San Jose (California) è diventato
SQL - Tipi di dato Il linguaggio SQL
SQL - Tipi di dato Il linguaggio SQL I tipi di dato in SQL:1999 si suddividono in tipi predefiniti tipi strutturati tipi user-defined ci concentreremo sui tipi predefiniti i tipi predefiniti sono suddivisi
SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)
26/03/2013 SQL SQL -DDL Esercizio 4.3 Dare le definizioni SQL delle tre tabelle FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza) rappresentando
Capitolo 4. Soluzione: Soluzione: Create domain STRING as character varying (256) default sconosciuto not null
Capitolo 4 Esercizio 4.1 Ordinare i seguenti domini in base al valore massimo rappresentable, supponendo che integer abbia una rappresentazione a 32 bit e smallint a 16 bit: numeric(12,4), decimal(10),
INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione
INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università degli Studi di Salerno : (1) Interrogazioni semplici INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione
Data base relazionale ed SQL. Modello relazionale dei data base e il linguaggio standard per la loro gestione
Data base relazionale ed SQL Modello relazionale dei data base e il linguaggio standard per la loro gestione Contenuti Modello relazionale Cenni sulla progettazione di un data base Normalizzazione delle
Vincoli di Integrità
Vincoli di Integrità Antonella Poggi Dipartimento di informatica e Sistemistica Sapienza Università di Roma Progetto di Applicazioni Software Anno accademico 2010-2011 Questi lucidi sono stati prodotti
Istruzioni DML di SQL
Istruzioni DML di SQL Pag. 99 par.4 1 Sintassi: Costrutto: INSERT INTO (Inserimento di dati in tabelle) INSERT INTO [(, ,, )] VALUES (, ,
SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"
SQL SQL: concetti base originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo gli aspetti essenziali,
SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma
SQL: Structured Query Language 1 SQL:Componenti Principali Data Manipulation Language (DML): interrogazioni, inserimenti, cancellazioni, modifiche Data Definition Language (DDL): creazione, cancellazione
DATA BASE MANAGEMENT SYSTEM
DATA BASE (1) Problematica gestione dati: oggetti delle elaborazioni, difficili da gestire, memorizzare, reperire, modificare; talvolta ridondanti/incongruenti; non sufficientemente protetti; spesso comuni
DUE GRUPPI DI COMANDI
LEZIONE16 SQL DDL PAG. 1 / 9 PROF. ANDREA ZOCCHEDDU LEZIONE16 SQL DDL LINGUAGGIO SQL DATA DESCRIPTION LANGUAGE DUE GRUPPI DI COMANDI I comandi del linguaggio SQL sono divisi in due grandi gruppi che formano
Operazioni sui database
Operazioni sui database Le operazioni nel modello relazionale sono essenzialmente di due tipi: Operazioni di modifica della base di dati (update) Interrogazioni della base di dati per il recupero delle
Structured Query Language. Informatica Generale - SQL Versione 1.0, aa 2005-2006 p.1/172
Structured Query Language Informatica Generale - SQL Versione 1.0, aa 2005-2006 p.1/172 Linguaggio SQL (1) Il linguaggio SQL, acronimo di Structured Query Language è un linguaggio per la definizione e
Basi di dati e Sistemi informativi aziendali
Sistemi informativi Linguaggio SQL: fondamenti Istruzione SELECT: fondamenti Interrogazioni nidificate Operatori insiemistici Istruzioni di aggiornamento Gestione delle tabelle 2 2007 Politecnico di Torino
PROGRAMMA DI CLASSE 5AI
Istituto di Istruzione Superiore Euganeo Istituto tecnico del settore tecnologico Istituto professionale del settore servizi socio-sanitari Istituto professionale del settore industria e artigianato PROGRAMMA
Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a
Join in SQL (primo modo) Informatica Lezione 7 Laurea magistrale in Psicologia Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 09- Per formulare interrogazioni che coinvolgono
Il Domino Character Il domino CHARACTER permette di definire attributi che contengono un singolo carattere o stringhe di caratteri di lunghezza
Linguaggio SQL (1) Il linguaggio SQL, acronimo di Structured Query Language è un linguaggio per la definizione e la manipolazione dei dati, sviluppato originariamente presso il laboratorio IBM a San Jose
SQL Sintassi Dei Comandi
SQL Sintassi Dei Comandi Di Roberto Aloi http://prof3ta.homeunix.org prof3ta@email.it Questo fascicolo è stato realizzato esclusivamente a fini divulgativi e per la libera consultazione. E' concessa la
Archivi e Basi di Dati
Archivi e Basi di Dati A B C File Programma 1 Programma 2 A B C File modificati Programma 1 DBMS DB Programma 2 Informatica Generale (CdL in E&C), A.A. 2000-2001 55 Problemi nella gestione di archivi separati
SQL. Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM 1986 1992: SQL ISO 9075:1992 SQL:1999 SQL:2003
SQL Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM 1986 1992: SQL ISO 9075:1992 SQL:1999 SQL:2003 SQL Il linguaggio SQL è stato originariamente dichiarativo, diventando nel tempo sempre
Domini Numerici Esatti (1) I domini numerici esatti permettono di definire attributi che contenegono valori esatti interi o con parte frazionaria.
Linguaggio SQL (1) Il linguaggio SQL, acronimo di Structured Query Language è un linguaggio per la definizione e la manipolazione dei dati, sviluppato originariamente presso il laboratorio IBM a San Jose
Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL
Informatica Basi di dati parte 4 SQL Lezione 13 Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 2012 2013 1 Interrogazioni in
Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a. 2010-2011
Corso di Laurea in Informatica Basi di Dati a.a. 2010-2011 Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio PROGETTAZIONE FISICA SQL-DDL OBIETTIVO: Rappresentare i dati della realtà di interesse
User Tools: DataBase Manager
Spazio di lavoro Per usare T-SQL Assistant selezionare il link Simple Query e spostare a piacere la piccola finestra dove un menu a tendina mostra i diversi comandi SQL selezionabili, il pulsante Preview
Modello Relazionale. Sistemi di Elaborazione delle Informazioni. DB ed SQL. Modello relazionale: concetti di base
Sistemi di Elaborazione delle Informazioni DB ed SQL Prof. Silvio Vassallo Modello Relazionale Il modello relazionale si basa sul concetto di RELAZIONE tra insiemi di oggetti. Dati n insiemi A 1,A 2, A
Il linguaggio SQL. Evoluzione del linguaggio. I linguaggi dentro SQL. I dialeu SQL. U@lizzo di SQL SQL. A. Ferrari 1
Il linguaggio SQL Structured Query Language SQL è un linguaggio di interrogazione per database proge
2104 volume III Programmazione
2103 SQLite Capitolo 77 77.1 Utilizzo generale................................. 2104 77.1.1 Utilizzo di sqlite3».......................... 2104 77.1.2 Copie di sicurezza............................ 2106
Introduzione al linguaggio SQL
Introduzione al linguaggio SQL Structured Query Language (Linguaggio Strutturato di Interrogazione di Database) prof. Cleto Azzani IPSIA MORETTO BRESCIA (2004) Che cos è un Data Base (Base di dati) Insieme
Linguaggio SQL. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Linguaggio SQL Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni SQL: caratteristiche generali SQL (Structured Query Language) è il linguaggio standard de facto per DBMS relazionali, che
Linguaggio SQL. Structured Query Language
Linguaggio SQL Structured Query Language Creato negli anni 70 presso IBM Inizialmente solo linguaggio di interrogazione Ora linguaggio di riferimento per DB relazionali Standardizzato grazie al lavoro
Il sistema IBM DB2. Sistemi Informativi T. Versione elettronica: L01.1.IntroduzioneDB2.pdf
Il sistema IBM DB2 Sistemi Informativi T Versione elettronica: L01.1.IntroduzioneDB2.pdf IBM DB2 Il DBMS relazionale IBM DB2 è il prodotto di punta dell IBM per la gestione di basi di dati relazionali
SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12
SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I Anno accademico 2011/12 DEFINIZIONE Il concetto di vista 2 È una relazione derivata. Si specifica l espressione che genera il suo contenuto.
Linguaggio SQL: fondamenti. Basi di dati. Elena Baralis Pag. 1. Linguaggio SQL: fondamenti. Sistemi informativi. Introduzione
Sistemi informativi Istruzione : fondamenti Interrogazioni nidificate Operatori insiemistici Istruzioni di aggiornamento Gestione delle tabelle 2 al linguaggio SQL Istruzioni del linguaggio Notazione 4
Laboratorio di Basi di Dati
Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 1 SQL SQL (Structured Query Language) è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali. Sono stati proposti
DESIGNAZIONE: Rappresenta una relazione tra due entità di tipo 1 ad M. Esempio tipico è : REPARTO ------- IMPIEGATO
DESIGNAZIONE: Rappresenta una relazione tra due entità di tipo 1 ad M. Esempio tipico è : REPARTO ------- IMPIEGATO (designata) (designante) Viene rappresentata inserendo, nella tabella dell entità designante,
Informatica B. Contenuti. Introduzione alle Basi di Dati e ai DBMS. Introduzione a dati e basi dati DBMS Modello dei dati
Informatica B Introduzione alle Basi di Dati e ai DBMS Contenuti Introduzione a dati e basi dati DBMS Modello dei dati Informazioni e dati Dato: elemento semanticamente significativo (data, codice, ecc.),
TEORIA sulle BASI DI DATI
TEORIA sulle BASI DI DATI A cura del Prof. Enea Ferri Cos è un DATA BASE E un insieme di archivi legati tra loro da relazioni. Vengono memorizzati su memorie di massa come un unico insieme, e possono essere
SQL: Concetti Base -Prima Parte-
SQL: Concetti Base -Prima Parte- Atzeni, Ceri, Paraboschi, Torlone Basi Di Dati: Modelli e Linguaggi di Interrogazione, McGraw-Hill Italia Capitolo 4 SQL Structured Query Language Contiene: DDL (Data Definition
Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a. 2011-2012
Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a. 2011-2012 2012 Docente: Gigliola Vaglini Docente laboratorio: Alessandro Lori 1 Lezione 3 Structured Query Language
Triggers. Basi dati attive. Trigger. Indipendenza della conoscenza
Basi dati attive Triggers Antonella Poggi Domenico Lembo Dipartimento di informatica e Sistemistica SAPIENZA Università di Roma Progetto di Applicazioni Software Anno accademico 2009-2010 Una base di dati
SQL. Storia e standard
SQL Lorenzo Sarti 2009 Basi di Dati 1 Storia e standard Lorenzo Sarti 2009 Basi di Dati 2 SQL-2 È ricco e complesso e nessun sistema commerciale lo implementa in maniera completa Sono definiti 3 livelli
4 SQL : Interrogazioni nidificate
Corso di Laurea in Ingegneria Gestionale SAPIENZA Università di Roma Esercitazioni del corso di Basi di Dati Prof.ssa Catarci e Prof.ssa Scannapieco Anno Accademico 2010/2011 Andrea Marrella Ultimo aggiornamento
Informatica Generale Andrea Corradini. 19 - Sistemi di Gestione delle Basi di Dati
Informatica Generale Andrea Corradini 19 - Sistemi di Gestione delle Basi di Dati Sommario Concetti base di Basi di Dati Il modello relazionale Relazioni e operazioni su relazioni Il linguaggio SQL Integrità
SQL Manuale introduttivo
SQL Manuale introduttivo SOMMARIO INTRODUZIONE... 3 TIPI DI DATI... 3 STRINGHE DI CARATTERI... 3 NUMERI... 3 DATA/ORA... 4 COSTANTI STRINGA... 4 COSTANTI NUMERICHE... 4 COSTANTI DATA/ORA... 5 NOTE SULLA
Basi di Dati. Programmazione e gestione di sistemi telematici
Basi di Dati. Programmazione e gestione di sistemi telematici Coordinatore: Prof. Paolo Nesi Docenti: Prof. Paolo Nesi Dr.sa Michela Paolucci Dr. Emanuele Bellini SQL SQL = Structured Query Language Linguaggio
Interrogazioni complesse. SQL avanzato 1
Interrogazioni complesse SQL avanzato Classificazione delle interrogazioni complesse Query con ordinamento Query con aggregazione Query con raggruppamento Query binarie Query annidate SQL avanzato 2 Esempio
Il linguaggio SQL e Access
Il linguaggio SQL e Access 1 Linguaggio SQL Caratteristiche generali L SQL (structured query language) è un linguaggio utilizzato per definire, gestire, controllare e reperire dati di un DBMS; prevede
Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6
Data Base 1 Sommario I concetti fondamentali. Database Relazionale.. Query e SQL MySql, Creazione di un db in MySQL con PHPmyAdmin Creazione database e delle Tabelle Query Inserimento Ricerca Modifica
SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE
SQL e ACCESS Prof. Salvatore Multazzu (salvatoremultazzu@tiscali.it) Applicazioni Informatiche nella comunicazione Modello relazionale Entità Record o Ennuple Attributi o Campi Tipi Chiavi Primarie (PK)
Corso sul linguaggio SQL
Corso sul linguaggio SQL Modulo L2B (SQL) 2.1 Comandi sui database 1 Prerequisiti Introduzione ai DB Linguaggi per database Tipi fondamentali di dati 2 1 Introduzione In questa Unità introduciamo il linguaggio
Volumi di riferimento
Simulazione seconda prova Esame di Stato Gestione di un centro agroalimentare all ingrosso Parte prima) Un nuovo centro agroalimentare all'ingrosso intende realizzare una base di dati per l'attività di
Basi di Dati Relazionali
Corso di Laurea in Informatica Basi di Dati Relazionali a.a. 2009-2010 Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio Coadiutore: Dott.ssa D. Nicotera PROGETTAZIONE FISICA SQL-DDL OBIETTIVO: Rappresentare
S.Q.L. Introduzione a Structured Query Language. I.T.C. "V.Emanuele II" - Perugia. Prof.Claudio Maccherani 1995-2005 INDICE
S.Q.L. Introduzione a Structured Query Language I.T.C. "V.Emanuele II" - Perugia Prof.Claudio Maccherani 1995-2005 INDICE S.Q.L. - STRUCTURED QUERY LANGUAGE (SEQUEL)...1 ISTRUZIONI DI TIPO DDL (DATA DEFINITION
Al giorno d oggi, i sistemi per la gestione di database
Introduzione Al giorno d oggi, i sistemi per la gestione di database implementano un linguaggio standard chiamato SQL (Structured Query Language). Fra le altre cose, il linguaggio SQL consente di prelevare,
Introduzione. Elenco telefonico Conti correnti Catalogo libri di una biblioteca Orario dei treni aerei
Introduzione Elenco telefonico Conti correnti Catalogo libri di una biblioteca Orario dei treni aerei. ESEMPI DI INSIEMI DI DATI DA ORGANIZZARE ED USARE IN MANIERA EFFICIENTE Introduzione Più utenti con
Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati
Azioni Select e join non consentono di modificare il contenuto del DB Azioni desiderate Inserzione di nuovi dati Aggiornamento di dati Cancellazione di dati Aggiunta di un record insert into utenti(nome,tel,codice_u)
Lezione del modulo 7 SQL e database del giorno 04/05/2006 tot. ore 3. Lo Standard SQL
Lezione del modulo 7 SQL e database del giorno 04/05/2006 tot. ore 3 Lo Standard SQL Il linguaggio SQL è un linguaggio non procedurale (o di tipo dichiarativo), divenuto, ormai da tempo, il linguaggio