Basi di dati
This presentation is the property of its rightful owner.
Sponsored Links
1 / 68

Basi di Dati PowerPoint PPT Presentation


  • 81 Views
  • Uploaded on
  • Presentation posted in: General

Basi di Dati. SQL-92 Concetti Fondamentali. versione 2.0. Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina). Introduzione Creazione ed eliminazione di bd Creazione ed eliminazione di tabelle Inserimenti di ennuple. Interrogazioni

Download Presentation

Basi di Dati

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Basi di dati

Basi di Dati

SQL-92

Concetti Fondamentali

versione 2.0

Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons

(vedi ultima pagina)

G. Mecca – [email protected] – Università della Basilicata


Concetti fondamentali

Introduzione

Creazione ed eliminazione di bd

Creazione ed eliminazione di tabelle

Inserimenti di ennuple

Interrogazioni

clausola SELECT

clausola FROM

clausola WHERE

clausola ORDER BY

metodo di scrittura

Cancellazioni

Aggiornamenti

SQL-92 >> Sommario

Concetti Fondamentali

G. Mecca - [email protected] - Basi di Dati


Introduzione

SQL-92 >> Concetti Fondamentali >> Introduzione

Introduzione

  • SQL (“Structured Query Language”)

    • linguaggio per l’interazione con il DBMS

    • tutte le operazioni vengono specificate in SQL

  • DDL (“Data Definition Language”)

    • creazione degli oggetti dello schema

  • DCL (“Data Control Language”)

    • controllo degli utenti e delle autorizzazioni

  • DML (“Data Manipulation Language”)

    • manipolazione dell’istanza della base di dati (interrogazioni e aggiornamenti)

G. Mecca - [email protected] - Basi di Dati


Storia dello standard

SQL-92 >> Concetti Fondamentali >> Introduzione

Storia dello Standard

  • Prime implementazioni

    • IBM System/R 1979 (SEQUEL)

  • Primi prodotti commerciali

    • IBM SQL/DS, Oracle 1981

  • SQL-86

    • prima versione dello standard, basata sul dialetto IBM

G. Mecca - [email protected] - Basi di Dati


Storia dello standard1

SQL-92, full

SQL-92, intermediate

SQL-92, entry

SQL-89, livello 2

SQL-92 >> Concetti Fondamentali >> Introduzione

Storia dello Standard

  • SQL-89 (SQL-1)

    • vincoli di integrità

    • livello1 e livello2

  • SQL-92 (SQL-2)

    • entry

    • intermediate

    • full

SQL-89, livello 1

G. Mecca - [email protected] - Basi di Dati


Storia dello standard2

SQL-92 >> Concetti Fondamentali >> Introduzione

Storia dello Standard

  • Standard collegati

  • SQL/CLI

    • “Call Level Interface” (ODBC), 1995

  • SQL/PSM

    • “Persistent Storage Modules”, 1997

  • SQL/OLB

    • “Object Language Bindings”, 1998

G. Mecca - [email protected] - Basi di Dati


Storia dello standard3

SQL:1999 (SQL-3)

estensioni “object-relational”

core: tutto SQL-92 entry, (quasi) tutto SQL-92 intermediate, parte di SQL-92 full

packages

Attualmente:

lavori su SQL:200x

SQL-92, full

SQL-92, intermediate

SQL-92, entry

SQL-89, livello 2

SQL-89, livello 1

SQL:1999, core

SQL-92 >> Concetti Fondamentali >> Introduzione

Storia dello Standard

G. Mecca - [email protected] - Basi di Dati


Storia dello standard4

SQL-92 >> Concetti Fondamentali >> Introduzione

Storia dello Standard

  • Implementazioni dello standard

    • gli standard hanno in alcuni casi inseguito la tecnologia di mercato

  • Corrispondenza imperfetta

    • non esiste nessuna implementazione completa in commercio di SQL-92 full

    • molti DBMS offrono funzionalità “proprietarie” e non standard (es: parte di SQL:1999)

    • problema di portabilità delle applicazioni

G. Mecca - [email protected] - Basi di Dati


Storia dello standard5

Tipico DBMS sul mercato oggi

essenzialmente SQL-92 intermediate

limitate funzionalità di SQL-92 full

parte di SQL:1999

In questo corso

ci concentriamo su SQL-92, intermediate

tipico DBMS commerciale

SQL-92, full

SQL-92, intermediate

SQL-92, entry

SQL-89, livello 2

SQL-89, livello 1

SQL:1999, core

SQL-92 >> Concetti Fondamentali >> Introduzione

Storia dello Standard

G. Mecca - [email protected] - Basi di Dati


Le istruzioni fondamentali

DDL

creazione della base di datiCREATE DATABASE

creazione delle tabelleCREATE TABLE

DML

inserimento delle ennupleINSERT INTO

interrogazioniSELECT

eliminazione delle ennuple DELETE

modifica della ennupleUPDATE

SQL-92 >> Concetti Fondamentali >> Introduzione

Le Istruzioni Fondamentali

G. Mecca - [email protected] - Basi di Dati


Creazione ed eliminazione di bd

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di BD

Creazione ed Eliminazione di BD

  • Istruzioni del DDL

  • Sintassi

    • CREATE DATABASE <nome>;

    • DROP DATABASE <nome>;

      Esempio

      CREATE DATABASE universita;

      DROP DATABASE universita;

G. Mecca - [email protected] - Basi di Dati


Creazione ed eliminazione di bd1

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di BD

Creazione ed Eliminazione di BD

  • Semantica

    • CREATE DATABASE

      • crea una nuova base di dati vuota

      • l’utente deve essere autorizzato

      • l’utente diventa il proprietario della bd

    • DROP DATABASE

      • elimina una base di dati esistente (anche non vuota)

      • l’utente deve essere autorizzato

G. Mecca - [email protected] - Basi di Dati


Creazione ed eliminazione di tabelle

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

Creazione ed Eliminazione di Tabelle

  • Istruzioni del DDL

    • CREATE TABLE

    • DROP TABLE

  • Sintassi

    • CREATE TABLE <nome> (<schema>);

    • DROP TABLE <nome>;

G. Mecca - [email protected] - Basi di Dati


Creazione ed eliminazione di tabelle1

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

Creazione ed Eliminazione di Tabelle

  • Esempio: la tabella Professori

    CREATE TABLE Professori ( cod char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) );

    DROP TABLE Professori;

G. Mecca - [email protected] - Basi di Dati


Creazione ed eliminazione di tabelle2

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

Creazione ed Eliminazione di Tabelle

  • Esempio: la tabella Esami

    CREATE TABLE Esami (

    studente integer REFERENCES Studenti(matr) ON DELETE cascade ON UPDATE cascade, corso char(3) REFERENCES Corsi(cod), voto integer, lode bool, CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30), PRIMARY KEY (studente, corso));

G. Mecca - [email protected] - Basi di Dati


Creazione ed eliminazione di tabelle3

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

Creazione ed Eliminazione di Tabelle

  • <schema>

    • una o più definizioni di attributo

    • zero o più definizioni di vincoli di tabella

  • Definizione di attributo

    • <nomeattributo> <tipo> [<vincoli di colonna>]

  • Definizioni di vincoli di tabella

    • normalmente vincoli relativi a più attributi

G. Mecca - [email protected] - Basi di Dati


Creazione ed eliminazione di tabelle4

<nomeattributo>

identificatore

<tipo>

INT, INTEGER

REAL, FLOAT

DECIMAL(lung,dec)

DOUBLE PRECISION

CHAR(n), CHARACTER(n)

VARCHAR(n)

LONG VARCHAR, TEXT

BOOLEAN, BOOL

DATE

TIME

TIMESTAMP

BINARY(n), BIT(n)

VARBINARY(n), VARBIT(n)

LONG VARBINARY, BLOB

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

Creazione ed Eliminazione di Tabelle

G. Mecca - [email protected] - Basi di Dati


Creazione ed eliminazione di tabelle5

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

Creazione ed Eliminazione di Tabelle

  • Vincoli di colonna

    • PRIMARY KEY

    • UNIQUE

    • NOT NULL

    • REFERENCES <chiave della tabella dest.>[ON update CASCADE][ON delete CASCADE]

    • CHECK (<espressione>)

G. Mecca - [email protected] - Basi di Dati


Creazione ed eliminazione di tabelle6

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

Creazione ed Eliminazione di Tabelle

  • Vincoli di tabella (su più attributi)

    • PRIMARY KEY (<lista attributi>)

    • UNIQUE (<lista attributi>)

    • FOREIGN KEY (<lista attributi>) REFERENCES <chiave esterna> [ON update CASCADE] [ON delete CASCADE]

    • CHECK (<espressione>)

G. Mecca - [email protected] - Basi di Dati


Creazione ed eliminazione di tabelle7

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

Creazione ed Eliminazione di Tabelle

  • Semantica

    • CREATE TABLE

      • crea una nuova tabella vuota secondo lo schema specificato

      • l’utente deve essere autorizzato

      • l’utente diventa il proprietario della tabella

      • attenzione ai vincoli di riferimento

    • DROP TABLE

      • elimina una tabella esistente

      • l’utente deve essere autorizzato

G. Mecca - [email protected] - Basi di Dati


Basi di dati

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

CREATE TABLE Professori (

cod char(4) PRIMARY KEY,

cognome varchar(20) NOT NULL,

nome varchar(20) NOT NULL,

qualifica char(15),

facolta char(10) );

CREATE TABLE Tutorato (

studente integer

REFERENCES Studenti(matr),

tutor integer

REFERENCES Studenti(matr),

PRIMARY KEY (studente,tutor));

CREATE TABLE Esami (

studente integer

REFERENCES Studenti(matr)

ON DELETE cascade

ON UPDATE cascade,

corso char(3)

REFERENCES Corsi(cod),

voto integer,

lode bool,

CHECK (voto>=18 and voto<=30),

CHECK (not lode or voto=30),

PRIMARY KEY (studente, corso));

CREATE TABLE Studenti (

matr integer PRIMARY KEY,

cognome varchar(20) NOT NULL,

nome varchar(20) NOT NULL,

ciclo char(20),

anno integer,

relatore char(4)

REFERENCES Professori(cod)

);

CREATE TABLE Corsi (

cod char(3) PRIMARY KEY,

titolo varchar(20) NOT NULL,

ciclo char(20),

docente char(4)

REFERENCES Professori(cod)

);

CREATE TABLE Numeri (

professore char(4)

REFERENCES Professori(cod),

numero char(9),

PRIMARY KEY (professore,numero));

G. Mecca - [email protected] - Basi di Dati


Inserimenti

SQL-92 >> Concetti Fondamentali >> Inserimenti

Inserimenti

  • Istruzione del DML

    • INSERT

  • Sintassi

    • INSERT INTO <tabella> VALUES (<valori>);

  • Semantica

    • inserimento della ennupla nella tabella

    • corrispondenza ordinata tra valori e attributi (notazione posizionale)

G. Mecca - [email protected] - Basi di Dati


Inserimenti1

SQL-92 >> Concetti Fondamentali >> Inserimenti

Inserimenti

  • Esempi:

    INSERT INTO Professori VALUES(‘FT’, ‘Totti’, ‘Francesco’, ‘ordinario’, ‘Ingegneria’);

    INSERT INTO Studenti VALUES(111, ‘Rossi’, ‘Mario’, ‘laurea tr.’, 3, null);

    INSERT INTO Corsi VALUES (‘PR1’, ‘Programmazione 1’, ‘laurea tr.’, ‘FT’);

G. Mecca - [email protected] - Basi di Dati


Interrogazioni

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Interrogazioni

  • Istruzione del DML

    • SELECT

    • sintassi concreta per specificare operatori dell’algebra

  • Filosofia

    • parzialmente dichiarativa

    • si specificano gli operatori da applicare, non l’ordine in cui devono essere applicati

    • l’ottimizzatore sceglie la strategia ottima

G. Mecca - [email protected] - Basi di Dati


Interrogazioni1

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Interrogazioni

  • Tre “clausole” principali (nucleo)

    • SELECT, FROM, WHERE

  • SELECT

    • proiezioni, ridenominazioni, elimin. duplicati

  • FROM

    • tabelle, join, prodotti cartesiani, alias

  • WHERE

    • selezioni

G. Mecca - [email protected] - Basi di Dati


Esempi

s

(Studenti)

Risultato =

ciclo=‘laurea tr.’ AND anno>1

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Studenti della laurea triennale di anni successivi al primo”

SELECT *

FROM Studenti

WHERE ciclo=‘laurea tr.’ AND anno>1;

G. Mecca - [email protected] - Basi di Dati


Esempi1

Risultato = pmatricola, cognome ( stitolo=‘Inform. t.’ ( Studenti matr=studente Esami cod=corso Corsi ))

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Matricola e cognome degli studenti che hanno sostenuto l’esame di informatica teorica”

SELECT matricola, cognome

FROM Studenti JOIN Esami ON matr=studente

JOIN Corsi ON cod=corso

WHERE titolo=‘Inform. t.’;

G. Mecca - [email protected] - Basi di Dati


Interrogazioni2

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Interrogazioni

  • Per sistematizzare

    • partiamo dalla forma standard dell’algebra relazionale (nella versione più generale)

    • mostriamo come le clausole della SELECT si possono mettere in corrispondenza con gli operatori della forma standard

    • questo ci suggerirà anche un metodo per scrivere le interrogazioni SQL

G. Mecca - [email protected] - Basi di Dati


Interrogazioni3

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Interrogazioni

  • Forma standard dell’algebra

    • una o più sottointerrogazioni

    • correlate da operatori insiemistici

  • Sottointerrogazioni

    • strategia a: prodotti cartesiani tra le tabelle (con eventuali alias)

    • strategia b: join tra le tabelle (con eventuali alias)

>>

G. Mecca - [email protected] - Basi di Dati


Interrogazioni4

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Interrogazioni

  • Sottointerrogazioni (Continua)

    • selezioni

    • proiezioni (con funzioni aggregative)

    • eliminazione di duplicati (DISTINCT)

    • ridenominazioni

    • ordinamenti finali (ORDER BY)

G. Mecca - [email protected] - Basi di Dati


Interrogazioni5

Sottointerrogazione

ORDER BY

r

DISTINCT

p

s

TABELLE, con X oppure ed ev. ALIAS

Sottointerrogazione

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Interrogazioni

U oppure ∩ oppure –

G. Mecca - [email protected] - Basi di Dati


Interrogazioni6

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Interrogazioni

  • Interrogazioni SQL

    • una o più sottointerrogazioni

    • con eventuali operatori insiemistici

  • Per ogni sottointerrogazione

    • SELECT: proiezioni, ridenominazioni, distinct

    • FROM: prodotti cartesiani o join, alias

    • [WHERE]: selezioni (opzionale)

    • [ORDER BY]: ordinamenti (opzionale)

G. Mecca - [email protected] - Basi di Dati


Interrogazioni7

Sottointerrogazione

Sottointerrogazione

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Interrogazioni

Sottointerrogazione

ORDER BY

r

SELECT

DISTINCT

FROM

p

s

WHERE

ORDER BY

tabelle con X o

U oppure ∩ oppure –

UNION, INTERSECT, EXCEPT

Sottointerrogazione

G. Mecca - [email protected] - Basi di Dati


Esempi2

s

(Studenti)

Risultato =

ciclo=‘laurea tr.’ AND anno>1

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Studenti della laurea triennale di anni successivi al primo”

SELECT *

FROM Studenti

WHERE ciclo=‘laurea tr.’ AND anno>1;

NOTA: le clausole vanno scritte nell’ordine in cui compaionoprima SELECT, poi FROM, poi WHERE, poi ORDER BY

G. Mecca - [email protected] - Basi di Dati


Esempi3

Risultato = pmatricola, cognome ( stitolo=‘Inform. t.’ ( Studenti matr=studente Esami cod=corso Corsi ))

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Matricola e cognome degli studenti che hanno sostenuto l’esame di informatica teorica”

SELECT matricola, cognome

FROM Studenti JOIN Esami ON matr=studente

JOIN Corsi ON cod=corso

WHERE titolo=‘Inform. t.’;

G. Mecca - [email protected] - Basi di Dati


Clausola from

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Clausola FROM

  • Serve a specificare

    • le tabelle da cui prelevare i dati

    • gli eventuali prodotti cartesiani

    • gli eventuali join

    • gli eventuali alias

  • Prodotti cartesiani: sintassi

    • FROM R, S, T AS V …

    • es: FROM Professori, Numeri

G. Mecca - [email protected] - Basi di Dati


Clausola from1

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Clausola FROM

  • Join: Sintassi

    • FROM S JOIN R ON S.A=R.B JOIN T AS V..

    • es: FROM Professori JOIN Numeri ON cod=professore

  • Semantica

    • applicazione degli operatori corrispondenti

    • costruisce la tabella unica a cui applicare gli operatori successivi

G. Mecca - [email protected] - Basi di Dati


Clausola where

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Clausola WHERE

  • Serve a specificare

    • le selezioni

  • Sintassi

    • WHERE <condizione>

  • Dove

    • <condizione> è una condizione composta di sottocondizioni di selezione, collegate con connettivi booleani (AND, OR, NOT)

    • sintassi identica alle condizioni dell’algebra

G. Mecca - [email protected] - Basi di Dati


Clausola where1

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Clausola WHERE

  • Nota

    • possono comparire solo attributi di tabelle che compaiono nella clausola FROM

  • Esempio

    FROM ProfessoriWHERE qualifica=‘ordinario’ AND facolta IS NOT NULL

  • Semantica

    • applica le selezioni alle tabelle della FROM

G. Mecca - [email protected] - Basi di Dati


Clausola select

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Clausola SELECT

  • Serve a specificare

    • proiezioni

    • funzioni aggregative

    • ridenominazioni

    • eliminazione di duplicati

  • Nota

    • anche in questo caso è possibile specificare solo attributi di tabelle che compaiono nella clausola FROM

G. Mecca - [email protected] - Basi di Dati


Clausola select1

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Clausola SELECT

  • Sintassi

    • SELECT [DISTINCT] <attributi>

  • Dove

    • <attributi> è una lista di nomi di attributo

    • con eventuali ridenominazioni nella forma<vecchioNome> AS <nuovoNome>

  • Semantica

    • applicare gli operatori corrispondenti alle tabelle della FROM

G. Mecca - [email protected] - Basi di Dati


Clausola select2

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Clausola SELECT

  • Esempi

    SELECT cognome, nomeFROM Professori

    SELECT DISTINCT cognome, nomeFROM Professori

    SELECT cognome AS cognomeProf, nome AS nomeProfFROM Professori

G. Mecca - [email protected] - Basi di Dati


Clausola select3

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Clausola SELECT

  • Nota

    • la clausola SELECT è obbligatoria

    • che succede se non ci sono proiezioni e ridenominazioni ?

  • SELECT *

    • non è necessario effettuare nè proiezioni nè ridenominazioni

G. Mecca - [email protected] - Basi di Dati


Clausola order by

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Clausola ORDER BY

  • Serve a specificare

    • ordinamenti finali

  • Sintassi

    • ORDER BY <attributi>

  • Dove

    • <attributi> è una lista di attributi di tabelle che compaiono nella clausola FROM

G. Mecca - [email protected] - Basi di Dati


Clausola order by1

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Clausola ORDER BY

  • Esempio

    SELECT *

    FROM Studenti

    ORDER BY cognome, annoCorso

  • Normalemente:

    • l’ordinamento è crescente

  • Ordinamento decrescente: DESC

    ORDER BY cognome, annoCorso DESC

G. Mecca - [email protected] - Basi di Dati


Esempi4

DISTINCT (p

(Studenti))

ElencoNomi =

cognome, nome

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Cognomi e nomi degli studenti”

SELECT DISTINCT cognome, nome

FROM Studenti;

G. Mecca - [email protected] - Basi di Dati


Esempi5

ORDER BY

(

ElencoNomi =

cognome, nome

DISTINCT (p

(Studenti)))

cognome, nome

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Cognomi e nomi degli studenti, in ordine alfabetico”

SELECT DISTINCT cognome, nome

FROM Studenti

ORDER BY cognome, nome;

G. Mecca - [email protected] - Basi di Dati


Esempi6

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Voto medio riportato negli esami”

Risultato = pAVG(voto) (Esami)

SELECT AVG(voto)

FROM Esami;

G. Mecca - [email protected] - Basi di Dati


Esempi7

p

(

ProfessoriENumeri =

cognome, nome, numero

s

(

cod=professore

Professori X Numeri ))

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Cognomi, nomi e numeri di telefono dei professori” (strategia a)

SELECT cognome, nome, numero

FROM Professori, Numeri

WHERE cod=professore;

G. Mecca - [email protected] - Basi di Dati


Esempi8

p

(

ProfessoriENumeri =

cognome, nome, numero

Professori cod=professore Numeri)

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Cognomi, nomi e numeri di telefono dei professori” (strategia b)

SELECT cognome, nome, numero

FROM Professori JOIN Numeri

ON cod=professore;

G. Mecca - [email protected] - Basi di Dati


Esempi9

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Cognome e nome delle persone”

Risultato = rcognome AS cognomePersona, nome AS nomePersona (

pcognome, nome (Professori))

U

pcognome, nome (Studenti)

SELECT cognome AS cognomePersona, nome AS nomePersona

FROM Professori

UNION

SELECT cognome, nome

FROM Studenti;

G. Mecca - [email protected] - Basi di Dati


Esempi10

Studenti relatore = cod Professori ))

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Cognome e nome dei professori ordinari che non supervisionano tesi triennali”

  • Risultato =r cognome AS cognomeProf, nome AS nomeProf(

  • p cognome, nome (

  • squalifica = ‘Ordinario’ (Professori))

  • p cognome, nome (

  • sciclo = ‘laurea tr.’ (

G. Mecca - [email protected] - Basi di Dati


Esempi11

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Cognome e nome dei professori ordinari che non supervisionano tesi triennali”

SELECT cognome AS cognomeProf, nome AS nomeProf

FROM Professori

WHERE qualifica=‘ordinario’

EXCEPT

SELECT cognome, nome

FROM Studenti JOIN Professori ON relatore=cod

WHERE ciclo=‘laurea tr.’;

G. Mecca - [email protected] - Basi di Dati


Esempi12

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Cognomi e nomi degli studenti che all’esame di Programmazione hanno riportato un voto superiore a quello dei loro tutor”

  • Tabelle coinvolte

    • Studenti, Esami

    • Tutorato, Esami AS EsamiTutor

G. Mecca - [email protected] - Basi di Dati


Esempi13

Risultato = pcognome, nome (

sEsami.corso=‘Pr1’ AND EsamiTutor.corso=‘Pr1’ AND Esami.voto > EsamiTutor.voto (

Studenti matr=studente Esami

matr=Tutorato.studente Tutorato

Tutorato.tutor=EsamiTutor.studente (Esami AS EsamiTutor)))

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Studenti e tutor” (continua)

G. Mecca - [email protected] - Basi di Dati


Esempi14

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Esempi

  • “Studenti e tutor” (continua)

SELECT cognome, nome

FROM Studenti JOIN Esami ON matr=studente

JOIN Tutorato ON matr=Tutorato.studente

JOIN Esami AS EsamiTutor ON Tutorato.tutor = EsamiTutor.studente

WHERE Esami.corso=‘Pr1’ AND EsamiTutor.corso=‘Pr1’ AND Esami.voto > EsamiTutor.voto;

G. Mecca - [email protected] - Basi di Dati


Interrogazioni8

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Interrogazioni

  • Nota

    • una interrogazione particolare

    • SELECT * FROM R;es: SELECT * FROM Corsi;

    • preleva i dati dalla tabella R senza applicare nessun operatore

    • è il modo con cui in un DBMS SQL si visualizza interattivamente il contenuto di una tabella

G. Mecca - [email protected] - Basi di Dati


Interrogazioni metodo di scrittura

SQL-92 >> Concetti Fondamentali >> Interrogazioni

Interrogazioni: Metodo di Scrittura

  • Scrivere l’interrogazione in algebra relazionale utilizzando la forma standard

  • Tradurre gli operatori nella sintassi di SQL

  • Bisogna scegliere tra

    • strategia a: prodotti cartesiani

    • strategia b: join

    • in generale è più efficiente la seconda

G. Mecca - [email protected] - Basi di Dati


Cancellazioni

SQL-92 >> Concetti Fondamentali >> Cancellazioni

Cancellazioni

  • Istruzione del DML

    • DELETE

  • Sintassi

    • DELETE FROM <tabella> [<clausola WHERE>];

    • <clausola WHERE>: identica a quella vista

  • Semantica

    • elimina dalla tabella tutte le ennuple (che soddisfano la condizione se è specificata)

G. Mecca - [email protected] - Basi di Dati


Cancellazioni1

SQL-92 >> Concetti Fondamentali >> Cancellazioni

Cancellazioni

  • Esempi:

    DELETE FROM Numeri;

    DELETE FROM Studenti WHERE matr=111;

    DELETE FROM CorsiWHERE ciclo=‘laurea tr.’ AND docente=‘FT’;

G. Mecca - [email protected] - Basi di Dati


Aggiornamenti

SQL-92 >> Concetti Fondamentali >> Aggiornamenti

Aggiornamenti

  • Istruzione del DML

    • UPDATE

  • Sintassi

    • UPDATE <tabella> SET <attributo>=<espressione>[<clausola WHERE>]

  • Semantica

    • aggiorna il valore dell’attributo di tutte le ennuple (che soddisfano la condizione se è specificata)

G. Mecca - [email protected] - Basi di Dati


Aggiornamenti1

SQL-92 >> Concetti Fondamentali >> Aggiornamenti

Aggiornamenti

  • Esempi:

    UPDATE Studenti SET anno=anno+1;

    UPDATE Studenti SET matr=11111WHERE matr=111;

    UPDATE Corsi SET docente=‘VC’ WHERE ciclo=‘laurea tr.’ AND docente=‘FT’;

G. Mecca - [email protected] - Basi di Dati


Concetti fondamentali1

Introduzione

Creazione ed eliminazione di bd

Creazione ed eliminazione di tabelle

Inserimenti di ennuple

Interrogazioni

clausola SELECT

clausola FROM

clausola WHERE

clausola ORDER BY

metodo di scrittura

Cancellazioni

Aggiornamenti

SQL-92 >> Sommario

Concetti Fondamentali

G. Mecca - [email protected] - Basi di Dati


Basi di dati

SQL-92 >> Concetti Fondamentali >> La Base di Dati di Esempio

CREATE TABLE Professori (

cod char(4) PRIMARY KEY,

cognome varchar(20) NOT NULL,

nome varchar(20) NOT NULL,

qualifica char(15),

facolta char(10) );

CREATE TABLE Tutorato (

studente integer

REFERENCES Studenti(matr),

tutor integer

REFERENCES Studenti(matr),

PRIMARY KEY (studente,tutor));

CREATE TABLE Esami (

studente integer

REFERENCES Studenti(matr)

ON DELETE cascade

ON UPDATE cascade,

corso char(3)

REFERENCES Corsi(cod),

voto integer,

lode bool,

CHECK (voto>=18 and voto<=30),

CHECK (not lode or voto=30),

PRIMARY KEY (studente, corso));

CREATE TABLE Studenti (

matr integer PRIMARY KEY,

cognome varchar(20) NOT NULL,

nome varchar(20) NOT NULL,

ciclo char(20),

anno integer,

relatore char(4)

REFERENCES Professori(cod)

);

CREATE TABLE Corsi (

cod char(3) PRIMARY KEY,

titolo varchar(20) NOT NULL,

ciclo char(20),

docente char(4)

REFERENCES Professori(cod)

);

CREATE TABLE Numeri (

professore char(4)

REFERENCES Professori(cod),

numero char(9),

PRIMARY KEY (professore,numero));

G. Mecca - [email protected] - Basi di Dati


Basi di dati

SQL-92 >> Concetti Fondamentali >> La Base di Dati di Esempio

G. Mecca - [email protected] - Basi di Dati


Basi di dati

SQL-92 >> Concetti Fondamentali >> La Base di Dati di Esempio

Professori

Studenti

Corsi

G. Mecca - [email protected] - Basi di Dati


Basi di dati

SQL-92 >> Concetti Fondamentali >> La Base di Dati di Esempio

Tutorato

Numeri

Esami

G. Mecca - [email protected] - Basi di Dati


Termini della licenza

Termini della Licenza

Termini della Licenza

  • This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

  • Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

G. Mecca - [email protected] - Basi di Dati


  • Login