MSN Home  |  My MSN  |  Hotmail
Sign in to Windows Live ID Web Search:   
go to MSNGroups 
Groups Home  |  My Groups  |  Language  |  Help  
 
Programmazione Visual Basic.NetProgrammazioneVisualBasic-Net@groups.msn.com 
  
What's New
  Join Now
  Regolamento MSN  
  General  
  ? FORUM  
  ?Tips & Tricks  
  Visual Basic.NET (2003)  
  ? Cenni DataBase  
  ? SQL  
  ? Framework.NET  
  ? Ado.Net (1.1)  
  Visual Basic.Net (2005)  
  ? Notizie  
  ?Eventi&Convegni  
  ? LIBRI  
  ? Link Utili  
  ? Software  
  Documents  
  ?IndiceBacheche  
  ? Tutti i Post  
  ? Poesia d'Amore  
  ? Spazio & Vita  
  ? Blog's Sonia  
  
  
  Tools  
 

SQL - Structured Query Language

SQL è il linguaggio standard utilizzato dai più diffusi DBMS relazionali per effettuare determinate operazioni. Operazioni che comprendono l'interrogazione, la riorganizzazione e l'esecuzioni di comandi sui database. SQL è basato sul concetto di vista. Una vista è una tabella virtuale, i cui record sono composti da campi che nel database fisico possono appartenere a uno o più record. SQL dispone di comandi con i quali si possono creare tabelle con record i cui campi sono interamente nuovi o sono ricavati da record esistenti. Le tabelle create in questo modo non sono viste, ma tabelle fisiche, dette tabelle di base. Il linguaggio SQL  è articolato in comandi o istruzioni con i quali si formano enunciati. Alcuni comandi consentono o impongono, a seconda dei casi, l'uso di qualificatori chiamati clausole e predicati. I comandi sono tutti verbi inglesi (SELECT, CREATE...etc.) e le clausole sono preposizioni e particelle della stessa lingua (FROM, AS, IN...etc.). Le istruzioni del linguaggio SQL ANSI si dividono in sei categorie:

-Istruzioni DQL (Data Query Language). Definite anche istruzioni di recupero dati, richiamano i dati dalle tabelle e stabiliscono come tali dati debbano essere presentati all'applicazione (SELECT, WHERE, ORDER BY...etc).

-Istruzioni DML (Data Manipulation Language). Includono le voci verbali INSERT, UPDATE e DELETE, che agiscono sulle righe delle tabelle. I verbi delle istruzioni DML consentono di costruire query di azione (non restituiscono record).

- Istruzioni TPL (Transaction Processing Language). Consentono di accertarsi che tutte le righe interessate da un'istruzione DML vengano aggiornate contemporaneamente. Le istruzioni TPL includono  BEGIN TRANSACTION, COMMIT e ROLLBACK.

-Istruzioni DCL (Data Control Language). Stabiliscono l'accesso dei singoli utenti e dei gruppi di utenti agli oggetti del database mediante concessione (GRANT) o revoca (REVOKE) di autorizzazioni. Alcuni sistemi di gestione dei database relazionali consentono di applicare il GRANT e il REVOKE delle autorizzazioni anche a singole colonne di tabelle.

-Istruzioni DDL (Data Definition Language). Consentono di  creare nuove tabelle in un database (CREATE TABLE), aggiungere indici e tabelle (CREATE INDEX), stabilire vincoli sui valori di campo (NOT NULL, CHECK e CONSTRAINT) definire le relazioni fra tabelle (PRIMARY KEY, FOREIGN KEY e REFERENCES) ed eliminare tabelle e indici (DROP TABLE e DROP INDEX).

- Istruzioni CCL (Cursor Control Language). Agiscono su singole righe di una o più tabelle (ad esempio DECLARE CURSOR, FETCH INTO e UPDATE WHERE CURRENT).

Non tutte queste istruzioni sono sempre sopportate dai DBMS. Adesso andremo ad analizzare i comandi SQL maggiormente usati.

Sintassi istruzione SQL SELECT semplice:

SELECT [ ALL | DISTICT ] <LISTA attributi>
 FROM <LISTA tabelle>
 [ WHERE <CONDIZIONE>]
 [ GROUP BY <LISTA attributi>]
 [ HAVING <CONDIZIONE>]
 [ ORDER BY <LISTA attributi>[ ASC | DESC ] ]

Gli argomenti racchiusi tra parentesi quadre sono opzionali, mentre quelli racchiusi tra i simboli minore e maggiore sono obbligatori. Analizziamo tutta l'istruzione:

SELECT, specifica che la query deve restituire dati dal database senza applicare modifiche.
ALL, qualificatore, usato per default, specifica che la query dovrà restituire tutte le righe (compresi valori duplicati).
DISTINCT, qualificatore, restituisce solo le righe non replicate, ma la sua esecuzione richiede un tempo di elaborazione maggiore.
Lista attributi, contiene i nomi dei campi della tabella che verranno visualizzate nella query. L'asterisco * specifica che devono essere restituiti i dati appartenenti a tutti i campi della tabella. Se nella query è coinvolta più di una tabella, ognuno di essa è separata da virgole.
WHERE, segna l'inizio di una proposizione che in SQL ANSI ha due finalità: specificare i campi su cui viene eseguito il join di tabelle e limitare la restrizione ai soli record i cui valori di campo rispondono a un determinato criterio. La proposione WHERE deve comprendere un operatore e due operandi, il primo dei quali deve essere un campo.
Gli operatori SQL includono LIKE, IS {NULL | NOT NULL } BETWEEN e IN oltre agli operatori aritmetici <,<=,=,=>,<,<> e da connettori logici quali AND, OR e NOT.
GROUP BY, clausola, consente di raggruppare righe secondo la lista attributi specificata e di effettuare cpsì operazioni che coinvolgono gruppi di occorrenza.
La clausola HAVING permette di inserire una condizione di selezione relativa al gruppo (e non alle singole righe come accade con WHERE).
ORDER BY, proposizione, stabilisce l'ordinamento dei record restituiti dall'istruzione SELECT. Specificare i campi su cui si desidera ordinare l'insieme dei risultati della query in base all'elenco lista attributi. DESC, qualificatore, consente di specificare un ordine decrescente, per default l'ordine è crescente (ASC).

Vediamo alcuni esempi di comandi SELECT:

SELECT * FROM Nome_Tabella          'visualizzare tutti i record  presenti in tabella

SELECT DISTINCT Nome_Campo FROM Nome_Tabella    'visualizzare i record senza duplicati di righe

SELECT TOP 5 * FROM Nome_Tabella     'La stringa SELECT TOP ci consente di selezionare un certo numero di record presenti in una tabella (in questo caso 5)

SELECT * FROM Nome_Tabella WHERE Nome_Campo = 'Visual Basic'    'Questa stringa selezionera' tutti i record in cui il Valore del Nome_Campo e' uguale a "Visual Basic"

SELECT * FROM Nome_Tabella WHERE Nome_Campo LIKE 'Visual%'    'Questa stringa, seleziona tutti i record in cui la parte iniziale del valore contenuto nel campo "Nome_Campo" e' uguale a "Visual"

SELECT * FROM Nome_Tabella WHERE Nome_Campo LIKE '%NET'   'Questa stringa, seleziona tutti i record in cui la parte finale del valore contenuto nel campo "Nome_Campo" e' uguale a "NET"

SELECT * FROM Nome_Tabella ORDER BY Nome_Campo  ASC   'Ordiniamo in modo crescente 
SELECT * FROM Nome_Tabella ORDER BY Nome_Campo  DESC   'Ordiniamo in modo Decrescente 

Oltre agli operatori esistono delle funzioni di aggregazioni, che 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 in schema tabellare:

Funzione Descrizione
 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

Nell'utilizzo di una funzione di aggregazione è importante (consigliato, anche se non obbligatorio) specificare un alias per il risultato, con l'utilizzo della clausola ASEsempio:  

SELECT AVG(prezzo) AS PrezzoLibri  FROM libri  'Restituisce la media del prezzo di tutti i libri trovati.

SELECT COUNT(*) AS NumLibri FROM libri GROUP BY id_autore  'Contiamo tutti i campi dalla tabella libri in funzione dell'autore.

SELECT COUNT(*) AS NumLibri FROM libri HAVING MAX(prezzo) < 50  'Contiamo il numero di record della tabella dei libri in cui il prezzo è inferiore a 50

SELECT COUNT(*) AS NumLibri FROM libri WHERE prezzo < 50  'stesso risultato della funzione precedente, con la differenza che nel primo caso abbiamo usato come parametro condizionale una funzione di aggregazione, e nel secondo abbiamo solo impostato una disuguaglianza.

SELECT COUNT(*) AS NumLibri FROM libri WHERE prezzo BETWEEN  50 AND  80  'Contiamo il numero di record della tabella dei libri in cui il prezzo è compreso tra 50 e 80

SELECT COUNT(*) AS NumLibri FROM libri WHERE  datapubblicazione BETWEEN  '1/1/2004' AND '12/31/2004'   'Contiamo il numero di record della tabella dei libri la cui data di pubblicazione è compresa tra il 1 gennaio 2004 e il 31 dicembre 2004 (la data deve essere espressa in mm/gg/aaaa)

E' possibile anche usare delle SubQuery nel caso in cui l'esecuzione di una selezione avviene in base al risultato di un'altra selezione. Esempio:  Select * From Articoli where Prezzo > (select AVG(PREZZO) from Articoli).  La prima selezione verrà eseguita in base al risultato della seconda selezione che, in questo caso, da come risultato la media del prezzo dei libri presenti in tabella.


Successiva-->

 

Notice: Microsoft has no responsibility for the content featured in this group. Click here for more info.
  Try MSN Internet Software for FREE!
    MSN Home  |  My MSN  |  Hotmail  |  Search
Feedback  |  Help  
  ©2005 Microsoft Corporation. All rights reserved.  Legal  Advertise  MSN Privacy