Caricare documenti e articoli online 
INFtub.com è un sito progettato per cercare i documenti in vari tipi di file e il caricamento di articoli online.


 
Non ricordi la password?  ››  Iscriviti gratis
 

L'SQL (Structured Query Language) - DBMS (tipo Access)

informatica



L'SQL (Structured Query Language) è il linguaggio standard per la manipolazione dei db su qualsiasi DBMS (tipo Access).

Qui ci limitiamo nel fornire una breve descrizione dei principali comandi SQL.
Con l'SQL è possibile creare una tabella, modificarne la struttura o cancellarla, effettuare ricerche, inserire nuovi dati, modificare o cancellare dati esistenti.
E' possibile mettere in relazione due o più tabelle in funzione della struttura delle tabelle e delle esigenze. l'SQL è un linguaggio molto sem 717h73h plice che si avvicina in maniera impressionante al linguaggio umano e lo stesso utilizzo di un DBMS non è di particolare complessità, la difficoltà di essere un buon progettista di db è quella di avere conoscenza di cosa vuol dire gestire e progettare un db e per questo diventa indispensabile la conoscenza dei modelli relazionali.

Gli operatori messi a disposizione dall’SQL sono:


operatori di confronto che servono a determinare uguaglianze e disuguaglianze tra valori e ad effettuare ricerche all'interno dei dati:



uguaglianza tra due valori

LIKE   somiglianza tra due valori

< un valore è minore di un altro

> un valore è maggiore di un altro

<=  un valore è minore o uguale di un altro

>=  un valore è maggiore o uguale di un altro

<>  due valori sono diversi tra loro

BETWEEN un valore compreso tra due valori


operatori aritmetici che effettuano calcoli :
peratore Descrizione

addizione

sottrazione

moltiplicazione

divisione

l'unico operatore condizionale di SQL è WHERE e serve a definire criteri di ricerca mirati.

Gli operatori logici di SQL sono AND (E) e OR (O, OPPURE). And risulta vero se entrambe le condizioni sono vere, Or restituisce il valore vero se almeno una delle due condizioni è vera.


I tipi di dato messi a disposizione da Access per l'SQL sono i seguenti:

Tipo Access Descrizione

AutoIncrement Contatore, si incrementa automaticamente di una unità quando viene aggiunto un record e non rigenera mai un numero quando un record viene cancellato

Text    Testo   Testuale, accetta fino a 255 caratteri

Memo  Memo  Testuale, accetta diverse migliaia di caratteri Integer Numerico numeri interi

Float    Numerico numeri a precisione singola

Double    Numerico  numeri a precisione doppia

Byte Numerico numeri interi ma occupa meno memoria di un Integer

Currency Valuta Formatta un numero nel formato della valuta selezionata (£, €, $, ecc...)

DateTime    Data/ora  Imposta vari format (numerici e/o alfanumerici) per la data e l'ora

Bit    Si/No   Booleano, restituisce True o False


Vediamo ora in dettaglio alcuni, tra i basilari, comandi SQL.


CREARE UNA TABELLA:

La sintassi per la creazione di una tabella è la seguente:


CREATE TABLE nometabella

(nomecampo1 tipocampo1,

nomecampo2, tipocampo2,



Esempio: creiamo le tabelle Corsi e Studenti del seguente modello relazionale:


Corsi (codicecorso , nome, docente, numeroore)

Studenti (matricola, nome, cognome, età, codCorso)


Le due tabelle hanno ciascuna una chiave primaria ma Studenti riceve la chiave esterna da Corsi allora avremo:


CREATE TABLE Corsi

(codicecorso integer not null PRIMARY KEY,

nome text,

docente text,

numeroore integer);


CREATE TABLE Studenti

(matricola integer not null PRIMARY KEY,)

nome text,

cognome text,

età integer,

codCorso integer REFERENCE Corsi(codicecorso));


MODIFICARE LA STRUTTURA DI UNA TABELLA

Per modificare la struttura di una tabella, per esempio aggiungere un campo,

si usa:


ALTER TABLE nometabella ADD nomecampo tipocampo;


Ad esempio: supponiamo di voler aggiungere il campo classe di tipo text alla tabella Studenti:


ALTER TABLE Studenti

ADD classe text;


Per modificare il tipo di un campo, per esempio classe da tipo text a tipo memo:


ALTER TABLE Studenti MODIFY classe Memo;


Per cancellare un campo, per esempio eliminare il campo classe:


ALTER TABLE Studenti DROP classe


CANCELLARE UNA TABELLA

Per cancellare una tabella si usa:


DROP TABLE nometabella;

Ovviamente trattasi di una cancellazione fisica quindi attenzione!


INSERIRE DATI IN UNA TABELLA

Per inserire dati (cioè istanze) in una tabella si usa:


INSERT INTO nometabella (elenco campi)
VALUES (‘ elenco valori’);


Ad esempio, per inserire una istanza nella tabella Corsi farò:


INSERT INTO Corsi (codicecorso, nome, docente, numeroore)
VALUES (‘3’,’patentino’,’Rossi Paolo’,’30’)


AGGIORNARE DATI DI UNA TABELLA

Per aggiornare i dati di una tabella si utilizza l'istruzione:


UPDATE nometabella

SET nomecampo = ‘valore’ (o formula di ricalcolo)

WHERE condizione;


Ad esempio, supponiamo di voler modificare l’età dello studente Marco Rosi da 65 a 25 perchè inserita erroneamente, farò:

UPDATE Studenti

SET età = 25

WHERE nome=”Marco” and cognome=”Rosi”;


Altro esempio, questa volta con utilizzo di una formula: voglio modificare le ore di tutti i corsi incrementandole del 10%, farò:


UPDATE Corsi

SET numeroore = numeroore * 1,10


CANCELLAZIONE DATI

Per cancellare I dati da una tabella si usa il commando:


DELETE elenco campi da cancellare

FROM nometabella

WHERE condizione;


Ad esempio, supponiamo di voler cancellare dalla tabella Studenti l’istanza Marco Rosi, farò:


DELETE *

FROM Studenti

WHERE nome=”Marco” AND Cognome=”Rosi”

(Utilizzare questo comando con attenzione per evitare perdita di dati non voluta)


INTERROGAZIONI DI UN DB

Vediamo ora con quali istruzioni si interroga un db.


L’istruzione da utilizzare è:


SELECT nomi campi da visualizzare

FROM nome tabella

WHERE condizione;


Il Where (cioè l’espressione della condizione di ricerca) potrebbe non esserci nel caso si facesse una proiezione e non una selezione.


Vediamo alcuni esempi.

Supponiamo di volere l’elenco di tutti gli studenti con indicazione del nome e del cognome. L’istruzione sarà:


SELECT nome, cognome

FROM Studenti


Questa è una proiezione (isolo solo alcune colonne della tabella d’origine) quindi non è presente il “where”, cioè non c’è nessun criterio di ricerca.

Se volevo l’elenco di tutti gli studenti visualizzando tutte le informazioni possibili, cioè tutte quelle della tabella, allora potevo utilizzare:


SELECT matricola, nome, cognome, età, codicecorso

FROM Studenti


Oppure più semplicemente:


SELECT  Studenti.*

FROM Studenti


In sostanza il simbolo ‘*’ sostituisce l’elenco di tutti i campi della tabella.


Supponiamo ora di volere l’elenco di tutti gli studenti, con indicazione di nome e cognome, della classe 5 a Inf. Avrò:


SELECT nome, cognome

FROM  Studenti

WHERE classe=”5 a Inf”;


In questo caso si tratta di una selezione (voglio isolare alcune righe della tabella d’origine e precisamente quelle che soddisfano il criterio classe = 5 a Inf. )

Precisiamo che effettuando una ricerca in funzione di un dato di tipo numerico non dobbiamo utilizzare gli apici per racchiudere il valore.


Volendo possiamo inserire anche più condizioni, utilizzando gli operatori logici, supponiamo ad esempio di volere l’elenco con indicazione di nome e cognome di tutti gli studenti della 5 a Inf che hanno età inferiore a 45 anni:


SELECT nome, cognome

FROM Studenti

WHERE classe=5 a Inf AND età<45


Uno tra gli operatori più importanti è l’operatore LIKE. Like, in alcuni casi, può risultare piuttosto utile quando ad esempio si vuole impostare la ricerca su una stringa di cui per esempio non si conosce l’intero contenuto.

Ad esempio: voglio conoscere il nome, il cognome e la classe dello studente il cui cognome inizia per “Ma.....”:


SELECT nome, cognome, classe

FROM Studenti

WHERE cognome LIKE ‘Ma*’;


Naturalmente rivestono un ruolo determinante anche i caratteri jolly (*).


Altro operatore importante è il Between, ad esempio se voglio trovare nome cognome di tutti gli studenti la cui età è compresa tra 35 e 45 anni farò:

SELECT nome, cognome

FROM Studenti

WHERE età BETWEEN 35 AND 45;


(Viene usato moltissimo per i criteri impostati sulle date).


Fin qui selezioni che hanno ad oggetto una sola tabella.

Cosa succede se vengono coinvolte più tabelle?

Supponiamo per esempio di volere l’elenco degli studenti con nome e cognome del corso tenuto dal docente Paolo Rossi. In questo caso alcune informazioni provengono dalla tabella Studenti (nome e cognome) ma altre (docente) su cui imposterò la condizione provengono dalla tabella Corsi.

In questo caso avrò:


SELECT nome, cognome

FROM Studenti, Corsi

WHERE  docente =”Paolo Rossi”

And CodCorso=codicecorso;


Si noti quanto segue:

- dopo Select sono elencati i campi che voglio visualizzare,

- dopo From sono elencate le tabelle coinvolte,

- nel where ritrovo due condizioni, la prima è quella di ricerca vera e propria, la seconda è quella che esprime la relazione tra le due tabelle (cioè l’uguaglianza della chiave primaria di Corsi e della chiave esterna su Studenti).


Una scrittura alternativa, ma forse più complessa, è la seguente:


SELECT nome, cognome

FROM Corsi INNER JOIN Studenti ON codicecorso=CodCorso

WHERE docente=”Paolo Rossi”;


ALCUNE FUNZIONALITA’

Tra le più importanti troviamo:


ORDER BY che permette di ordinare,

GROUP BY che permette di raggruppare.


Ad esempio supponiamo di volere l’elenco di tutti gli studenti (con indicazione di nome e cognome) ordinato per cognome:


SELECT nome, cognome

FROM studenti

ORDER BY cognome;




Ad esempio, supponiamo di volere l’elenco degli studenti (con indicazione di nome e cognome) raggruppati per classe:


SELECT nome, cognome

FROM studenti

GROUP BY classe;


FUNZIONI DI AGGREGAZIONE

Di particolare importanza risultano essere le funzioni di aggregazione.

Le funzioni di aggregazioni sono funzioni standard native di SQL che permettono di ottenere valori numerici e/o effettuare calcoli in funzione di query specifiche. Di seguito l'elenco delle funzioni di aggregazione di SQL :

AVG() Restituisce la media tra due valori specificati

COUNT() Restituisce un intero che indica il numero di record trovati

MAX() Restituisce il valore massimo tra due valori

MIN() Restituisce il valore minimo tra due valori

SUM() Restituisce la somma tra più record dello stesso campo


Facciamo subito qualche esempio:

voglio conoscere l’età media dei miei studenti.


SELECT AVG(età) AS età media

FROM Studenti;


nell’esempio si noti anche l’uso di un alias (mediante AS) assegnato al campo che contiene il risultato cercato.


voglio conoscere l’età media degli studenti della 5 a Inf.

Per quanto visto fino ad ora potremmo scrivere:


SELECT AVG(età) AS età media

FROM Studenti

WHERE classe = “5 a Inf”


In realtà però quando sono usate delle funzioni il Where viene sostituito dal raggruppamento e dall’Having e quindi l’espressione corretta diventa:


SELECT AVG(età) AS età media

FROM Studenti

GROUP BY classe

HAVING classe = “5 a Inf”;







voglio sapere quanti studenti frequentano la classe 5 a Inf:


SELECT Count(matricola) AS Numero Studenti

FROM Studenti

GROUP BY classe

HAVING classe = “5 a Inf”;


In questo caso è stata usata la funzione conteggio Count che restituisce il numero di record trovati che soddisfano la condizione indicata (in genere questa funzione si usa applicandola al campo chiave di una tabella).





Privacy




Articolo informazione


Hits: 2165
Apprezzato: scheda appunto

Commentare questo articolo:

Non sei registrato
Devi essere registrato per commentare

ISCRIVITI



Copiare il codice

nella pagina web del tuo sito.


Copyright InfTub.com 2024