Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Documenti analoghi
Caratteristiche dei linguaggi per Database

Linguaggio SQL seconda parte

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Manuale SQL. Manuale SQL - 1 -

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

PROGETTAZIONE DI DATABASE Linguaggio SQL

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

SQL (STRUCTURED QUERY LANGUAGE)

Basi di Dati: Corso di laboratorio

********************* MODIFICA STRUTTURA DI UNA TABELLA (inserimento di un nuovo campo) ALTER TABLE Personale ADD Nascita date;

SQL. SQL: una visione panoramica. SQL: "storia" Definizione dei dati

<Nome Tabella>.<attributo>

SQL (STRUCTURED QUERY LANGUAGE)

Uno dei principali motivi del successo delle basi di dati: è diventato uno standard

SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

SELECT s.nome, e.data FROM Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

SQL e algebra relazionale

Data base relazionale ed SQL. Modello relazionale dei data base e il linguaggio standard per la loro gestione

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

SQL - Structured Query Language

Istruzioni DML di SQL

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf

ESERCITAZIONI ACCESS

Interrogazioni nidificate

Basi di dati (4) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. Argomento: select (1.

Basi di Dati. Esercitazione 1: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

CORSO ACCESS 2000 PARTE VI

Basi di Dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Interrogazioni semplici

Esempi SQL con Access. Orazio Battaglia

Basi di Dati: Corso di laboratorio

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Tabelle esempio: Impiegato/Dipartimento

Il Linguaggio SQL Teoria ed esempi

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Laboratorio di Basi di Dati

Elena Baralis 2007 Politecnico di Torino 1

MODULO 2. Query normali e parametriche Query di:

Linguaggio SQL. studenti matricola nome cognome citta anno 11 marco bini bologna laura sicuro rimini 1984 esami codice

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Il linguaggio SQL e Access

Interrogazioni in SQL

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

Esempio di database relazionale con l utilizzo del prodotto MySQL

Elena Baralis 2007 Politecnico di Torino 1


Elena Baralis 2007 Politecnico di Torino 1

DATA BASE MANAGEMENT SYSTEM

Alessandra Raffaetà. Esercizio: Cinema

S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali. Alessandra Raffaetà

Le query di comando e di servizio in Access

Idoneita Informatica. Sistemi per la gestione di basi di Dati

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Linguaggio SQL. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Tipi di sottoquery SQL

Basi di Dati. S Q L Lezione 3

Structured Query Language. Informatica Generale - SQL Versione 1.0, aa p.1/172

Operatori aggregati: COUNT

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base

Introduzione al linguaggio SQL

Il linguaggio SQL. ing. Alfredo Cozzi 1

Basi di Dati: Corso di laboratorio

Interrogazioni nidificate

SQL. Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM : SQL ISO 9075:1992 SQL:1999 SQL:2003

Domini Numerici Esatti (1) I domini numerici esatti permettono di definire attributi che contenegono valori esatti interi o con parte frazionaria.

S.Q.L. Introduzione a Structured Query Language. I.T.C. "V.Emanuele II" - Perugia. Prof.Claudio Maccherani INDICE

ESERCIZI SQL. Esercizio 1

SQL aspetti essenziali

IL LINGUAGGIO SQL. Caratteristiche generali. Il comando Select. Le basi di dati ed il linguaggio SQL A.Lorenzi D.Rossi - ATLAS. Pag.

Trasparenze rielaborate da Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999 Capitolo 4: SQL-2, seconda parte.

Il Domino Character Il domino CHARACTER permette di definire attributi che contengono un singolo carattere o stringhe di caratteri di lunghezza

SQL - Sottointerrogazioni

MAX, SUM, AVG, COUNT)

LEFT JOIN - RIGHT JOIN - SELF JOIN - CROSS JOIN

I.I.S. G. COSSALI - ORZINUOVI DATABASE. Marzo 2017 Prof. Dario Tomasoni 1

SQL: DDL, VI, Aggiornamenti e Viste

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

formulare in SQL una interrogazione per ciascuno dei seguenti punti:

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

SQL. Argomenti della lezione. Join esplicito. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate

DATABASE PER IL WEB. Programmazione Web 1

Modello Relazionale. Sistemi di Elaborazione delle Informazioni. DB ed SQL. Modello relazionale: concetti di base

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

OR true null false true true true true null true null null false true null false NOT

Introduzione Sql con Microsoft Access

Filtri. Microsoft Access. Filtri. Filtri

CREATE TABLE Nome ( Attributo Tipo [Vincolo {, Vincolo }] {, Attributo Tipo [Vincolo {, Vincolo }]} [, VincoloDiTabella {, VincoloDiTabella}] )

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella

Soluzione esercitazione 01

Basi di Dati. S Q L Lezione 2

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Eprogram ITIS V anno Unità 4 - Il linguaggio SQL

3. Selezionare i nomi dei clienti che iniziano con le lettere P, Q, R, S

SQL - Funzioni di gruppo

Transcript:

Basi di Dati Matteo Longhi Structured Query Language Introduzione Standard creato nel 1976 da IBM Aggiornato (versione 2 nel 1992 (ANSI X3.135 e ISO 9075 Consente di: DDL: definire la struttura del DB DML: modificare i dati contenuti nel DB Appunti 1 2 DDL: Data Definition Language Tipi di dato Esempio: CREATE TABLE Personale ( matricola char(5, cognome char(30, nome char(20, codfiscale char(16 not null, dataassunzione date, filiale smallint, Funzione char(15, livello smallint, stipbase float, via char(25, cap char(5, citta char(20, prov char(2 ; 3 CHARACTER(n CHAR(n Stringa di lunghezza n DATE Data nella forma mm/gg/aa TIME Ora nel formato hh:mm INTEGER Numero intero da -2147483648 a -21474836487 SMALLINT Numero da -32768 a 32767 REAL FLOAT 4 Modifica dei Dati Per inserire un nuovo record: INSERT INTO Personale (matricola,cognome,nome,,prov VALUES ( AB541, Rossi, Mario,, CO ; Per aggiornare record esistenti: UPDATE Personale SET livello = 6 WHERE livello=5; Per cancellare record esistenti: DELETE WHERE stipbase<750; Query Le principali operazioni di query (interrogazione sono: Proiezione: visualizzare solo le colonne (campi specificati Selezione: visualizzare solo le righe (record che soddisfano una certa condizione Congiunzione (Join: unire più tabelle 5 6 1

Simple Query Sintassi generale: SELECT [DISTINCT] { <campo-expr> [AS <Alias>] } { <tabella> [AS <Alias>] } [WHERE <Predicato>] Legenda: [ ] Opzionale { } Almeno uno, separati dalla virgola Simple Query: esempi Tabelle: PERSONALE (matricola, cognome, nome, codfiscale, dataassunzione, filiale, funzione, livello, stipbase, via, cap, citta, prov DIPENDENZA (codfiliale, descrizione, indirizzo Query - cognome, nome e codice fiscale di tutto il personale:, codfiscale Query - cognome, nome e codice fiscale degli impiegati:, codfiscale 7 8 Simple Query: DISTINCT DISTINCT: elimina le righe duplicate nella tabella risultante. Simple Query: * e AS Il simbolo * sostituisce l elenco di tutti i campi. Query elenco delle professioni presenti in azienda: Query tutti i dati dei dipendenti che abitano in provincia di milano: SELECT DISTINCT funzione funzione Dirigente SELECT * WHERE prov= MI Senza l uso il distinct: funzione La clausola AS permette di modificare l intestazione di una colonna. Query l elenco delle province da cui provengono i dipendenti: SELECT funzione Dirigente SELECT DISTINCT prov AS Provincia 9 10 Query : congiunzione (JOIN Query cognome, nome e indirizzo della filiale in cui lavora ogni dipendente SELECT Personale.cognome, Personale.nome, Dipendenza.indirizzo Query : JOIN (2 Query cognome, nome e indirizzo della filiale in cui lavora ogni dipendente Personale, Dipendenza SELECT P.cognome, P.nome, D.indirizzo WHERE Personale.filiale=Dipendenza.codFiliale Personale AS P, Dipendenza AS D E necessario specificare la corrispondenza tra la chiave primaria di una tabella e la chiave esterna dell altra (condizione di join. WHERE P.filiale=D.codFiliale 11 12 2

Query : JOIN (3 Nel caso sia necessario effettuare la congiunzione di tre tabelle: SELECT * Tab1, Tab2, Tab3 WHERE Tab1.chiave=Tab2.chiaveExt AND Tab2.chiave=Tab3.chiaveExt Query : Funzioni di Aggregazione Funzione Valore restituito COUNT numero di righe SUM somma AVG media MIN valore minimo MAX valore massimo Il risultato è UN SOLO valore! 13 14 Query : Funzioni di Aggregazione (2 Query Numero di impiegati SELECT COUNT(* Query Numero di province di provenienza degli impiegati SELECT COUNT( DISTINCT(prov Query : Funzioni di Aggregazione (3 Query La somma degli stipendi che appartengono al livello 3 SELECT SUM(StipBase WHERE livello=3 Query Lo stipendio medio degli impiegati SELECT AVG(StipBase Query Lo stipendio minimo e massimo SELECT MIN(StipBase, MAX(StipBase 15 16 Query : Condizioni di ricerca (1 BETWEEN: controlla se un valore è compreso in un intervallo, estremi compresi Query Cognome e nome dei dipendenti assunti nel 2002 WHERE dataass BETWEEN 01/01/2001 AND 31/12/2001 (NOT IN: controlla se un valore appartiene ad un insieme Query Cognome e nome dei dipendenti che risiedono nelle province di Milano, Como, Lecco e Bergamo. WHERE prov IN ( MI, CO, LC, BG Query : Condizioni di ricerca (2 (NOT LIKE: confronta un valore usando caratteri jolly Query I cognomi dei dipendenti che iniziano per Ros. SELECT Cognome WHERE Cognome LIKE Ros% IS (NOT NULL: controlla se un campo non è stato compilato Query Cognome e nome dei dipendenti di cui non si conosce la provincia di residenza. WHERE prov IS NULL 17 18 3

Query : Ordinamenti ORDER BY ASC DESC: ordina i risultati in senso crescente (ASC, di default o decrescente (DESC Query I cognomi dei dipendenti in ordine crescente SELECT Cognome ORDER BY Cognome Query I cognomi degli impiegati in ordine di decrescente di stipendio e, a parità di stipendio, in ordine di cognome crescente SELECT Cognome, stipbase ORDER BY stipbase DESC, Cognome Query : Raggruppamenti GROUP BY: raggruppa le righe aventi lo stesso valore nelle colonne indicate. le funzioni di aggregazione restituiscono un valore per ogni raggruppamento Query Il numero di impiegati in ciascuna filiale. SELECT filiale, COUNT(* AS NumeroDipendenti GROUP BY filiale 19 20 Query : Raggruppamenti (2 HAVING: aggiunge una condizione al GROUP BY. Si possono usare le funzioni di aggregazione (anche in questo caso riferite ad ogni singolo raggruppamento. Query Lo stipendio medio degli impiegati nelle filiali con più di 10 dipendenti. SELECT filiale, AVG(stipBase AS StipendioMedio GROUP BY filiale HAVING COUNT(*>10 Query nidificate Nella condizione (WHERE è possibile confrontare un valore con il risultato di un altra query. Query Cognome e nome dei dipendenti con stipendio inferiore alla media WHERE stipbase < ( SELECT AVG(stipBase NB: il confronto < è possibile perché la seconda query, grazie alla funzione di aggregazione, restituisce UN SOLO risultato. 21 22 Query nidificate (2 Query Cognome, nome e indirizzo della filiale in cui lavorano i dipendenti per i quali lo stipendio è superiore alla media degli stipendi degli impiegati. SELECT P.cognome, P.nome, D.indirizzo AS P, Dipendenza AS D WHERE P.filiale=D.codFiliale AND P.stipBase > ( SELECT AVG(stipBase Query nidificate: ANY ANY: la condizione è vera se il confronto è vero per almeno uno dei valori restituiti dalla seconda query. Query Dipendenti che non sono impiegati e che hanno lo stipendio superiore a quello di un qualsiasi impiegato., funzione WHERE funzione <> impiegato AND stipbase > ANY ( SELECT stipbase 23 24 4

Query nidificate: ALL ALL: la condizione è vera se il confronto è vero per ciascuno dei valori restituiti dalla seconda query. Query Dipendenti che non sono impiegati e che hanno lo stipendio superiore a quello di tutti gli impiegati., funzione WHERE funzione <> impiegato AND stipbase > ALL ( SELECT stipbase Query nidificate: IN (NOT IN: la condizione è vera se il valore è compreso tra i valori restituiti dalla seconda query Query Cognome e nome dei dipendenti che lavorano in filiali con più di 10 dipendenti. WHERE filiale IN ( SELECT filiale GROUP BY Filiale HAVING count(*>10 25 26 Query nidificate: EXIST (NOT EXIST: la condizione è vera se la seconda query restituisce almeno un risultato Query Elenco dei dipendenti solo se non esistono dipendenti di sesto livello. WHERE NOT EXIST ( SELECT * WHERE livello=6 27 5