Access SQL Initiation
Access SQL Initiation
Access SQL Initiation
Le SQL (Structured Query Language) permet d'interroger une base de données, d'en modifier des informations.
C'est un langage universel d'interrogation des bases de données, qui permet à différents systèmes d'échanger des
données entre eux.
ACCESS peut être interrogé en SQL via un macro langage qui « cache » le SQL (voir à ce
sujet le Menu « Requêtes », « Spécifique SQL » « SQL direct »).
Normalisation ISO :
norme SQL1 (1986, 1989)
norme SQL2 (1992)
nouvelle norme en préparation SQL3
Dans la suite, le code SQL est représenté en ARIAL 12, les commentaires en Italique.
Liste des matières pour lesquelles l'élève "Denis" a eu au moins une note.
SELECT NomMat
FROM Notes
WHERE NomElv = 'Denis';
Remarque : Dans la close WHERE, on ne peut utiliser que des propriétés qui sont dans la table sélectionnée
Liste des matières par ordre décroissant de coef., puis par ordre alpha. de nom.
SELECT NomMat
FROM Matieres
ORDER BY Coef Desc, NomMat Asc;
1.6 Récapitulatif
SELECT noms des colonnes à afficher
FROM nom de la table où se trouvent les colonnes susmentionnées
WHERE condition(s) à remplir par les lignes
GROUP BY condition(s) de regroupement des lignes
HAVING condition(s) à remplir par le groupe
ORDER BY ordre (Asc, Desc) d'affichage
Liste des élèves et nom des cours qu'ils suivent pendant plus de 3 heures.
SELECT NomElv, NomMat
FROM Eleves, Cours
WHERE (Eleves.ClasseElv = Cours.Nomcla) AND (Cours.NbHeure > 3)
(il faut faire d'abord les jointures puis les sélections)
2.2 Requêtes où les données proviennent d'une table mais où la condition de sélection
est faite sur une table différente
Liste des élèves habitant Toulon et suivant des cours de Macramé et de niveau BTS.
SELECT NomElv, PreElv
FROM Eleves
WHERE (VilleElv = 'Toulon')
AND (RefElv IN (SELECT RefElv FROM Cours WHERE (NomMat = 'Macramé'))
AND (ClasseElv IN (SELECT NomCla FROM Classes WHERE (Niveau = 'BTS'));
3 Les Jointures
et
CodeCom NomCom
1 Pierre Dubois
2 Paul Renaudin
3 Jacques William
4 Guillaume Roland
On obtient le résultat suivant :
6 Les fonctions
Il existe cinq agrégats (fonctions prédéfinis) : Avg, Count, Sum, Min, Max.
Une fonction s'applique à l'ensemble des valeurs d'une colonne d'une table (sauf pour la fonction Count). elle
produit une valeur unique.
6.1 AVG
La commande AVG permet de calculer la moyenne d'un champ
Soit une table
Commandes (NumCmd, DateCmd, Désignation, FraisPort).
La moyenne des frais de port pour les commandes dont les frais sont inférieurs 150F.
SELECT AVG (FraisPort)
FROM Commandes
WHERE FraisPort < 150:
6.2 COUNT
La commande COUNT permet de compter les lignes.
Soit une table :
Eleves (NomElv, AdrElv, VilleElv).
Le nombre d'élèves est.
SELECT COUNT(NomElv)
FROM Eleves;
6.3 Le SUM
La commande SUM fait la somme des valeurs d'un champ.
Soit une table Acomptes (DateAcpt, NomOvr, Montant).
La somme des acomptes de chaque ouvrier.
7.1 BETWEEN
BETWEEN s'utilise avec la close WHERE.
Soit une table
Acomptes (DateAcpt, NomOvr, Montant).
La liste des acomptes versés entre le 01/02/98 et le 28/02/98.
SELECT * (Affiche tout les champs de la table Acomptes)
FROM AComptes
WHERE DateAcpt BETWEEN '01/02/98' AND '28/02/98';
7.2 DISTINCT
La commande DISTINCT permet de supprimer les lignes en doublons.
Soit une table :
Eleves (NomElv, AdrElv, VilleElv).
La liste des villes où habitent les élèves.
SELECT DISTINCT VilleElv
FROM Eleves;
7.3 LIKE
L’instruction LIKE permet de rechercher des occurrences dans les chaines de caractères. Elle s'utilise avec la
close WHERE.
Soit une table :
Eleves (NomElv, AdrElv, VilleElv).
La liste des élèves dont le nom commence par "c" ou "C".
SELECT * (Affiche tout les champs de la table Elèves)
FROM Eleves
WHERE NomElv LIKE 'C%' OR NomElv LIKE 'c%';
Notez que le caractère « % » qui sert de « joker » pour toute chaine de 0 à n caractères. Le caractère « _ »
underscore sert de joker pour un caractère unique. Le code suivant :
SELECT * (Affiche tout les champs de la table Elèves)
FROM Eleves
WHERE NomElv LIKE '%C%' OR NomElv LIKE '%c%';
Renvoie la liste des élèves dont le nom contient un « C »
8 Fonctions booléennes
8.1 UNION
UNION permet de fusionner deux tables de même schéma par exemple CLIENTS et FOURNISSEURS
SELECT * FROM CLIENTS
UNION
SELECT * FROM FOURNISSEURS
8.2 INTERSECT
SELECT * FROM CLIENTS
INTERSECT
SELECT * FROM FOURNISSEURS