top of page

Caratteristiche generali del linguaggio SQL 

 

Il linguaggio SQL è il linguaggio usato per la gestione dei database relazionali, cioè dei database creati con un DBMS di tipo relazionale.Tale linguaggio standard ha come obiettivo quello di fornire alle diverse aziende un linguaggio comune da usare per creare database compatibili con i diversi DBMS in circolazione come: Access SQL, MySQL, SQL Informix, DBII SQL, Postgre SQL, ecc. Esso serve a definire la struttura delle tabelle di un database, sfruttando i comandi del linguaggio DDL (Data Definition Language); a manipolare i dati contenuti nel database, sfruttando i comandi del DML (Data Manipulation Language); a porre interrogazioni al database sfruttando i comandi del QL (Query Language) e, infine, a gestire gli accessi e i permessi per gli utenti, sfruttando i comandi del DCL (Data Control Language).

 

Gli operatori relazionali

 

Agiscono su una o più relazioni per ottenere una nuova relazione (servono a realizzare le interrogazioni sul database) .

Ci sono tre operazioni fondamentali per i database relazionali:

  •  Selezione 

  •  Proiezione 

  •  Congiunzione 

 

 

 

 

 

La selezione (select) genera una nuova relazione costituita solo dalle n-tuple della relazione di partenza che soddisfano a una determinata condizione; vengono cioè selezionate le righe con i valori degli attributi corrispondenti alla condizione prefissata. 

La relazione ottenuta ha: 

  • grado uguale 
  • cardinalità minore o uguale (di solito minore) 

 

 

esempio

esempio

La proiezione (project) genera una nuova relazione estraendo dalla tabella iniziale due o più colonne corrispondenti agli attributi prefissati. 

La relazione risultante ha: 

 

  • grado minore o uguale 

  • cardinalità minore o uguale a quella di partenza (perché le righe uguali vengono ridotte a una). 

Tipi di congiunzione (join)

  • equi-join : corrispondenza di valori uguali per attributi comuni nelle due tabelle. 

  • join esterno (outer join) : restituisce le righe dell’una e dell’altra tabella anche se non sono presenti valori uguali per l’attributo comune; di tutte queste vengono combinate solo le righe per le quali il valore dell’attributo comune nella prima tabella trova un valore uguale nella colonna dell’attributo comune nella seconda tabella. 

  • left join : elenca comunque tutte le righe della prima tabella congiungendo alle righe della seconda solo quelle per le quali si trovano valori corrispondenti per l’attributo comune. 

  • right join : restituisce comunque tutte le righe della seconda tabella e di queste congiunge con le righe della prima tabella solo quelle per le quali si possono trovare valori corrispondenti per l’attributo comune. 

  • self-join : vengono combinate righe di una tabella con le righe della stessa tabella quando sono presenti valori corrispondenti per attributi, cioè due attributi con lo stesso dominio.

     

     

     

     

     

     

     

     

     

Esempio

 

STUDENTI PROVENIENTE DA MACERATA NELLA CLASSE 5A

Abbiamo 3 possibili condizioni:

 CONDIZIONE 1: Nessuno.

CONDIZIONE 2: N studenti.

CONDIZIONE 3: Tutti.

Perciò bisognerebbe effettuare una ricerca.

La selezione lavora sulla cardinalità della tabella. 

Effettuare una ricerca con una condizione

 

SELECT  nome_campo, nome_campo

FROM  nome_tabella, nome_tabella

WHERE condizione

 

Esempio

 

SELECT nome, cognome

FROM  studente

WHERE citta="Macerata"

Sia sul SELECT sia sul FROM possiamo mettere più campi. Se più di una tabella hanno un attributo con lo stesso nome, la sintassi cambia.

Esempio

SELECT studente.nome, studente.cognome              PROIEZIONE------ELENCO DEI CAMPI CHE

                                                                                              DEVONO VISUALIZZARE                           

FROM studente. istituti

WHERE istituto.nome="Itis" AND istituto.nome="Ipsia";

      CONGIUNZIONE TRA LE DUE TABELLE

 

Per stampare tutti i campi della tabella:

SELECT *

FROM studente, istituto

WHERE  istituto.nome="Itis" AND istituto.nome="Ipsia";

Con * stampo tutti i campi sul output del entrambe le tabelle.

esempio

bottom of page