0-Rappel Langage SQL
0-Rappel Langage SQL
0-Rappel Langage SQL
Page 1 sur 4
Enis BELHASSEN Rappel - Langage SQL
Page 2 sur 4
Enis BELHASSEN Rappel - Langage SQL
Jointures
Liste des commandes avec le nom des clients
SELECT Nom, Date, Quantite FROM Client, Commande WHERE Client.NumCli =Commande.NumCli;
Liste des commandes avec le nom et le numéro des clients (ordonnées selon le nom)
SELECT C1.NumCli, Nom, Date, Quantite FROM Client C1, Commande C2
WHERE C1.NumCli = C2.NumCli ORDER BY Nom;
NB : Utilisation d’alias (C1 et C2) pour alléger l’écriture
Jointure exprimée avec le prédicat IN
o Nom des clients qui ont commandé le 23/09/1999
SELECT Nom FROM Client
WHERE NumCli IN (SELECT NumCli FROM Commande WHERE to_char(Date,'dd/mm/yyyy') = ‘23/09/1999’);
Prédicats EXISTS / NOT EXISTS
o Clients qui ont passé au moins une commande
SELECT * FROM Client C1
WHERE EXISTS (SELECT * FROM Commande C2 WHERE C1.NumCli = C2.NumCli);
o Clients qui n’ont passé aucune commande
SELECT * FROM Client C1
WHERE NOT EXISTS (SELECT * FROM Commande C2 WHERE C1.NumCli = C2.NumCli);
Prédicats ALL /ANY
o Numéros des clients qui ont commandé au moins un produit en quantité supérieure à chacune des quantités
commandées par le client n°1.
SELECT DISTINCT NumCli FROM Commande
WHERE Quantite > ALL (SELECT Quantite FROM Commande WHERE NumCli = 1);
o Numéros des clients qui ont commandé au moins un produit en quantité supérieure à au moins une des quantités
commandées par le client n°1.
SELECT DISTINCT NumCli FROM Commande
WHERE Quantite > ANY (SELECT Quantite FROM Commande WHERE NumCli = 1);
Groupement
o Quantité totale commandée par chaque client
SELECT NumCli, SUM(Quantite) FROM Commande GROUP BY NumCli;
o Nombre de produits différents commandés...
SELECT NumCli, COUNT(DISTINCT NumProd) FROM Commande GROUP BY NumCli;
o Quantité moyenne commandée pour les produits faisant l’objet de plus de 3 commandes
SELECT NumProd, AVG(Quantite) FROM Commande
GROUP BY NumProd HAVING COUNT(*)>3;
Attention : La clause HAVING ne s’utilise qu’avec GROUP BY.
Opérateurs ensemblistes : INTERSECT, MINUS, UNION
o Numéro des produits qui soit ont un prix inférieur à 100 F, soit ont été commandés par le client n° 2
SELECT NumProd FROM Produit WHERE PrixUni < 100
UNION
SELECT NumProd FROM Commande WHERE NumCLi = 2 ;
Fonctions SQL
ABS(n) : Valeur absolue de n ASCII(ch) : Valeur ASCII de ch
MOD(m, n) : Reste de m/n INSTR(ch, ssch) : Recherche de ssch dans ch
POWER(m, n) : mn LENGTH(ch) : Longueur de ch
SQRT(n) : Racine carrée de n SYSDATE : Date/heure système
ROUND(n, m) : Arrondi à10-m ADD_MONTHS(dte, n) : Ajout de n mois à dte
TRUNC(n, m) : Troncature à10-m MONTHS_BETWEEN(dt1, dt2) : Nombre de mois entre dt1 et dt2
CHR(n) : Caractère ASCII nunéro n TO_NUMBER(ch) : Conversion de ch en nombre
INITCAP(ch) : 1ère lettre en maj. TO_CHAR(x) : Conversion de x en chaîne
LOWER(ch) : ch en minuscules TO_DATE(ch) : Conversion de ch en date
UPPER(ch) : ch en majuscules NVL(x, val) : Remplace par val si x a la valeur NULL
REPLACE(ch, car) : Remplacement de caractère UID : Identifiant numérique de l’utilisateur
SUBSTR(ch, pos, lg) : Extraction de chaîne USER : Nom de l’utilisateur
4. VUES
Une vue est table virtuelle calculée à partir d’autres tables grâce à une requête. Son intérêt est :
o Simplification de l’accès aux données (exemple : masquer les opérations de jointure)
o Sauvegarde indirecte de requêtes complexes au niveau du noyau de Oracle)
o Présentation de mêmes données sous différentes formes adaptées aux différents usagers particuliers
o Renforcement de la sécurité des données (exemple : masquer des lignes et des colonnes sensibles aux usagers
non habilités)
Page 3 sur 4
Enis BELHASSEN Rappel - Langage SQL
5. TRANSACTION
Transaction : ensemble de mises à jour des données (différent des modifications structurelles)
Début de transaction : début de la session de travail ou fin de la transaction précédente
Page 4 sur 4