----------------------------------------------------------------------------



Похожие документы
Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

SQL Sintassi Dei Comandi

Definizione di domini

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Gestione delle tabelle

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

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema}

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

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

Laboratorio di Basi di Dati e Web

SQL (STRUCTURED QUERY LANGUAGE)

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

Domini elementari, 2. Basi di dati. Domini elementari, 4. Domini elementari, 3. Domini definiti dagli utenti. Domini elementari, 5

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati

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

Basi di Dati: Corso di laboratorio

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

Laboratorio di Basi di Dati

SQL: Concetti Base -Prima Parte-

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

SQL (STRUCTURED QUERY LANGUAGE)

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Corso di Informatica (Basi di Dati)

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

Il linguaggio SQL: DDL di base

SQL. Alcune note sulla definizione dei dati

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

SQL - Tipi di dato Il linguaggio SQL

Istruzioni DML di SQL

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

Corso sul linguaggio SQL

Corso sul linguaggio SQL

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

Giovanna Rosone 04/03/ /03/2010 SQL, Istruzioni per la modifica dello schema

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

Linguaggio SQL. Structured Query Language

DBMS (Data Base Management System)

Operazioni sui database

User Tools: DataBase Manager

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

Corso di Laboratorio di Basi di Dati

SQL Laboratorio di Basi di Dati a.a. 2002/2003

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)

DUE GRUPPI DI COMANDI

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Vincoli di Integrità

Basi di Dati prof. Letizia Tanca

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a

Lezione V. Aula Multimediale - sabato 29/03/2008

Corso di Basi di Dati A.A. 2013/2014

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a

MAX, SUM, AVG, COUNT)

Laboratorio di Basi di Dati Introduzione a SQL

Il linguaggio SQL: le basi

Capitolo 4. Soluzione: Soluzione: Create domain STRING as character varying (256) default sconosciuto not null

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

SQL. Storia e standard

SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))

PROGRAMMA DI CLASSE 5AI

SQL PER LA DEFINIZIONE DI BASI DI DATI

Volumi di riferimento

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

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Introduzione a MySQL

Linguaggio SQL Descriviamo la notazione usata nel seguito:

Basi di Dati Relazionali

SQL Manuale introduttivo

Corso di Informatica Generale 1 IN1. Linguaggio SQL

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

Lezione 8. Metadati, Viste e Trigger

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Introduzione alla teoria dei database relazionali. Come progettare un database

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

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

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

Il linguaggio SQL: query innestate

OSSIF WEB. Manuale query builder

Archivi e Basi di Dati

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 9 SETTEMBRE 2015 Tempo: 2h30m

Domini elementari in SQL

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

SISTEMI INFORMATIVI AVANZATI -2010/ Introduzione

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

Informatica per le discipline umanistiche 2 lezione 10

Capitolo 13. Interrogare una base di dati

Basi di dati e Sistemi informativi aziendali

Il linguaggio SQL. Evoluzione del linguaggio. I linguaggi dentro SQL. I dialeu SQL. U@lizzo di SQL SQL. A. Ferrari 1

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie:

2104 volume III Programmazione

Basi di Dati Corso di Laura in Informatica Umanistica

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:

ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2

Il linguaggio SQL: viste e tabelle derivate

Транскрипт:

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 garanzia di completezza sull argomento trattato, essendo solo appunti informali. Il libro di riferimento, a cui spesso si rimanda per eventuali riferimenti e approfondimenti, è Basi Di Dati modelli e linguaggi di interrogazione ; McGraw-Hill; terza edizione. Nelle prossima trattazione, ed in particolare della stesura delle query sql, spesso si utilizzano caratteri upper case ed altre volte no. SQL non è case sensitive, pertanto l utilizzo di un carattere piccolo o grande non influenza il risultato, e tuttavia la differenza mostrata nelle presente stesura è la semplice, volta per volta, messa in evidenza. SQL (structured query language, oggi nome a se stante) DDL (Data Definition Language) DML (Data Manipolation Language) DATI: atomici strutturati DATI ATOMICI: character [varyng] [(lunghezza)] char; varchar bit [varyng] [(lunghezza)] ---------------------------------------------------------------------------- decimal [(precisione [,scala] )] numeric [(precisione [,scala] )] scala: quante cifre significative devono sparire scala: quante cifre significative devono sparire integer smallint ---------------------------------------------------------------------------- float [(precisione)] precisione: cifre per la mantissa real precisione fissa double precision precisione doppia alla precedente ---------------------------------------------------------------------------- Mercogliano Isidoro - Appunti di SQL -Bozza n 3 - pagina: 1

date data senza ora time [(precisione)] [with time zone] precisione: per la frazione del secondo timestamp [(precisione)] [with time zone] precisione: per la frazione del secondo ---------------------------------------------------------------------------- boolean blob clob NULL: indica assenza di valore ---------------------------------------------------------------------------- VARI create scheme NOMEDB; (crea il database) show databases; (mostra tutti I database esistenti) use NOMEDB; (imposta il database da utilizzare) show tables; (mostra tutte le tabelle si un database) CREAZIONE TABELLA CREATE TABLE <tabella> ( <campo> <tipo> [ NULL NOT NULL ] [ <chiave> ] [ <vincolo> ], <campo> <tipo> [ NULL NOT NULL ] [ <chiave> ] [ <vincolo> ], )... create table nome_tabella( ) nome_attributo dominio [valore di default] [vincoli], etc.. altri vincoli Mercogliano Isidoro - Appunti di SQL -Bozza n 3 - pagina: 2

Es: create table nominativi( cognome varchar(256), nome varchar(256) ); L opzione DEFAULT <valore NULL >, inserita subito dopo la definizione del dominio, permette di definire valori di default. Vincoli La violazione di un vincolo, usualmente (vedasi vincoli inter-relazionali), non permette l operazione. Vincoli intrarelazionali NOT NULL Impossibilità di assumere valore NULL. es: nome varchar(20) NOT NULL UNIQUE (impostazione di una superchiave) Impossibilità di assumere valori uguali ad uno o più attributi. I valori null sono assunti tutti diversi tra loro. Due modi: - su un solo attributo: si specifica l attributo seguito dalla parola unique - su più attributi: dopo aver definito tutti gli attributi della tabella, si elencano quelli a cui fornire il vincolo: unique(attr1, attr ) PRIMARY KEY È come unique ma implica anche il vincolo NOT NULL Definizione identica a unique. Vincoli inter-relazionali (foreigni key = chiave esterna) Crea un legame tra la tabella interna, il cui valore deve essere diverso da null, e quella esterna su un attributo con vincolo unique o primary key. Mercogliano Isidoro - Appunti di SQL -Bozza n 3 - pagina: 3

Brevemente: Completo: FOREIGN KEY (attr1) REFERENCES tabella_esterna(attr) CONSTRAINT nome_vincolo (rigo opzionale e dipendente dall implementazione) FOREIGN KEY (attr1) REFERENCES tabella_esterna(attr) On <delete update> <cascade set null set default no action> VIOLAZIONE: Violazioni del vincolo della tabella interna (che viene vista come subordinata) non vengono permesse. Violazioni del vincolo (modifica o cancellazione) della tabella esterna (master) : - cascade: il nuovo valore dell attributo della tabella esterna viene riportato su ttutte le corrispondenti della tabella interna. - Set null: all attributo referente viene assegnato NULL - Set default: all attributo referente viene assegnato il valore di default - No action: l azione non viene esegiuta Modifica delle relazioni Vedi pag. 108 Interrogazioni Vengono esaminate dal query optimizer per la loro ottimizzazione. Query base: Query base: select lista_attributi from nome_tabella [where condizioni] select Attr [ [as] alias ] {, Attr [ [as] alias ]} from nome_tabella [[as] alias ] {, nome_tabella [[as] alias ]} [where condizioni] WHERE ammette un espressione booleana tramite gli operatori: - And; or; not Mercogliano Isidoro - Appunti di SQL -Bozza n 3 - pagina: 4

- =; <>(diverso); >; <; <=; >= - ordine di precedenza a mezzo di parentesi - like (confronto tra stringhe: vedi dopo) LIKE: utilizzato nella clausola where con due caratteri speciali: _ : carattere arbitrario % : stringa arbitraria di lunghezza arbitraria (eventualmente nulla) Esempio: where cognome like _o%i DISTINCT: Nelle selezioni può facilmente accadere che il risultato presenti dei duplicati. Ove non siano richiesti, è possibile rimuoverli tramite la clausola DISTINCT, immediatamente dopo select, il cui opposto è ALL, valore di default. Esempio di utilizzo: select [ DISTINCT ALL ] attr, from JOIN INTERNI ED ESTERNI: Tipicamente è possibile realizzare un join con una select su due o più tabelle. Es: select * from tab1, tab2 where tab1.attr1=tab2.attr2 Lo standard sql mette a disposizione i seguenti costrutti. select Attr [ [as] alias ] {, Attr [ [as] alias ]} from nome_tabella [[as] alias ] { [TIPOJOIN] join nome_tabella [[as] alias ] on Condizione_di_join} [where alter_condizioni] Tipo di join: - inner - left outer Mercogliano Isidoro - Appunti di SQL -Bozza n 3 - pagina: 5

- right outer - full outer L'inner, è il join interno. Il left outer join: fornisce il risultato esteso con le righe della tabella a sinistra. In modo analogo si definisce il comportamento degli altri. USO DI VARIABILI: Tramite l utilizzo degli alias vengono a crearsi delle variabili il cui utilizzo non si limita ad una semplice ridenominazione: è infatti possibile riferirsi, per esempio, alla stessa tabella con due variabili differenti le quali rappresentano due istanze della tabella stessa. Es:.. from Tab1 as A1, Tab1 as A2, Ancora una volta ne viene a guadagnare l espressività generale. Nelle selezioni nidificate (non ancora esaminate) vale lo scope per le variabili. ORDINAMENTI: è possibile specificare un ordinamento delle righe delle selezioni terminando la selezione in questo modo: ORDER BY attr_di_ordinamento [ ASC DESC ] {, attr_di_ordinamento [ ASC DESC ]} ASC (ascendente) è il valore di default. DESC è l opposto. Operatori aggregati (estendono l algebra relazionale) Sono operatori che agiscono non più su una tupla alla volta, bensì su insiemi di tuple. In prima analisi vediamo l operatore count(*), il quale conta il numero di righe. Utilizzo: select count(*) from tabella where condizione Nella risoluzione della query vengono esaminate prima le ultime due righe, ed il risultato viene passato all operatore. Mercogliano Isidoro - Appunti di SQL -Bozza n 3 - pagina: 6

Nello standard SQL ci sono 5 operatori: count (< * [distinct all] lista_attributi > ) < sum max min avg > (< [distinct all] lista_attributi > ) Sum e avg ammettono espressioni che contengono valori numerici o intervalli di tempo. Max e min ammettono espressioni su cui sia definito un ordinamento. Rimane ovvio il significato degli operatori (deducibile dal nome). Le varie implementazioni sql spesso offrono ulteriori operatori. Gli operatori non possono essere utilizzati per condizionare le select (cioè utilizzati dopo il where). Raggruppamenti È possibile definire un ordinamento delle righe tramite l inserimento in coda della clausola: order by attr. Gli operatori precedentemente introdotti, possono in questo modo agire su gruppo di tuple. Esiste una limitazione di sintassi: vedi pag 131. PREDICATI SUI GRUPPI: per effettuare una selezione sui gruppi si utilizza la clausola: having vedi pag 133 L utilizzo di questo costrutto senza il precedente order by, tratta le tuple come un unico gruppo. Interrogazioni di tipo sistemistico selectsql <union intersec except > [all] selectsql except sta per differenza. [all] va inserito in quanto questa volta il valore di defaul, quello utilizzato in caso in cui non sia inserito alcunché, è distinct (che toglie tutti i valori uguali). Mercogliano Isidoro - Appunti di SQL -Bozza n 3 - pagina: 7

Interrogazioni nidificate Viene inserita una interrogazione (select) in una clausola where di un altra interrogazione. Dove: Select.. From where attr operatore any all ( selectsql ) Operatore: =; <>(diverso); >; <; <=; >= Any: la condizione deve essere verificata per almeno una tupla All: la condizione deve essere verificata per tutte le tuple I domini devono essere confrontabili Per rappresentare il controllo di appartenenza o esclusione rispetto ad un insieme, SQL mette a disposizione due operatori in e not in, i quali risultano del tutto identici a = any e <> all. Interrogazioni nidificate complesse Pag140 Inserimento (dei dati nelle tabelle) insert into nome_tabella (attr.1,attr.2,..) values ( val1,val2,..); oppure insert into nome_tabella ( selectsql ) nell ultimo caso serve la compatibilità tra i domini. Cancellazione di righe Delete from nome_tabella where condizione; condizione: rispetta la sintassi delle select; può valutare anche select nidificate. Cancellazione di tabelle Drop table nome_tabella cascade restrict Cascade: elimina anche le viste e le tabelle che nella loro definizione fanno riferimento alla tabella Mercogliano Isidoro - Appunti di SQL -Bozza n 3 - pagina: 8

Restrict: se vi sono viste o tabelle che vi fanno riferimento, allora la cancellazione fallisce. Modifica dei dati Es: Update nome_tabella set attr = <espressione selectsql NULL defaul > {, attr = <espressione selectsql NULL defaul >} [where condizione] Update alunno set anno =3 where id=1; Vincoli di integrità generici Tutti i vincoli si possono anche in un altro modo, peraltro più espressivo, e cioè tramite la clausola: check ( condizione ) applicato al seguito della definizione di ciascun attributo. Tutti gli altri vincoli possono essere specificati in questo modo, il quale è però meno pratico rispetto ai vincoli su visti. Inoltre di perde la possibilità di definire una politica di reazione. Asserzioni Sono vincoli definiti tramite la clausola check ed associati allo schema. Create assertion nome_asserzione Check (condizione) Politiche di controllo Il controllo dei vincoli può essere - immediato - differito (da controllare alla fine di una transazione) Mercogliano Isidoro - Appunti di SQL -Bozza n 3 - pagina: 9

Viste Vedi pag. 160 Funzioni scalari Vedi pag. 165 Controllo dell accesso SQL permette di specificare chi opera, su cosa opera e come. Si basa sul concetto di privilegio. Ogni privilegio è caratterizzato da: 1- la risorsa a cui si riferisce 2- l utente che concede il privilegio 3- l utente che riceve il privilegio 4- l azione che viene permessa alla risorsa 5- se il privilegio può essere trasmesso o meno ad altri utenti Quando una risorsa viene creata, il sistema concede automaticamente tutti i privilegi su tale risorsa al creatore. Esiste inoltre un utente predefinito (_system) che rappresenta il database administrator, il quale possiede tutti i privilegi su tutte le risorse. I privilegi disponibili sono: - insert - update - delete - select - references (per fornire l autorizzazione ad effettuare un riferimento) - usage drop ed alter possono essere concessi ma rimangono prerogativa del creatore. Concedere privilegi: grant Privilegi on Risorsa to Utente [with grant option] Privilegi: se tutti allora all privileges with grant option: indica se il privilegio può essere propagato Mercogliano Isidoro - Appunti di SQL -Bozza n 3 - pagina: 10

Rimuovere privilegio: revoke Privilegi on Risorsa from Utente [restrict cascade] Nei privilegi si può anche specificare grant option. Nella revoca dei privilegi può nascere un problema quando l utente aveva concesso, a sua volta, altri privilegi. In questo caso, il comportamento è specificato secondo i valori: - restrict: è il valore di default, ed indica di non eseguire la revoca qualora li si debba revoca anche ad altri utenti - cascade: li toglie a tutti SQL-3 ha introdotto l accesso basato sui ruoli. Transazioni Start transaction < commit rollnack > work Procedure Sql permette procedure molto molto semplici. Trigger Detti anche regole attive, seguono il paradigma evento-condizione-azione (ECA). Ogni trigger si attiva dopo uno specifico evento e se si verifica una condizione, eseguono un azione. Documento redatto da Mercogliano Isidoro con diritti di cui art. 2576 c.c. Mercogliano Isidoro - Appunti di SQL -Bozza n 3 - pagina: 11