Qu'est ce qu'une requête Sql
Un requête est une opération qui consiste à extraire d'une table (d'une base de données) tout ou partie des éléments qui s'y trouvent.
Supposons que vous ayez créé une base Access s'appelant carnet_adresse dans laquelle se trouve une table Adresses. Vous pouvez souhaiter visualiser l'ensemble des éléments , ou simplement toutes les adresses situées à PARIS, ou toutes les adresses dont le numéro de téléphone commence par 04, etc...
Pour ce faire vous exécutez une requête Sql sur la table Adresses.
Quand utiliser une Requête Sql
Pour ce qui nous concerne nous utilisons des requêtes Sql au sein de nos fichiers Asp. En Asp il existe deux objets utiles pour la connection à une base de données. L'objet Connection et l'objet Recordset... L'objet connection ouvre une connexion entre l'utilisateur et la base de données, alors que l'objet Recordset va se contenter de contenir les éléments extraits d'une des tables de la base de données, tout cela par l'intermédiaire d'une requête Sql.
Dans l'ordre des choses :
- 1) Création de l'objet connection
Set conn=server.createObject("ADODB.connection")
- 2) Ouverture du canal entre l'utilisateur et la base de données
conn.open "carnet_adresse" (pour plus de précision voir Asp: notes de cours [Base de données])
- 3) Création de l'objet recordset
Set rs=server.createObject("ADODB.recordset")
- 4) Définition de la requête SQL
Dans la plupart des cas on utilise une variable chaîne de caractères (ici SQL) qui contient la définition de la requête
SQL="Select * From Adresses"
En Français : SQL ="Sélectionne tous les éléments de la table Adresses"
- 5) Ouverture de la table Adresses et exécution de la requête
rs.open sql,conn,3,3
Note : Pour en savoir plus Rendez vous sur Asp: notes de cours [Base de données]
Elements de Base
Le langage SQL est relativement intuitif. En fait il suffit simplement de formaliser ce que l'on souhaite faire :
- 1) Je souhaite sélectionner les éléments de la table Adresses
=> SELECT * FROM Adresses
- * signifie (tous les champs)
- 2) Je souhaite sélectionner toutes les personnes qui s'appelle DUPONT
=> SELECT * FROM Adresses where nom='DUPONT'
- WHERE (Où en Français)
- Outre l'opérateur = vous pouvez utiliser < (inférieur à), <= (inférieur ou égal à), > (supérieur à), >= (Supérieur ou égal à)
- 3) Je souhaite sélectionner toutes les personnes dont le nom commence Par DU
=> SELECT * FROM Adresses where nom LIKE 'DU%'
- Le caractère % remplace un ou plusieurs caractères
- Le mot réservé LIKE (en Français COMME) remplace l'égalité quand la comparaison n'est pas fixe (en effet on ne connait pas au départ tous les noms commençant par DU alors que dans le cas précédent dans le cas précédent c'était DUPONT)
- 4) Je souhaite sélectionner toutes les personnes dont le nom contient les lettres DU
=> SELECT * FROM Adresses where nom LIKE '%DU%'
- Remarquez qu'ici le caractères % se situe également avant DU, tous les noms contenant DU (quelque soit son emplacement dans le nom) sont recherchés.
- 5) Je souhaite sélectionner toutes les personnes dont le nom contient les lettres DU et dont le prénom commence par A
=> SELECT * FROM Adresses where nom LIKE '%DU%' AND prenom LIKE 'A%'
- AND (ET en Français) , on recherche les éléments vérifiant la condition 1 portant sur le nom et la condition 2 portant sur le prénom
- 6) Je souhaite sélectionner toutes les personnes dont le nom contient les lettres DU ou dont le nom commence par A
=> SELECT * FROM Adresses where nom LIKE '%DU%' OR nom LIKE 'A%'
- OR (OU en Français) , dans ce cas les résultats contiennent à la fois toutes les adresses dont le nom contient DU et toutes les adresses dont le nom commence par A
La compréhension des différentes requêtes présentées ici vous permettra de répondre à un maximum de cas ...
Utiliser un champs de formulaire comme critère de recherche
Supposons que vous ayez un champs nom dans votre formulaire du type :
<INPUT Type="TEXT" Name="Nom" >
En ASP on récupère la valeur du champ posté par l'intermédiaire de l'objet Request
Une fois posté, Request("nom") contiendra la valeur entrée par l'utilisateur dans le champ nom.
Exemple :
Je sélectionne toutes les adresses dont le nom est égale à Request("nom")
SQL="SELECT * FROM Adresses Where nom='" & Request("nom") & "'"
- La chaîne de requête (SQL) est créée ici dynamiquement et changera automatiquement en fonction de la valeur de Request("nom")
- Remarquez que request("nom") n'est pas inclus dans les apostrophes (c'est une variable), il est ajouter par l'intermédiaire de & à la chaine de requête
- La valeur de test request("nom") est une chaîne de texte on l'encadre par le caractère '
- Si l'utilisateur tape DUPONT dans le champ nom, la chaîne de requête SQL prendra pour valeur : SELECT * FROM Adresses Where Nom='DUPONT'
Supposons qu'un champ prenom de type text fasse également partie du formulaire :
On pourra sélectionner tous les éléments de la table Adresses dont le nom et le prenom sont égaux aux valeurs entrées par l'utilisateur en procédant comme suit :
SQL="SELECT * FROM Adresses WHERE nom='" & Request("nom") & "' AND prenom='" & request("prenom") &"'"