Exemples de requêtes en langage SQL

L'essentiel

Les noms de tables ou de champs utilisés dans les exemples suivants sont symboliques et ne correspondent pas forcément aux noms réels.

·       Vue affichant les colonnes Code, Nom et Code Postal pour tous les clients. (le champ Code Postal doit être saisi entre crochets car il contient un espace) :
SELECT Code, Nom, [Code Postal] FROM Clients

·       Vue affichant tous les clients qui habitent à Paris, Lyon ou Marseille (la requête examine si le code postal appartient à la liste spécifiée par la commande IN) :
SELECT Code, Nom, [Code Postal] FROM Clients WHERE [Code Postal] IN (75000,69000,13000)

·       Vue affichant tous les champs pour tous les clients qui habitent dans le département de la Gironde classés par ville puis par nom (l'étoile après SELECT signifie "tous les champs", la commande LIKE comparera la valeur du code postal avec le masque "33*", signifiant "tout ce qui commence par 33") :
SELECT * FROM Clients WHERE [Code Postal] LIKE "33*" ORDER BY Ville, Nom

·       Vue affichant tous les clients classés par chiffre d'affaires décroissant puis par nom croissant (le mot-clé ASC signifiant "ascendant" est facultatif, car il correspond à l'ordre par défaut):
SELECT * FROM Clients ORDER BY Ca DESC, Nom ASC

·       Vue affichant une seule colonne et une seule ligne contenant le chiffre d'affaire global :
SELECT Sum(Clients.CA) FROM Clients

·       Vue affichant (et calculant) les chiffres d'affaires par département (on suppose ici qu'on ne dispose pas de champ Département directement accessible, le département est donc obtenu en extrayant les deux caractères à gauche du code postal) :
SELECT Left([Code Postal], 2) AS Dept, Sum(CA) AS CaTot FROM Clients GROUP BY Left([Code Postal], 2) ORDER BY Left([Code Postal], 2)

·       Vue affichant le nombre de clients par mode de règlement (pour obtenir le nom des modes de règlements, il faut utiliser une table supplémentaire ModeReglement, puisque la table Clients ne contient que le code du mode de règlement attaché, la table Mode de Règlement est liée à la table Clients par la commande INNER JOIN qui précise que le lien existe entre le champ ModeReg de la table Clients et le champ Code de la table ModeReglement) :
SELECT ModeReglement.Libelle, COUNT(*) AS Total FROM Client INNER JOIN ModeReglement ON Client.ModeReg = ModeReglement.Code GROUP BY ModeReglement.Libelle

·       Vue avec paramètre affichant tous les clients dont le nom commence par une lettre donnée (le paramètre est dénommé Lettre et est de type alphanumérique, le signe & accole au paramètre saisi le symbole "*", ainsi si la valeur du paramètre est "C", le filtre sera "...WHERE Nom LIKE 'C*' ") :
PARAMETERS Lettre TEXT ;
SELECT * FROM Clients WHERE Clients.Nom LIKE Lettre & "*"

·       Vue avec un paramètre affichant tous les clients qui habitent dans un département donné :
PARAMETERS Département LONG;
SELECT * FROM Client WHERE Left(CP, 2) = Département

·       Vue affichant la liste des clients et la date de leur dernière facture (la fonction MAX calcule la date la plus récente, c'est une fonction agrégative qui nécessite la présence de la clause GROUP BY, le mot-clé AS attribue le titre "Dernière facture" à la 3ème colonne de la vue) :
SELECT Clients.Code, Clients.Nom, MAX(Facture.Date) AS [Dernière facture]
FROM Clients INNER JOIN Facture on Clients.Code = Facture.CodeClient
GROUP BY Clients.Code, Clients.nom

·       Vue affichant tous les clients dont la dernière facture date de plus d'un mois (le mot-clé NOW représente la date et l'heure du jour, la fonction DATEADD ajoute ou retranche une durée à une date pour en obtenir une autre, ici, on part donc du jour courant et on lui retranche 1 mois - symbolisé par "m") :
SELECT Clients.Code, Clients.Nom, MAX(Facture.Date) AS [Dernière facture]
FROM Clients INNER JOIN Facture on Clients.Code = Facture.CodeClient
WHERE Facture.Date < DATEADD ("m", -1, now)
GROUP BY Clients.Code, Clients.nom