Manuale Comandi SQL SQL. Sito per esercitarsi (on line) SQL

Documenti analoghi
Appunti su SQL. Query Language. Comando Select

Appunti su SQL. Query Language. Comando Select

Appunti su SQL. Query Language. Comando Select

SQL: le funzioni di aggregazione

Select From Where...

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

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

Caratteristiche dei linguaggi per Database

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

SQL DDL. Create database. Alter database. Drop database

Manuale SQL. Manuale SQL - 1 -

QL (Query Language) Alice Pavarani

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

DDL (Data Definition Language) schemi DML (Data Manipulation Language) DQL (Data Query Language) DCL (Data Control Language)

Structured Query Language

Linguaggio SQL seconda parte

Sistemi di Elaborazione delle Informazioni

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

Lezioni di Laboratorio sui Data Base

Sistemi di Elaborazione delle Informazioni

Corso sul linguaggio SQL

Principi di Progettazione del Software a.a Il linguaggio SQL. Il Linguaggio SQL

Informatica Grafica. Basi di dati parte 2

Corso di Basi di Dati

Linguaggio SQL. Prof. Giuseppe Tandoi

Archivi e basi di dati - ing. M. Cossentino. Settore. Traccia 1. Traccia 200. Settore non polarizzato

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

Fondamenti di Informatica A. A / 1 9

(Lezione SQL 1) Barbara Di Camillo Dipartimento di Ingegneria dell Informazione. Università degli Studi di Padova

SQL (STRUCTURED QUERY LANGUAGE)

SQL - Structured Query Language

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

IL LINGUAGGIO SQL LE BASI

Istruzioni DML di SQL

Corso sul linguaggio SQL

Basi di Dati: Corso di laboratorio

Corso di Informatica Linguaggio SQL prima parte

PROGETTAZIONE DI DATABASE

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

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

E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione.

Gestione delle informazioni. Tot. h 10. Base di Dati. Tot. h 56. Grafica in C# - Laboratorio- Tot. h 40. Dipartimento Informatica Materia Informatica

PRODOTTO CARTESIANO Caso Generale

Interrogazioni complesse. SQL avanzato 1

Laboratorio di Sistemi Informativi

Database parte 2. Database azienda

Archivi e Basi di Dati. lezione 07 1

Interrogazioni nidificate

SQL /10/2016 Basi di dati - SQL 1

SQL STRUCTURED QUERY LANGUAGE

CORSO ACCESS 2000 PARTE VI

SQL e algebra relazionale

Istruzioni. DDL: CREATE, DROP e ALTER TABLE. DML: INSERT, DELETE e UPDATE DQL: SELECT. DCL: GRANT e REVOKE

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"

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

Unità C1. Obiettivi. Le funzionalità di SQL. L evoluzione del linguaggio. L utilizzo di SQL. I tipi di dato. Il linguaggio SQL

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

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe

A.A. 2018/2019. Introduzione a SQL FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Introduzione Sql con Microsoft Access

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

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

Basi di Dati: Corso di laboratorio

PROGETTAZIONE DI DATABASE Linguaggio SQL

MODULO 2. Query normali e parametriche Query di:

SQl come DML. Angelo Chianese,, Vincenzo Moscato, Antonio Picariello,, Lucio Sansone

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

ISTITUTO PARITARIO MICHELANGELO - RIMINI- PIANO DI LAVORO

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.

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

Prova Pratica di Informatica, Modulo Basi di dati Appello 23/07/2018

ESERCITAZIONI ACCESS

Laboratorio di Basi di Dati

Esercitazione seconda prova Esame di Stato Prova di Informatica Gestionale ITC Programmatori e Mercurio. Note introduttive

Esempi SQL con Access. Orazio Battaglia

Interpretazione delle query nidificate

Eprogram ITIS V anno Unità 4 - Il linguaggio SQL

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Basi di Dati. Concetti Avanzati

SQL (STRUCTURED QUERY LANGUAGE)

Gestione di basi di dati relazionali con SQL (parte I) Linguaggi per basi di dati

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

Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno Cognome e nome: Matricola:

Versione 1.0. (Iniziamo ad interrogare il DB)

Il Linguaggio SQL Teoria ed esempi

Il linguaggio SQL: raggruppamenti

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

McGraw-Hill. Soluzioni degli esercizi. Tutti i diritti riservati. Capitolo SELECT Neg_Nome FROM Negozi. 2. SELECT Neg_Cod FROM Ordini

A.A. 2018/2019. Esercitazione 12. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE

Progettazione di Sistemi Informatici

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

A.A. 2018/2019. Esercitazione 11. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE

Basi di Dati. Dettagli e Approfondimenti SQL-92 25/02/2004. Dettagli e Approfondimenti. DDL: Tabelle. DML: Aggiornamenti.

Linguaggio SQL: fondamenti D B M G

Basi di Dati SQL-92. Dettagli e Approfondimenti

Transcript:

Manuale Comandi SQL Sito per esercitarsi (on line)... 1 SQL... 1 Convenzioni e simboli usati... 2 Query Language... 2 Comando Select... 2 Order By:... 3 Sintassi generale:... 3 Ordinamanto su PIU campi... 3 Campi calcolati... 4 campi calcolati Sintassi generale:... 4 Select con Join (due tabelle)... 4 Select con Join (3 tabelle)... 5 Funzioni aggregazione (SUM, COUNT, AVG, ) e raggruppamento (GROUP BY)... 5 Funzioni di Aggregazione (senza raggruppamento)... 5 Funzione di raggruppamento (senza aggregazione)... 6 Funzione di aggrgazione con raggruppamento... 6 DML (Data Manipulation Language)... 7 Insert... 7 1) Insert semplice (SCONSIGLIATO vivamente!):... 7 2) Insert :... 7 3) Insert mediante select:... 7 Update... 7 Delete... 8 DDL (Data Definition Language)... 9 Create Database... 9 Create Table... 9 Create View... 9 Alter Table... 9 Drop Table... 10 Sito per esercitarsi (on line) SQL SQL (Stuctured Query Language) linguaggio di interrogazione strutturato. E il linguaggio usato dal DBMS per interfacciarsi con gli utenti (utenti e programmi). SQL DDL (Data Definition Language): Definizione Dati. Permette di: Creare/Eliminare Data Base Creare/Eliminare Tabelle Modificare Tabelle (i campi) DML(Data Manipulation Language): Modifica Dati. Non restituisce dati. Permette di: Inserire record Modificare record Eliminare record QL (Query Language): Interrogazione Permette di interrogare il DB. Restituisce sempre un insieme di record (RecordSet) 1

Convenzioni e simboli usati Verranno utilizzatele usuali convenzioni per esprimere la sintassi del linguaggio: < > le parentesi acute indicano la categoria sintattica descritta al loro interno e quindi NON devono essere utilizzate nella sintassi es: FROM <Nome Tabella> al posto di <Nome Tabella> si dovrà mettere il nome di una tabella SENZA i simboli< >: FROM Prodotti dove Prodotti è il nome della tabella Prodotti [ ] i costrutti fra parentesi quadre sono opzionali significa oppure, i costrutti separati dal simbolo sono alternativi Query Language Comando Select Il comando Select permette di specificare la selezione di dati ( interrogazioni ) ed è così strutturato. SELECT [ALL DISTINCT] <elenco-campi> FROM <Nome Tabella> <lista-tabelle (separate da JOIN )> [WHERE <condizione>] [GROUP BY <lista-campi>] [HAVING <condizione>] [ORDER BY <campo1> [ASC DESC] [, campo2 [ASC DESC] ] La sintassi nella forma più semplice è: FROM <nome tabella> <elenco campi> è l'elenco dei campi da estrarre (separati tra loro con una virgola) oppure per selezionare tutti i campi SELECT * <nome tabella> è il nome della tabella a cui ci si riferisce La sintassi nella forma più semplice ma con la clausola WHERE è: FROM <nome tabella> WHERE <condizione> < condizione > è una condizione sui campi: si utilizzano i consueti operatori di confronto (op_conf): =, >, <, <> <campo> < op_conf> <valore> <campo> < op_conf> <espressione> <campo> < op_conf> <campo> si utilizzano anche i consueti operatori logici AND, OR, NOT (<condizione >) AND (<condizione>) (<condizione >) OR (<condizione>) NOT(<condizione >) 2

Per gli esempi si considerino le tabelle Anag e Citta Anag CF_PK Nome Cognome NomeCittaFK Indirizzo Num_Civico Citta NomePK Regione NumAb Selezione di nome, indirizzo e dei residenti a Treviso al numero civico 9; comando SQL: SELECT Nome, Indirizzo, Num_Civico FROM Anag WHERE (NomeCittaFK ='Treviso') AND (Num_Civico = 9) Order By: Select con ordinamento dei record Sintassi generale: FROM <nome tabella> ORDER BY <nome-campo> [DESC ASC] < nome-campo > indica il nome del campo secondo cui si desidera effettuare l ordinamento DESC ASC indicano rispettivamente ordinamento crescente o decrescente se omesso si considera ASC Esempio: Record ordinati per cognome decrescente: SELECT * FROM Anag ORDER BY Cognome DESC Ordinamanto su PIU campi FROM <nome tabella> ORDER BY <nome-campo1> [DESC ASC], <nome-campo2> [DESC ASC], Se volessimo, a parità di cognome, ordinare per nome SELECT * FROM Anag ORDER BY Cognome, Nome 3

Campi calcolati Un campo calcolato è il risultato di un espressione ( formata da altri campi, valori, operatori) a cui si assegna un nome campi calcolati Sintassi generale: SELECT, <espressione> AS <nome-campo-calcolato> FROM <nome tabella> < espressione > è una espressione sui campi: si utilizzano i consueti operatori aritmetici(op): +, -, *, / e le eventuali parentesi secondo gli usuali criteri delle espressioni matematiche <campo> < op > <valore> <campo> < op > <espressione> <campo> < op > <campo> < nome-campo-calcolato > è il nome scelto per il nuovo campo calcolato: Data la tabella Quantita visualizzare la produzione in eccesso per i prodotti di ogni nazione. Quantita Nazione NomeProdotto QuantitaProdotta QuantitaConsumata SELECT NomeProdotto, QuantitaProdotta - QuantitaConsumata AS Eccedenza FROM Quantita Select con Join (due tabelle) Specifica il legame fra i record delle tabelle. OBBLIGATORIO, per ottenere dati significativi quando si selezionano i dati da 2 o più tabelle. JOIN (SQL standard) INNER JOIN (in MsAccess) comando SQL: FROM <nometab_1> JOIN < nometab_2> ON <condizione JOIN> <elenco campi> è l'elenco dei campi da estrarre separati tra loro con una virgola e preceduti dal nome della tabella: <nometab_1>.<nomecamp_1>, <nometab_1>.<nomecamp_2> oppure per selezionare tutti i campi SELECT * <nome tabella> è il nome della tabella a cui ci si riferisce <condizione JOIN> indica la corrispondenza dei campi (solitamente ciave primaria ed esterna): <nometab_1>.<nomecamp_1> = <nometab_2>.< nomecamp _1> AND <nometab_1>.<nomecamp_2> = <nometab_2>.< nomecamp _2> Esempio Selezione di cognome, indirizzo, città e numero relativi abitanti per i residenti in Veneto; SELECT Anag.Cognome, Anag.Indirizzo, Citta.NomePK as Citta, Citta.NumAb FROM Anag JOIN Citta ON (Anag. NomeCittaFK = Citta.NomePK) WHERE Regione='Veneto' 4

consideriamo ora il DB di ACCESS. Prodotti CodiceProdotto Descrizione Nazioni CodiceNazione Nome Abitanti Quantita CodiceProdotto CodiceNazione QuantitaProdotta QuantitaConsumata Select con Join (3 tabelle) Se si hanno tre tabelle bisogna creare il primo JOIN fra 2 tabelle e farne il Join con la terza es: FROM (<nometab_1> JOIN < nometab_2> ON <condizione JOIN>) JOIN < nometab_3> ON <condizione JOIN_2> Nella query che segue è evidenziato il primo JOIN SELECT Nazioni.NomeNazione, Prodotti.Descrizione, Quantita.QuantitaProdotta FROM (Nazioni INNER JOIN Quantita ON Nazioni.CodiceNazione = Quantita.CodiceNazione) INNER JOIN Prodotti ON Prodotti.CodiceProdotto = Quantita.CodiceProdotto Funzioni aggregazione (SUM, COUNT, AVG, ) e raggruppamento (GROUP BY) Funzioni di Aggregazione (senza raggruppamento) Si crea un unico gruppo per tutti i record SELECT <FunzAggr>( nome_campo) AS <nome_nuovo_campo>, FROM <NomeTab>; < FunzAggr> è una fra SUM, COUNT, AVG, Max, Min 5

<nome_nuovo_campo> è il nome dato al nuovo campo <nome tab> è il nome della tabella a cui ci si riferisce SELECT Sum(Nazioni.Abitanti) AS NumAB FROM Nazioni; Risultato ottenuto: NumAB 151600000 Funzione di raggruppamento (senza aggregazione) Si crea un unico gruppo per valori uguali del campo (o campi) scelto (scelti) ovvero si eliminano i duplicati SELECT <nome_campo1>, <nome_campo2>, FROM <NomeTab> GROUP BY <nome_campo1>, <nome_campo2>, ; <nome_campo> è il nome del campo <nome tab> è il nome della tabella a cui ci si riferisce Es. si crea un unico gruppo per valori uguali della solita tab. citta SELECT Regione FROM Citta GROUP BY Regione Funzione di aggrgazione con raggruppamento Si crea un unico gruppo per ogni valore diverso del campo di raggruppamento e per tale gruppo viene calcolata la funzione di aggregazione. NB si possono usare più funzioni e raggruppare su più campi. SELECT <nome_camporagg>, <FunzAggr>( <nome_campo>) AS <nome_nuovo_campo>, FROM <NomeTab> GROUP BY < nome_camporagg >, ; < FunzAggr> è una fra SUM, COUNT, AVG, Max, Min <nome_nuovo_campo> è il nome dato al nuovo campo <nome tab> è il nome della tabella a cui ci si riferisce < nome_camporagg > è il nome del campo su cui si raggruppa SELECT Regione, Sum(NumAb) AS TotAbitanti FROM Citta GROUP BY Regione Risultato ottenuto: Regione TotAbitanti Sardegna 900000 Veneto 782 6

DML (Data Manipulation Language) Insert Il comando ha la funzione di inserire i dati nelle tabelle. Sintassi del comando insert 1) Insert semplice (SCONSIGLIATO vivamente!): INSERT INTO <nome_tabella> VALUES (<elenco valori>); dove i valori di <elenco valori> devono essere nello stesso ordine dei campi della tabella 2) Insert : a) INSERT INTO <nome_tabella> (<elenco dei campi>) VALUES (<elenco valori>); viene inserita una riga i valori di <elenco valori> devono essere nello stesso ordine dei campi della tabella oppure b) INSERT INTO <nome_tabella> (<elenco dei campi>) VALUES (<elenco valori 1 >),(<elenco valori 2>),, (<elenco valori n>); vengono inserite più righe i valori di <elenco valori> devono essere nello stesso ordine dei campi della tabella In questo caso, invece, le colonne di destinazione vengono dichiarate, è possibile indicare solo le colonne per le quali vengono passati dei valori in qualsiasi ordine, purché vengano inseriti i valori nello stesso ordine. Nella sintassi a), nella b) Es. consideriamo la Tabella Matricola Classe NumOrdine Nome Cognome T_Alunni INSERT INTO T_Alunni (Nome, Cognome, Matricola) VALUES ( Giuseppe, Rossi,339); 3) Insert mediante select: INSERT INTO nome_tabella (<elenco campi>) SELECT...; Inserimento di una serie di righe risultanti da un comando di select, purché tali righe siano compatibili (stesso numero di campi e tipi corrispondenti) con le colonne della tabella su cui si inseriscono i dati. Update Modifica dei dati delle tabelle. 7

Sintassi del comando update UPDATE <nome_tabella> SET <nome_campo1> = <valore1>, <nome_campo2> = <valore2>,... WHERE <condizione>; : <nome_tabella> è il nome della tabella a cui ci si riferisce <nome_campo1> è il nome del primo campo da modificare <valore1> è il valore da attribuire al primo campo da modificare <nome_campo2> è il nome del secondo campo da modificare <valore2> è il valore da attribuire al secondo campo da modificare Le coppie <campo> = <valore> sono separate da, (virgola). Es consideriamo la solita T_Alunni Matricola Classe NumOrdine Nome Cognome UPDATE T_Alunni SET Nome = Peppe, Classe = 5_Sirio, WHERE Cognome = Rossi ; Delete Cancellazione righe dalle tabelle. Sintassi del comando delete DELETE FROM <nome_tabella> WHERE <condizione>; Es DELETE FROM T_Alunni WHERE Matricola < 102 8

DDL (Data Definition Language) Create Database Creazione nuovo database Create Database <nome-db> <nome DB> indica il nome del nuovo DataBase Es. Create Database Biblioteca Create Table Creazione nuova tabella Create Table <nome tabella> (<nomecampo> <tipocampo>, <nomecampo> <tipocampo>, ) Vediamo la sintassi per la definizione dei campi con altre impostazioni: <nome del campo><tipo del campo> [NOT NULL NULL] [DEFAULT <valore di default>] [AUTO_INCREMENT] NOT NULL implica che il campo non può essere lasciato vuoto quando inseriamo un nuovo record. Viceversa, se definito con NULL, il campo può essere lasciato vuoto. Per default vale NULL. Un campo definito con DEFAULT <valore> assume, se non specificato diversamente durante la inserimento del record, il valore indicato con DEFAULT. Un campo di tipo intero definito come AUTO_INCREMENT assume, in modo automatico ogni volta che inseriamo un nuovo record, valori interi crescenti. Create View Crea una nuova Vista (in MS-Access sono le query salvate ) Create View <nome vista> AS SELECT Alter Table Modifica la struttura di una Tabella (aggiunta- eliminazione campi, cambio tipo campi ) Alter Table <nome tabella> [ADD DROP CHANGE] <specifica campo> Es. 9

alter table alunni add indirizzo char(20); Drop Table Elimina la tabella dal DataBase Drop Table <nome tabella> 10