Anteprima
Vedrai una selezione di 16 pagine su 75
Basi di dati Pag. 1 Basi di dati Pag. 2
Anteprima di 16 pagg. su 75.
Scarica il documento per vederlo tutto.
Basi di dati Pag. 6
Anteprima di 16 pagg. su 75.
Scarica il documento per vederlo tutto.
Basi di dati Pag. 11
Anteprima di 16 pagg. su 75.
Scarica il documento per vederlo tutto.
Basi di dati Pag. 16
Anteprima di 16 pagg. su 75.
Scarica il documento per vederlo tutto.
Basi di dati Pag. 21
Anteprima di 16 pagg. su 75.
Scarica il documento per vederlo tutto.
Basi di dati Pag. 26
Anteprima di 16 pagg. su 75.
Scarica il documento per vederlo tutto.
Basi di dati Pag. 31
Anteprima di 16 pagg. su 75.
Scarica il documento per vederlo tutto.
Basi di dati Pag. 36
Anteprima di 16 pagg. su 75.
Scarica il documento per vederlo tutto.
Basi di dati Pag. 41
Anteprima di 16 pagg. su 75.
Scarica il documento per vederlo tutto.
Basi di dati Pag. 46
Anteprima di 16 pagg. su 75.
Scarica il documento per vederlo tutto.
Basi di dati Pag. 51
Anteprima di 16 pagg. su 75.
Scarica il documento per vederlo tutto.
Basi di dati Pag. 56
Anteprima di 16 pagg. su 75.
Scarica il documento per vederlo tutto.
Basi di dati Pag. 61
Anteprima di 16 pagg. su 75.
Scarica il documento per vederlo tutto.
Basi di dati Pag. 66
Anteprima di 16 pagg. su 75.
Scarica il documento per vederlo tutto.
Basi di dati Pag. 71
1 su 75
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

PREGI E DIFETTI

Un vantaggio del calcolo sui domini è la dichiaratività. I contro sono la verbosità e la possibilità di avere espressioni senza senso. NOT R(A:x) = si vuole nel risultato, per A, tutte le tuple della relazione in cui non vale a di x (nomi di impiegati che non appaiono nella tabella impiegati). Queste espressioni sono dipendenti dal dominio e si vorrebbe evitarle; nell'algebra le espressioni come queste non sono formulabili, perché è indipendente dal dominio.

CALCOLO RELAZIONALE SU TUPLE

Le espressioni del calcolo su tuple con dichiarazioni di range hanno la forma: {T | L | f}, dove:

  • L è la range list, che elenca le variabili libere di f con i relativi campi di variabilità
  • T è la target list, con elementi del tipo Y:x.Z, con x variabile e Y e Z sequenze di attributi di pari lunghezza
  • F è una formula

Q: trovare matricola, nome, età e stipendio degli impiegati che guadagnano

più di 4000 Euro. Nel calcolo relazionale sui domini:

Nel calcolo relazionale su tuple:

Q: trovare le matricole dei capi degli impiegati che guadagnano più di 4000 Euro. Nel calcolo relazionale suidomini:

Nel calcolo relazionale su tuple: 57

CALCOLO E ALGEBRA RELAZIONALE

Calcolo e algebra sono sostanzialmente equivalenti: l’insieme di interrogazioni con essi esprimibili è quindisignificativo; si dice essere un linguaggio relazionalmente completo. Ci sono però interrogazioni interessantinon esprimibili:

  • Calcolo di valori derivati: si possono solo estrarre valori, non calcolarne di nuovi;
  • Interrogazioni ricorsive, come la chiusura transitiva.

SQL

SQL è un linguaggio di definizione e di manipolazione dei dati. In quanto linguaggio di manipolazione, SQLpermette di selezionare dati di interesse dalla base e di aggiornarne il contenuto.

SQL è un linguaggio dichiarativo: esso permette di specificare cosa cercare senza dire come. Quando

Un'interrogazione (query) viene eseguita dall'elaboratore di interrogazioni (query processor), essa viene tradotta in un linguaggio procedurale interno al sistema, il quale permette di specificare come accedere ai dati. È quindi bene che l'utente si concentri sull'obiettivo della propria ricerca, cercando di scrivere interrogazioni leggibili e modificabili, delegando tutti gli aspetti procedurali e di efficienza al DBMS.

Il vantaggio di poter scrivere interrogazioni ad alto livello (pensando allo schema logico e non alla sua realizzazione fisica) è una conseguenza dell'indipendenza fisica dei dati dei DBMS relazionali.

Un'interrogazione SQL viene eseguita su una base di dati, quindi su un insieme di tabelle collegate tra loro mediante il meccanismo delle chiavi esterne. Il risultato di un'interrogazione è una tabella.

FUNZIONI DI DDL

La parte di SQL che implementa le funzioni di DDL, che permettono di progettare, manipolare e distruggere quelle

strutture che contengono i dati. <CREATE TABLE> Questa istruzione serve a creare una tabella:
  • Definisce uno schema di relazione e ne crea un'istanza vuota
  • Specifica attributi, domini e vincoli
Quando si è terminata la fase di progettazione, le tabelle si inseriscono nel DB con l'istruzione <CREATE TABLE>. Parole chiave per dichiarare i tipi di dato:
  • <CHAR(n)> - Stringhe di n caratteri. Se la stringa ha meno di n caratteri verranno aggiunti degli spazi.
  • <VARCHAR(n)> - Stringhe di massimo n caratteri. Non viene allocato uno spazio di memoria fisso.
  • <NUMERIC(n)> - Numero con n cifre
  • <DATE> - Dati di tipo temporale
Esempio:
  • In un campo dichiarato con il vincolo NOT NULL non è possibile non inserire un valore.
  • Il vincolo PRIMARY KEY permette di dichiarare un campo come chiave primaria (campo il cui valore rappresenta in maniera univoca la riga, non si possono avere due valori uguali nella chiave primaria).
  • La FOREIGN KEY di una tabella rappresenta la chiave

primaria della tabella master a cui è associata;

  • Il vincolo UNIQUE non permette di inserire nella stessa colonna più di una volta lo stesso valore.

Come si specifica che la chiave è composta da due attributi? PRIMARY KEY (attr1, attr2).

ALTER TABLE

Molte volte nasce la necessità di modificare una tabella già esistente modificando il tipo e il nome di una colonna o aggiungendone una nuova.

Aggiungere un campo: ALTER TABLE X ADD NOTE VARCHAR (2000);

Si può usare per rinominare una tabella: ALTER TABLE nome_tabella RENAME TO nuovo_nome_tabella; oppure: RENAME TABLE nome_tabella TO nuovo_nome_tabella;

È anche possibile rinominare più tabelle contemporaneamente.

Cambiare charset: ALTER TABLE nome_tabella CONVERT TO CHARACTER SET utf8;

Aggiungere una nuova colonna: ALTER TABLE x ADD COLUMN colonnaX VARCHAR(n);

In questo modo la colonna verrà collocata in fondo, se si vuole avere all'inizio, basterà mettere FIRST dopo.

La dichiarazione del tipo. Oppure se si volesse mettere dopo la colonna a, basterà scrivere AFTER a.Cancellare una colonna:

ALTER TABLE x DROP COLUMN colonnaX;

Rinominare una colonna:

ALTER TABLE x CHANGE colonna_x nuovoNome INT(n);

In questo modo si rinomina la colonna "colonna_x" in "nuovoNome"

Per verificare il buon esito delle modifiche si dovrà usare DESCRIBE nomeTabella; così facendo verrà restituita la struttura attuale della tabella con gli attributi, il rispettivo datatype, la lunghezza, valori di default, chiavi, ecc..

DDL, IN PRATICA

Il molti sistemi si utilizzano strumenti diversi dal codice SQL per definire lo schema della base di dati.

FUNZIONI DI DML

Il DML Data Manipulation Language è un insieme di linguaggi che consente di leggere, inserire, modificare o eliminare i dati in un database. Il linguaggio di manipolazione dati più utilizzato è l'SQL (Structured Query Language), che trova il suo maggiore campo

Il comando INSERT ha la funzione di inserire i dati nelle tabelle.

Ecco la sintassi:

INSERT INTO "nome_della_tabella" ("colonna_1", "colonna_2", ...)
VALUES ("valore_1", "valore_2", ...);

È possibile inserire dei dati prendendoli da un'altra tabella:

INSERT INTO "nome_tabella" ("colonna_1", "colonna_2", ...)
SELECT colonna1, colonna2, ...
FROM nome_tabella1
WHERE condizione;

La selezione e la proiezione sono valori unari. La selezione è un operatore relazionale che si applica a una tabella e fornisce come risultato un'altra tabella di grado uguale, ma di cardinalità minore o uguale, contenente le tuple che soddisfano alla condizione specificata. La selezione lavora sulle righe.

Ecco un esempio di SELECT:

SELECT * // selezione senza proiezione
FROM Dipendente
WHERE Funzione = 'Impiegato';

La proiezione è un operatore ha in

Proiezione
SELECT Cognome, Nome
FROM Dipendente;

JOIN

Il join viene utilizzato per combinare righe da due o più tabelle, in base a una colonna correlata tra di loro.

Ci sono diversi tipi di JOIN in SQL:

  • INNER JOIN: restituisce i record che hanno valori corrispondenti in entrambe le tabelle;
  • LEFT (OUTER) JOIN: restituisce tutti i record dalla tabella di sinistra e i record corrispondenti dalla tabella di destra;
  • RIGHT (OUTER) JOIN: Restituisce tutti i record dalla tabella di destra e i record corrispondenti dalla tabella di sinistra;
  • FULL (OUTER) JOIN: Restituisce tutti i record quando c'è una corrispondenza nella tabella sinistra o destra

Gli inner join possono essere specificati nelle clausole FROM o WHERE. Gli outer join e i cross join possono essere specificati solo nella clausola FROM.

ORDINAMENTO DEL

RISULTATO La clausola, ORDER BY, ci permette di elencare i risultati ottenuti in un certo ordine. Per default, la clausola ORDER BY restituisce le righe selezionate in ordine crescente rispetto alle colonne specificate. Se desideriamo invece restituire i valori in ordine decrescente rispetto ad un campo, dobbiamo specificare la parola DESC alla destra del nome di colonna. UNIONE, INTERSEZIONE E DIFFERENZA Gli operatori di definizione UNION, INTERSECT ed EXCEPT vengono utilizzati per confrontare e unire i risultati di due espressioni di query separate.
  • UNION: Produce l'unione dei dati presenti in due colonne (attributi) di una o più tabelle, senza valori duplicati;
  • INTERSECT: Produce l'intersezione dei dati presenti in due colonne (attributi) di una o più tabelle, ossia i valori presenti in entrambe le colonne, escludendo i valori duplicati;
  • EXCEPT: Calcola la differenza dei valori tra due colonne (attributi) in due o più tabelle, ossia i valori presenti nella prima colonna ma non nella seconda, escludendo i valori duplicati.

valoridella prima colonna senza quelli della seconda, senza i valori duplicati.Per mantenere anche i duplicati è necessario aggiungere ALL.Gli operatori insiemistici del linguaggio SQL sono simili a quelli disponibili in algebra relazionale. Tuttavia, a differenza dell'algebra relazionale, in SQL non è necessario che gli attributi abbiano lo stesso schema. E' sufficiente che siano domini compatibili e gli attributi siano dello stesso numero. Il nome degli attributi può anche essere diverso.

CONDIZIONI

CONDIZIONE LIKE

Nel linguaggio SQL l'operatore di confronto LIKE mi permette di analizzare il contenuto parziale di una stringa. Si usa nella condizione WHERE delle interrogazioni SELECT. L'operatore LIKE utilizza due caratteri speciali da inserire dentro le stringhe:

  • Percentuale (%): sostituisce un insieme di caratteri in una stringa; ad esempio: Con l'operatore di confronto LIKE la stringa "Ro%a" seleziona tutte le parole di

qualsiasi lunghezza che iniziano per "Ro" e finiscono in "a";

Trattino sottolineato (_): sostituisce un carattere in una stringa; ad esempio: Con l'operatore di confronto LIKE la stringa "Ro_a" seleziona le parole di 4 lettere che iniziano per "Ro" e terminano in "a"

Esempio: cercare in un DB chi ha nome simile ad "anna":

SELECT * FROM tabella WHERE nome LIKE '%anna%';

Il risultato dell'interrogazione sarà una lista di alunni con nome simile e comprensivo della parola 'anna'. Ad esempio: Annalaura, Anna, Marianna...

Può capitare il caso in cui il carattere underscore sia compreso nei dati della tabella. Ad esempio, ipotizziamo che alcuni nomi siano scritti nel seguente modo "Anna_Laura", "Anna_Maria" ecc. In questi casi è necessario

Dettagli
A.A. 2020-2021
75 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher AliceAcquistapace di informazioni apprese con la frequenza delle lezioni di Basi di dati e web e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Milano o del prof Bettini Claudio.