La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

TIPI STANDARD DI SQL BOOLEANValori: vero, falso CHAR(n)Stringa di lunghezza n (fissa) DATEData nella forma MM/GG/AA TIMEOra nella forma HH:MM INTEGERNumero.

Presentazioni simili


Presentazione sul tema: "TIPI STANDARD DI SQL BOOLEANValori: vero, falso CHAR(n)Stringa di lunghezza n (fissa) DATEData nella forma MM/GG/AA TIMEOra nella forma HH:MM INTEGERNumero."— Transcript della presentazione:

1 TIPI STANDARD DI SQL BOOLEANValori: vero, falso CHAR(n)Stringa di lunghezza n (fissa) DATEData nella forma MM/GG/AA TIMEOra nella forma HH:MM INTEGERNumero intero con precisione 10 SMALLINTNumero intero con precisione 5 FLOATNumero reale con mantissa di precisione 15 Precisione indica il numero max di cifre che il n° può contenere, escluso segno e. (dec) Mantissa indica il numero di cifre che seguono il punto decimale. Le costanti stringa sono delimitate tramite lapice. Il linguaggio SQL può controllare la presenza e lassenza di Null in una colonna. Tutti i risultati di confronto numerici o stringa con attributi di valore Null sono sconosciuti.

2 DBMS (DataBase Management System) Un DBMS deve essere in grado di: Permettere la creazione di una nuova base di dati, definendo la composizione degli archivi, la loro articolazione, le correlazioni logiche tra essi, gli accessi ed i vincoli al progetto, mediante il DDL (Data Definition Language); Facilitare gli utenti nellinserimento dati, cancellazione e variazione dei dati del DB, sfruttando il DML (Data Manipulation Language); Rendere possibile lestrazione di informazioni dal DB mediante il linguaggio di interrogazione QL (Query Language); Fornire o revocare agli utenti i permessi necessari per poter utilizzare i comandi DML e DDL, usando il linguaggio DCL (Data Control Language). 2 DDL:CREATE TABLE, ALTER T., DROP T. DML:INSERT INTO TABLE, DELETE, UPDATE … SET DQL:SELECT, WHERE, SELECT + WHERE

3 CREATE TABLE CREATE TABLE Impiegati (ID smallint primary key, Cognome char(15) not null, Nome char(15) not null, Residenza char(15) default *** Manca Residenza, Stipendio float, Dipartimento char(15) references Dipartimenti(Codice)); UNIQUE (Cognome, Nome, Dipartimento); Altre costruzioni per le chiavi: 1)Se la chiave primaria è composta da più attributi si mettono alla fine primary key (Matricola, CodCorso); 2)La chiave esterna è dichiarata come modifica: ALTER TABLE Impiegati add constraint ffk foreign key (Dipartimento) references Dipartimenti(Codice);

4 ALTER TABLE Serve per aggiungere una nuova colonna ed è seguito da ADD: ALTER TABLE Impiegati ADD AnnoNascita; Serve per cancellare una colonna ed è seguito da DROP: ALTER TABLE Impiegati DROP Residenza; CREATE INDEX Viene utilizzato per creare un nuovo indice su una tabella esistente, che esegue una selezione su uno o più campi specifici. CREATE UNIQUE INDEX IndiceImpiegati ON (Cognome, Nome);

5 INSERT, DELETE e UPDATE Per inserire i valori di una nuova riga in Impiegati: INSERT INTO Impiegati (ID,Nome,Cognome,Residenza,Stipendio, Dipartimento) VALUES (20, Mario, Rossi, Caserta, 31500, Mag); Per assegnare il dipendente con ID=20 al dipartimento Produzione: UPDATE Impiegati SET Dipartimento= Prod WHERE ID= 20; Per aumentare del 5% lo stipendio di tutti i dipendenti del Dipart. Produzione: UPDATE Impiegati SET Stipendio= Stipendio*1,05 WHERE Dipartimento= Prod; Per cancellare da Impiegati i dati del dipendente con ID=20: DELETE FROM Impiegati WHERE ID= 20;

6 Query di inserimento: INSERT INTO INSERT INTO dbase.tabella_dipendenti (IDUser,FullName,Interno) values (3,Antonio Rossi, 1234); UPDATE … SET … WHERE Questa istruzione serve per modificare i dati in una tabella. UPDATE Persone SET Nome=Paperone WHERE Cognome= De Paperoni; IDUserFullNameIndirizzoInterno 1Mario BianchiVia Verdi, Carlo VerdiVia Roma, IDUserFullNameIndirizzoInterno 1Mario BianchiVia Verdi, Carlo VerdiVia Roma, Antonio Rossi1234

7 Query di cancellazione: DELETE DELETE FROM Dbase.Persone WHERE Cognome= De Paperoni; ALIAS Sono usati per dare nomi ai campi (1) e alle tabelle (2). (1) SELECT campo AS alias_campo FROM tabella; (2) SELECT campo1, campo2 FROM Nometabella AS AliasTabella; Query di impiegati (nome, cognome impiegati, descrizione dipartimento) che hanno sede lavorativa a Roma SELECT I.Cognome, I.Nome, D.Descrizione FROM Impiegati AS I, Dipartimenti AS D WHERE I.Dipartimento = D.Codice AND D.Sede = Roma;

8 ISTRUZIONI SQL SELECT è usata per selezionare dei dati da una tabella. Sintassi SELECT campo1, campo2, … FROM NomeDB.NomeTabella; Esempio SELECT id, nome, telefono FROM Dbtelefoni.telefoni; Per vedere tutti i campi del database SELECT * FROM Dbtelefoni.telefoni; idnometelefono 1Pippo0444/ Pluto0444/ Paperino0444/ Topolino0444/ idnomeindirizzotelefono 1PippoVia Rossi, 40444/ PlutoVia Piave, / PaperinoVia Roma, 10444/ TopolinoVia Verdi, 60444/519922

9 ISTRUZIONI SQL SELECT DISTINCT è utilizzata per restituire soltanto dei valori distinti. SELECT Società FROM Ordini; Mentre SELECT DISTINCT Società FROM Ordini; Società Microsoft Oracle Microsoft HP Società Microsoft Oracle HP

10 ORDER BY È possibile ordinare l elenco ottenuto con il comando ORDER BY NomeCampo. SELECT id, nome, telefono FROM Dbtelefoni.telefoni ORDER BY nome; SELECT id, nome, telefono FROM Dbtelefoni.telefoni ORDER BY nome DESC; idnometelefono 3Paperino0444/ Pippo0444/ Pluto0444/ Topolino0444/ idnometelefono 4Topolino0444/ Pluto0444/ Pippo0444/ Paperino0444/746111

11 WHERE SELECT id, nome, telefono FROM Dbtelefoni.telefoni WHERE nome= Topolino ORDER BY nome DESC; SELECT id, nome, telefono FROM Dbtelefoni.telefoni WHERE nome= Topolino AND id >= 4; idnometelefono 4Topolino0444/ idnometelefono 4Topolino0444/ Topolino0444/214569

12 WHERE SELECT id, nome, telefono FROM Dbtelefoni.telefoni WHERE nome= Topolino OR id >= 4; Da notare che se il valore che viene cercato è una stringa va inserito tra apici. SELECT id, nome, telefono FROM Dbtelefoni.telefoni WHERE nome= Topolino OR id >= 4; restituirebbe un errore perché Topolino è una stringa. BETWEEN … AND Seleziona un intervallo di dati tra due valori, che possono essere numeri, testo, date. SELECT * FROM telefoni WHERE id BETWEEN 4 AND 22; oppure SELECT * FROM telefoni WHERE id NOT BETWEEN 4 AND 22; idnometelefono 4Topolino0444/ Paperoga0444/ Topolino0444/ Clarabella0444/927856

13 LIKE SELECT id, nome FROM Dbtelefoni.telefoni WHERE nome LIKE %ert%; SELECT id, nome FROM Dbtelefoni.telefoni WHERE nome LIKE Pa%; Cerca quello che inizia con Pa e finisce con qualche altra. SELECT id, nome FROM Dbtelefoni.telefoni WHERE nome LIKE _upa Cerca le stringhe di 4 caratteri che finiscono con upa. Invece: SELECT id, nome FROM Dbtelefoni.telefoni WHERE nome LIKE Anna_M% ESCAPE In questo caso l underscore _ non è sostituto di un carattere ma è proprio _, quindi metto ESCAPE. idnome 405Roberto 421Alberto 437Roberto 783Umberto

14 ALTRE CONDIZIONI DEL WHERE INControlla se un valore appartiene ad uno dei valori della lista precisata dopo In allinterno della condizione. INTOÈ usato per indicare i valori dentro una selezione. IS NULLControlla la presenza del valore null in una colonna. IS NOT NULLPer valutare la condizione opposta alla precedente. GROUP BYPermette di raggruppare un insieme di righe aventi lo stesso valore nelle colonne indicate dalla clausola.* HAVING(con il Group by): dopo lhaving, è controllato il valore restituito dalle funzioni di aggregazione. TOPRestituisce le prime n righe di una tabella. AND È applicato prima di OR. OR NOTÈ applicato prima di AND. *: tutti gli attributi che compaiono nella lista accanto al Select devono essere inclusi nel Group by oppure devono essere argomenti di una funzione di aggregazione.

15 FUNZIONI DI AGGREGAZIONE SELECT funzione(campo) FROM NomeTabella; FunzioneDescrizione AVG (coloumn)Restituisce il valore medio di una colonna COUNT (coloumn)Restituisce il numero di righe (escludendo quelle con valore null) di una colonna COUNT (*)Restituisce il numero di righe selezionate FIRST (coloumn)Restituisce il valore del primo record di un campo specificato LAST (coloumn)Restituisce il valore dellultimo record di un campo specificato MAX [or MIN](coloumn)Restituisce il valore massimo [o minimo] in una colonna SUM (coloumn)Restituisce la somma dei valori di una colonna

16 QUERY ANNIDATE Si chiamano così perché il comando Select offre la possibilità di inserire un comando Select allinterno della struttura di un altro comando Select. Query dei clienti (nome, cognome, reddito) che hanno il reddito massimo SELECT nome, cognome, reddito FROM Clienti WHERE (reddito= SELECT MAX (reddito) FROM Clienti)); Query dei clienti (nome, cognome, reddito) che abitano in città che hanno almeno 2 clienti SELECT nome, cognome, reddito FROM Clienti WHERE città IN (SELECT città FROM Clienti GROUP BY città HAVING COUNT (*) >= 2);

17 QUERY ANNIDATE ANY è utilizzato in una clausola Where in espressioni : x > ANY Elenco. Query dei dipendenti (nome, cognome) del Dipartimento Amministrazione che hanno lo stipendio superiore a quello di almeno un impiegato del MKT SELECT nome, cognome FROM Impiegati WHERE Dipartimento= Amm AND Stipendio > ANY (SELECT stipendio FROM Impiegati WHERE Dipartimento= Mkt ); ALL è usato in una clausola Where in espressioni : x <= ALL Elenco. Query dei dipendenti (nome, cognome) dell Amministrazione che hanno lo stipendio superiore a quello di tutti i dipendenti del MKT SELECT nome, cognome FROM Impiegati WHERE Dipartimento= Amm AND Stipendio > ALL (SELECT stipendio FROM Impiegati WHERE Dipartimento= Mkt );

18 QUERY ANNIDATE Valgono le seguenti equivalenze: Attributo IN (Select…) equivale a:Attributo = ANY (Select…) Attributo NOT IN (Select…)equivale a: Attributo <> ALL (Select…) EXISTS è utilizzato in una clausola Where in espressioni : EXISTS Elenco. Query dei dipendenti (nome, cognome, scostamento dalla media degli stipendi) del MKT, solo se esistono dipendenti che lavorano in quel dipart. SELECT nome, cognome, stipendio – (SELECT AVG(stipendio) FROM Impiegati WHERE Dipartimento= Mkt) FROM Impiegati WHERE EXISTS (SELECT * FROM Impiegati WHERE Dipartimento= Mkt );


Scaricare ppt "TIPI STANDARD DI SQL BOOLEANValori: vero, falso CHAR(n)Stringa di lunghezza n (fissa) DATEData nella forma MM/GG/AA TIMEOra nella forma HH:MM INTEGERNumero."

Presentazioni simili


Annunci Google