Cours 16 : Le langage de requête structuré SQL



Tout d'abord, il faut que je vous explique ce que c'est que ce langage de requête et à quoi est-ce qu'il sert.
Eh bien, SQL("Structured Query Language" ou pour les francophones, "Langage de Requête Structuré") est un langage qui a été créé dans le but de communiquer avec une base de données relationnelle.
Pour ceux qui ne le savent pas, une base de données relationnelle est une base de données où les données sont stockées dans des tables. Ces dernières sont en interaction les unes et les autres.
ATTENTION:
veuillez noter que le langage SQL peut varier d'un constructeur à l'autre. Dans ce cas, il vous faut consulter la documentation qui lui est propre.
Le langage SQL abordé ici, est le langage standard et peut ne pas être compatible avec votre base de données. Si vous constatez que les codes qui suivent ne fonctionnent pas, eh bien, ça veut dire qu'il n'est pas compatible avec votre base.

SQL permet d'interroger une base de données, d'insérer de nouvelles données mais aussi mettre à jour vos données existantes.
A présent voyons cela de plus près.


Recherche de données
Ajout et suppression de données
Mise à jour de données
Groupement d'instructions SQL en transactions
Recherche à partir d'un champ de texte




1. Recherche de données



1.1 La syntaxe


L'instruction utilisée pour effectuer une recherche dans une base de données est SELECT. Elle sert à interroger une base et de retourner si elles existent, les données que vous recherchez.
La syntaxe de l'instruction SELECT est la suivante:

SELECT [ *|ALL|DISTINCT ] [ TOP X [PERCENT] ] Colonne1,Colonne2
FROM Tables
WHERE (Critère de recherche)|(Critère de jointure)
AND|OR [ (Critère de recherche) ]
GROUP BY [ ALL ] Colonne1, Colonne2
HAVING (Critère de recherche)
ORDER BY Colonnes [ ASC|DESC ]

Je sais, à première vue d'oeil, ça peut paraître compliqué. Mais il n'en est rien en réalité. En observant de plus près, vous verrez que c'est très abordable. Bon, je vous explique en détail cette syntaxe.

C'est pas très évident mais avec de la pratique, tout vous paraîtra clair. De plus, vous n'êtes pas obligé d'utiliser tous les clauses et arguments montrés ci-dessus.
Voici un exemple simple sur la façon d'utiliser les requêtes avec SQL en s'appuyant sur le contrôle Data qui vous permet de visualiser les données:

Data.RecordSource="SELECT * FROM Fichier WHERE Prix<'1500' AND Prix>'3000' ORDER BY Prix"


Il vous suffit de placer ce code dans un bouton de commande pour qu'il fasse apparaître la liste de tous les prix compris entre 1500 et 3000 de la table "Fichier". La clause ORDER BY permet de ranger le résultat de votre recherche par ordre croissant(ordre par défaut).


1.2 Les opérateurs


Vous pouvez aussi faire appel à des opérateurs pour spécifier des conditions dans une instruction SQL ou servir de conjonction à plusieurs conditions. Vous vous rappelez, vous en avez déjà vu 2 opérateurs avant: ce sont AND et OR. Ces deux là, sont des opérateurs conjonctifs. Il existe 5 types d'opérateur en tout:

Le tableau suivant vous montre comment utiliser tous ces opérateurs.

OpérateurExempleInterprétation
=WHERE Prix='1500'Retourne les valeurs dont le prix est égal à 1500
<>WHERE Prix<>'1500'Retourne les valeurs dont le prix est différent de 1500
<WHERE Prix<'1500'Retourne les valeurs dont le prix est strictement inférieur à 1500
>WHERE Prix>'1500'Retourne les valeurs dont le prix est strictement supérieur à 1500
<=WHERE Prix<='1500'Retourne les valeurs dont le prix est inférieur ou égal à 1500
>=WHERE Prix>='1500'Retourne les valeurs dont le prix est supérieur ou égal à 1500
ANDWHERE Prix>'1500' AND Prix<'2000'Retourne les valeurs dont le prix est compris entre 1500 et 2000 non inclus.
ORWHERE Prix='1500' OR Prix='2000'Retourne les valeurs dont le prix est égal à 1500 ou 2000
INWHERE Prix IN('1500','2000')Retourne les valeurs dont le prix est égal à 1500 ou 2000
NOT INWHERE Prix NOT IN('1500','2000')Retourne les valeurs dont le prix est différent de 1500 ou de 2000
BETWEENWHERE Prix BETWEEN '1500' AND '2000'Retourne les valeurs dont le prix est compris entre 1500 et 2000 non inclus.
NOT BETWEENWHERE Prix NOT BETWEEN '1500' AND '2000'Retourne les valeurs dont le prix n'est pas compris entre 1000 et 1500 non inclus.
LIKEWHERE Nom LIKE 'c*' or LIKE '*a'Retourne les valeurs dont le nom du client commence par un "c" ou se terminant par un "a"
NOT LIKEWHERE Nom NOT LIKE '*k*'Retourne les valeurs dont le nom du client ne contient pas la lettre "k"
IS NULLWHERE Prix IS NULLRetourne les valeurs dont aucun prix n'a été fixé
IS NOT NULLWHERE Prix IS NOT NULLRetourne les valeurs dont le prix a été fixé
EXISTSWHERE EXISTS (SELECT Prix FROM Fichier WHERE Prix='1500')Teste pour vérifier s'il y a des prix égaux à 1500
NOT EXISTSWHERE NOT EXISTS (SELECT Prix FROM Fichier WHERE Prix='1500')Teste pour vérifier s'il y a des prix différent à 1500
ALLWHERE Prix > ALL (SELECT Prix FROM Fichier_concurrent WHERE Lieu='Marseille')teste pour vérifier s'il y a des produits concurrent se trouvant à Marseille qui coûtent moins cher que le vôtre
ANYWHERE Prix < ANY (SELECT Prix FROM Fichier_concurrent WHERE Lieu='Marseille')Teste le prix du produit pour savoir s'il est plus bas que celui du concurrent se trouvant dans à Marseille


1.3 Les fonctions mathématiques


Il est aussi possible avec le langage SQL d'effectuer des calculs directement à partir des données. Cela se fait à l'aide des fonctions mathématiques suivantes:

FonctionUtilisation
COUNT()Comptabilise le nombre d'enregistrements retourné
SUM()Calcule la somme des valeurs retournées
AVG()Calcule la moyenne des valeurs retournées
MAX()Retourne la plus haute des valeurs trouvées
MIN()Retourne la plus petite des valeurs trouvées

Prenons quelques exemples pour mieux comprendre:

Plaçons ce bout de code dans un champs de texte.
Data.RecordSource="SELECT COUNT(Produit) FROM Fichier
Ce code permet de voir combien est-ce qu'il y a de produits vendu dans un magasin.

Les autres fonctions fonctionnent de la même manière que cette dernière.

2. Ajout et recherche de données



2.1 Ajout de données


Pour ajouter des données dans une base de données, on utilise l'instruction INSERT.
La syntaxe pour ajouter de nouvelles données avec SQL est la suivante:

INSERT INTO Table (Colonnes)
VALUES (valeurs1,valeurs2)
Par exemple:
INSERT INTO Fichier_client(Nom,Prénom,Id) VALUES ('Dupont','Jean','568')
Le client Dupont Jean, numéro d'identification 568, a été ajouté dans la base de données.

2.2 Suppression de données



La suppression de données se fait à l'aide de l'instruction DELETE.
La syntaxe pour supprimer des données à l'aide de SQL est la suivante:

DELETE FROM table WHERE (Critère de recherche)


Par exemple:
DELETE FROM Fichier_client WHERE Client='Dupont'
Le client Dupont a été supprimé dans la base de données.


3. Mise à jour de données



La mise à jour de vos données se fait à l'aide de l'instruction UPDATE.
La syntaxe est la suivante:

UPDATE table SET Colonne='valeur'
WHERE (Critère de recherche)


Par exemple:
UPDATE Fichier SET date='20/05/01' WHERE Produit='Lait'
Tous les enregistrements de la colonne date vont être modifié par '20/05/01'. Mais avec la clause WHERE, seul les produits laitiers seront concerné.


4. Les transactions



Les transactions permettent de grouper une série d'instruction SQL. Ne croyez pas que ça sert à rien. Cette méthode de regroupement peut s'avérer être très utile lorsque vous manipulez des données sensibles. En effet, lorsque qu'une instruction SQL échoue, vous avez la possibilité d'annuler la transaction et de revenir en arrière c'est-à-dire avant que les données soient modifiées.
Cette transaction se fait à l'aide des commandes suivantes:
Voici la syntaxe d'une transaction:
On Error GoTo Erreur
BeginTrans
Série d'instruction
CommitTrans
Exit Sub
Erreur:
MsgBox Error$
RollBack
exit Sub

Vous avez dû remarqué qu'une routine de traitement d'erreur a été placé dans ce code. C'est dans le cas où la transaction échouerait. Sinon, je pense que vous avez compris son fonctionnement en voyant la syntaxe. C'est pas dur à comprendre.


5. Recherche à partir d'un champ de texte



Voici comment faire pour effectuer une recherche à partir d'un mot tapé dans un champ de texte. Voilà, il faut que vous placiez un champ de texte nommé par exemple, "Text1" et un bouton de commande appelé par exemple, "Chercher". Placez le bout de code suivant dans la procédure du bouton:
valeur = "SELECT * FROM Liste WHERE Produit LIKE " + " ' " + Text1.Text + " ' "
Data.RecordSource = valeur
Data.refresh


Voilà, c'est tout! Si vous ne comprenez pas quelque chose, n'hésitez pas à poser votre question sur le forum.


up
Cours précédent Cours suivant