Guidainlinea.com - Risorse gratuite per Webmaster

| ASP | PHP | Download | Flash | NEWS | Grafica | .NET | Basi Banner | PhpNuke | Forum | Top100 | Webring |

 
100cocktails
   

 

 

 

 

 

 

SQL

Nel capitolo relativo ai Database abbiamo visto come popolare un RecordSet con la seguente riga di codice

<%oRS.Open NomeTabella, Connessione, TipoCursore, TipoBlocco%>

che restituisce tutto il contenuto della tabella NomeTabella. Come fare per estrarre in modo selettivo solo un determinato numero di record dalla tabella in questione? In ASP è possibile manipolare i dati di un database utilizzando il linguaggio SQL (Structured Query Language). Con SQL si possono estrarre, inserire, modificare e cancellare record di un database. Per interrogare un database con SQL bisogna utilizzare l'istruzione SELECT con la seguente sintassi

SELECT campiselezionati FROM nometabella

dove campiselezionati indica quali campi della tabella devono essere estratti e nometabella la tabella da cui estrarre i dati

Nel caso si volesse selezionare tutti i campi della tabella è possibile utilizzare l'asterico nel seguente modo

SELECT * FROM nometabella

oppure se si volessero selezionare determinati campi

SELECT campo1, campo2, campo3 FROM nometabella

Quello appena visto è il modo più semplice per interrogare un database, ma se volessimo filtrare i dati della tabella dobbiamo utilizzare la clausola WHERE

SELECT * FROM nometabella WHERE condizione

dove condizione indica l'istruzione logica per effettuare un filtro 
Es. se la tabella è composta da i sequenti campi:
NOME COGNOME ETA
e voglio selezionare solo i nominativi che hanno l'età superiore a 18 anni effettuerò la seguente SQL

SELECT * FROM tabella WHERE eta > 18

Quindi è ovvia la possibilità di utilizzare qualsiasi operatore di confronto

> Maggiore di
>= Maggiore o uguale di
< Minore di
<= Minore o uguale di
<> Diverso a
= Uguale a

e gli operatori logici

AND
OR
NOT

Es.

SELECT * FROM tabella WHERE (eta > 18) AND (nome = 'Massimiliano')

seleziona tutte le persone che si chiamano Massimiliano e che hanno età maggiore di 18 anni. Da notare che in quest'ultimo esempio il contenuto della variabile NOME è stato incluso fra apici (NOME = 'Massimiliano') in quanto il campo NOME è di tipo Testo (stringa). Quando si trattano campi di tipo testo è possibile utilizzare l'operatore LIKE per agevolare le ricerche nelle stringhe.

Es.
vogliamo estrarre tutti i nomi della tabella che iniziano con MA

SELECT nome FROM tabella WHERE nome LIKE 'Ma%'

per estrarre il solo campo nome oppure

SELECT * FROM tabella WHERE nome LIKE 'Ma%'

per estrarre tutti campi. La sintassi del LIKE prevede l'utilizzo di 3 metacaratteri

% qualsiasi stringa
_ esattamente ad un carattere
[] qualsiasi carattere indicato all'interno di un intervallo

Es.

SELECT * FROM tabella WHERE nome LIKE 'Francesc_'

per estrarre tutti i nomi che iniziano per FRANCESC e terminano con qualsiasi lettera (Francesco, Francesca)

SELECT * FROM tabella WHERE nome LIKE '[glt]ina'

seleziona tutti i nomi che hanno per iniziale i caratteri G, L e T e finiscono per INA (Gina, Lina, Tina) oppure

SELECT * FROM tabella WHERE nome LIKE '[g-t]ina'

seleziona tutti i nomi che hanno per iniziale le lettere comprese nell'intervallo G-T e finiscono per INA
(Gina, Lina, Mina, Pina, Tina). Con SQL è possibile ordinare i record selezionati secondo i valori di una o più colonne con la clausola ORDER BY campo ASC/DESC (crescente/decrescente)

Es.

SELECT * FROM tabella WHERE eta > 18 ORDER BY eta ASC

per estrarre tutti record che hanno ETA maggiore di 18 anni ordinati per ETA dal più piccolo al più grande.

Per riassumere i concetti appena visti eccovi del codice esplicativo: supposto di avere creato un file database (ACCESS) di nome myDB.mdb contenente una tabella di nome ANAGRAFE con i campi NOME, COGNOME e ETA

<%
Dim oRS, oConn, strSQL
'imposto la SQL di selezione (tutti i nomi che cominciano per M)
strSQL = "SELECT * FROM anagrafe WHERE nome LIKE 'M%'"
'apro la connessione al mio db
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("nomeDB.mdb")
'popolo il recordset con i record selezionati con il criterio impostatoSet oRS = Server.CreateObject("ADODB.RecordSet")
oRS.Open strSQL, oConn
'visualizzo a video il risultato della ricerca
If Not oRS.EOF Then 
Do While Not oRS.EOF 
Response.Write oRS("Nome") & " " & oRS("Cognome") & " " & oRS("Eta") 
oRS.MoveNext 
Loop
Else 
Response.Write "Nessun record risponde al criterio di ricerca<BR>" 
Response.Write strSQL
End If
'chiudo il recordset e la connessione
oRS.Close
Set oRS = Nothing
oConn.Close
Set oConn = Nothing
%>

 
 A cura di Massimiliano Luciani

.:: Le sezioni ::.

 .: HTML
 .:
ASP
 .:
PHP
 .:
CSS
 .:
.NET
 .:
CGI/PERL
 .:
Flash
 .:
Download
 .:
JavaScript
 .:
FrontPage
 .:
DreamWeaver
 .:
IIS
 .:
PaintShop Pro
 .:
SQL
 .:
VisualBasic
 .:
XML.NET
 .:
PHPNuke
 .:
PhotoShop
 .:
Basi banner

.:: Script & File ::.

 .: ASP
 .:
.NET
 .:
PHP
 .:
CGI/PERL
 .:
Movies
 .:
Basi Banner
 .:
Programmi

.:: FAQ ::.

 .: ASP
 .:
HTML
 .:
PHP
 .:
CSS

.:: Tutorials ::.

 .: ASP
 .:
PhotoShop
 .:
Flash
 .:
JavaScript

 

 

Guidainlinea.com come homepage |  Aggiungi questa pagina ai preferiti
Home | Manuali | EBooks | Libri | NewsLetter | Community | Corsi | Shopping | Guadagna | Servizi | Mandaci il tuo tutorial | Links
Per qualsiasi informazioni scrivi alla Redazione al Webmaster o per informazioni generali ad info@manuali.net - Note Legali