Vous êtes sur la page 1sur 11

Chapitre 4 : Initiation au langage SQL

Travaux Pratiques Avancés

Recherche dans une table


La recherche s'effectue par la commande SELECT.

Cette commande permet de composer une relation déduite à partir de celles de la base par
projection, sélection et jointure, mais aussi par fragmentation de relation.

SELECT [ { DISTINCT/UNIQUE  ALL ] < spécification de résultat> FROM < relation>


[ ( <variable> ) ] [ ,<relation> [ ( <variable> ) ] ]....

[ WHERE <formule> ]

[ ORDER BY <colonne > [ { ASC  DESC } ]

[ GROUP BY <colonne> [ , <colonne> ]....]

[ HAVING < formule > ]

PROJECTION
La projection consiste à projeter les colonnes souhaitées à afficher.

Pour le TP, prenons les relations dans le TP1

CLIENT(Codecli, Nom, Ville, Datenais, Solde)

PRODUIT(Codepro, Libelle, Pu, Couleur, Poids)

COMMANDE(Codecli, Codepro, Qte_com)


Considérons la requête suivante:

R1 : Donner la liste des Noms et Villes des clients

SELECT Nom, Ville FROM Client ;

NB : { projection de table Client sur les attributs Nom et Ville }

SELECTION ou RESTRICTION
La sélection consiste à sélectionner les lignes souhaitées à afficher.

Considérons les requêtes suivantes:

R2 : Donner la liste des noms des clients habitant Paris

SELECT * FROM Client WHERE Ville='Paris';


NB: On peut ajouter plus de recherche en utilisant OR / AND

Avec OR

R3 : Donner la liste des noms des clients habitant Paris ou Diego

SELECT * FROM Client WHERE Ville='Paris' or Ville='Diego';

Avec AND

R4 : Donner la liste des noms des clients habitant Paris et Diego

SELECT * FROM Client WHERE Ville IN('Paris','Diego');

R5 : Donner la liste des noms des clients habitant Paris et a des soldes de 30000

SELECT * FROM Client WHERE Ville='Paris' AND solde=30000;


Afficher sans répétition
Considérons la requête suivante:

R6 : Lister toutes les villes des clients distinctement (sans répétition)

SELECT DISTINCT Ville FROM Client;

Lister par ordre alphabétique

En utilisant [ORDER BY <attribut> [ { ASC  DESC } ] à la fin du commande.

ASC = ordre croissant

DESC = ordre décroissant

Considérons les requêtes suivantes:

R7 : Donner la liste des Clients par ordre alphabétique des Noms

SELECT * FROM Client order by Nom ASC;

R8 : Donner la liste des noms des clients habitant Tana par ordre décroissant

SELECT Nom FROM Client WHERE Ville= 'Tana' order by Nom DESC;
Limiter les affichages
En utilisant [LIMIT], considérons la requête suivante :

R9 : Donner la liste des 3 premiers Clients

SELECT * FROM Client limit 3;

Prédicat de contenance
En utilisant [LIKE]

Il est possible d'utiliser dans la chaine des caractères génériques (%) qui représentent
n'importe quelle combinaison de caractères.

Considérons les requêtes suivantes :

R10 : Donner la liste des clients ayant un nom qui commence par Ra

SELECT * FROM Client where Nom like 'Ra%';


R11 : Donner la liste des clients ayant un nom qui se termine par ria

SELECT * FROM Client where Nom like '%ria';

R12 : Donner la liste des clients ayant un nom qui contient un « U »

SELECT * FROM Client where Nom like '%u%';

Prédicat de test de nullité


Ceci permet de savoir si un terme a une valeur connue NULL signifiant que sa valeur est
inconnue.

R13: Lister les Noms des clients qui habitent dans une ville inconnue

SELECT Nom FROM Client WHERE Ville IS NULL;


Prédicat simple (opérateurs relationnels )
En utilisant [ = , <> , < , > , <= , >= ]

Considérons les requêtes suivantes :

R14 : Lister les noms de produits de poids inférieur à 100

SELECT Libelle from Produit WHERE Poids < 100;

R15 : Lister les clients qui n’habitent pas à Tana

SELECT * from Client where Ville <> 'Tana';

EXPRESSION DES TERMES


La notion de terme est riche en SQL. En effet, un terme peut être:

 une constante de type chaine et numérique

 une variable suivie d'un nom d'attribut ou nom de relation

 un décompte d'un nombre de valeurs distinctes d'un tuple (COUNT(*)) ou d'un


ensemble d'attributs

 toute expression arithmétique construite à l'aide des opérateurs ( +, - , / , * ) à partir


des éléments précédents ou des fonctions
 une fonction statistique choisie parmi: calcul de la moyenne (AVG), calcul de
maximum (MAX), calcul du minimum (MIN), sommation des valeurs (SUM)

Fonction Rôle
MAX Trouver la valeur maximale
MIN Trouver la valeur minimale
SUM Calculer la somme des valeurs
AVG Calculer la moyenne des valeurs
COUNT Compter le nombre des tuples

Considérons les requêtes suivantes :

R16: Calculer l’expression 4*exp(0)+ 10

SELECT 4*exp(0)+ 10;

Affectation de variable AS

SELECT (4*exp(0)+ 10) as resultat;

R17: Donner le nombre de clients habitant Paris:

SELECT COUNT(Codecli) AS Nbr_Client FROM Client WHERE ville = 'Paris';


R18: Donner le solde minimun des clients;

SELECT MIN(solde) AS min_solde FROM Client;

Prédicat d'intervalle
En utilisant [BETWEEN]

Ceci permet de tester si la valeur d'un terme est comprise entre la valeur de 2 autres ou non.

Valable pour les types de données numérique et Date.

< terme > [ NOT ] BETWEEN <terme> AND <terme>

Considérons les requêtes suivantes :

R19: Lister les clients qui sont nés entre 1940-01-01 et 1975-12-01 :

SELECT * FROM Client WHERE Datenais between '1940-01-01' and '1975-12-01';

R20: Lister les produits qui ont des prix unitaires entre 100 et 600 :

SELECT * FROM Produit WHERE Pu between 100 and 600;


Prédicat des dates
Il existe des fonctions permettant de sélectionner l’année et le mois dans les dates de format
(AAAA-MM-JJ)

YEAR(date)

MONTH(date) = Ceci reconnait les mois en commençant de 1 à 12

Considérons les requêtes suivantes :

R19: Lister les clients qui sont nés entre 1955 et 1959 :

SELECT * FROM Client WHERE year(Datenais) between 1955 and 1959;

R20: Lister les clients qui sont nés en Octobre 1975

SELECT * FROM Client WHERE month(Datenais)=10 and year(Datenais)=1975;

DEVOIR
(Mettre les réponses du devoir dans vos cahiers d’exercice)

Ecrire des instructions SQL à partir des requêtes suivantes :

1- Lister toutes les commandes


2- Lister les 3 premières commandes
3- Compter le nombre total des produits
4- Compter le nombre total des commandes
5- Lister les produits par ordre alphabétique de Libelle
6- Lister les produits ayant la couleur rouge et des poids inférieur ou égal à 90
7- Afficher le prix unitaire du produit akondro
8- Lister les noms et ville des clients nés en Novembre
9- Lister les clients dont le nom contient un 'RA'
10- Afficher solde de clients qui s’appelle Rabe ou Durant
11- Lister les libellés de produits ayant des prix unitaires entre 40 et 200
12- Afficher le prix unitaire minimum de produit
13- Afficher le poids moyen des produit

Vous aimerez peut-être aussi