Академический Документы
Профессиональный Документы
Культура Документы
1
Plan du cours
Requêtes de consultation de tables
Projection, Sélection, Jointure
Tri, Agrégation, Partitionnement
Requêtes de Modification de tables
Ajout
Suppression
Manipulation de tables, de vues et de bases de données
2
Projection
Syntaxe SQL :
SELECT [UNIQUE1] liste_attributs2 FROM Table ;
Équivalent AR :
liste_attributs R(Table)
3
Projection - Exemples
Donner les noms, les prénoms et les âges de tous les étudiants.
Donner les numéros des étudiants dans une colonne nommée Numéro.
4
Sélection
Syntaxe SQL :
SELECT * FROM tableWHERE condition;
Équivalent AR :
condition R(Table)
La condition peut formée sur des noms d'attributs ou des constantes avec
des opérateurs de comparaison : =, >, <, <=, >=, <>1
des opérateurs logiques : AND, OR, NOT
des opérateurs : IN, BETWEEN+AND, LIKE, EXISTS, IS
_ qui remplace un caractère et % qui remplace une chaîne de caractères
5
Sélection – Exemples
Sur la relation Étudiants(#Num, Nom, Prénom, Age, Ville, CodePostal)
Quels sont tous les étudiants âgés de 20 ans ou plus ?
SELECT * FROM Étudiants WHERE (Age >= 20);
Quels sont tous les étudiants âgés de 19 à 23 ans ?
SELECT * FROM Étudiants WHERE Age IN (19, 20, 21, 22, 23);
SELECT * FROM Étudiants WHERE Age BETWEEN 19 AND 23;
Quels sont tous les étudiants habitant à casa ?
SELECT * FROM Étudiant WHERE CodePostal LIKE ’20*' ;
Quels sont tous les étudiants dont la ville est inconnue/connue ?
SELECT * FROM Étudiants WHERE Ville IS NULL ;
SELECT * FROM Étudiants WHERE Ville IS NOT NULL ;
6
Produit Cartésien
Syntaxe SQL :
SELECT *
FROM table1 [Alias1], ..., tablen [Aliasn],
Équivalent AR :
Table1 ... Table n
7
-Jointure
Syntaxe SQL :
SELECT * Possibilité de Renommage des tables
FROM table1 [Alias1], ..., tablen [Aliasn],
WHERE condition;
Équivalent AR :
Table1 ... Table n
Autre Syntaxe :
SELECT * FROM table1 INNER JOIN table2 ON condition;
8
Jointure - Exemples
Soient les relations Produit (prod, nomProd, fournisseur, pu)
DétailCommande (numcmd, prod, pu, qte, remise)
Quels sont les numéros de commande correspondant à l'achat d'une table ?
SELECT DC.numcmd
FROM Produit P, DétailCommande DC
WHERE P.prod =DC.prod
AND nomProd LIKE "table";
9
Union, Intersection et Différence
Table1 Table2 : SELECT liste_attributs FROM table1
UNION
SELECT liste_attributs FROM table2 ;
10
Tri de résultats
Syntaxe :
Cette clause se place derrière la clauseWHERE
ORDER BY attribut [ordre] [, attribut [ordre] ...]
On peut préciser un ordre croissant ASC ou décroissant DESC.
Exemple
Trier Stock par numéro de produit croissant et par quantité décroissante
SELECT *
FROM Stock
WHERE qte > 0
ORDER BY prod ASC, qte DESC
11
Agrégation des résultats
Il est possible d'utiliser des fonctions f d'agrégation dans le résultat d'une sélection.
Syntaxe :
SELECT f ( [ ALL | DISTINCT ] expression)
FROM ...
où f peut être COUNT nombre de tuples
SUM somme des valeurs d'une colonne
AVG moyenne des valeurs d'une colonne
MAX maximum des valeurs d'une colonne
MIN minimum des valeurs d'une colonne
Pour COUNT, on peut aussi utiliser COUNT(*)
Seul COUNT prend en compte les valeurs à NULL.
12
Fonctions d'agrégation - Exemples
Quelle est la meilleure note ?
Résultats (de Pierre)
SELECT MAX(Note) FROM Résultats → 15
Matière Coef Note
Quelle est la plus mauvaise note ?
Maths 4 15 SELECT MIN(Note) FROM Résultats →9
Sc Nat 3 9 Quelle la somme pondérée des notes ?
14
Partitionnement des résultats - Exemples
Résultats (de Pierre)
Quelle est la note moyenne pour chaque coefficient ?
Matière Coef Note
SELECT coef, Avg(note) as Moyenne Coef Moyenne
Maths 4 15
1 11
FROM Résultats
Sc Nat 3 9 2 12
GROUP BY coef;
Sc Phy 3 12 3 10.5
4 15
Français 2 13
Quels sont les coefficients auxquels participe une seule
Sc Hum 2 11 matière ?
15
Plan du cours
Requêtes de consultation de tables
Projection, Sélection, Jointure
Tri, Agrégation, Partitionnement
Requêtes de Modification de tables
Ajout
Suppression
Manipulation de tables, de vues et de bases de données
16
Ajouts de tuples dans une relation
Syntaxe :
Pour insérer un tuple complètement spécifié :
INSERT INTO TableVALUES (val1,..., valn);
17
Exemples d'insertion
Sur les relations Étudiants (#Num, Nom, Prénom, Age, Ville, CodePostal)
ClubThéâtre(#Num, Nom, Prénom)
Ajouter l'étudiant ALAMI Ahmed, 21 ans, habitant casa avec le numéro 634.
18
Modification de tuples
Syntaxe :
UPDATE Table
SET attribut1 = expr1, ..., attributn = exprn
FROM ...
WHERE ...
19
Mise à jour - Exemple
UPDATE Étudiants
SET Age = Age + 1;
UPDATE Étudiants
SET Ville = ‘rabat', CodePostal = ‘21000'
WHERE Ville = ‘CASA';
20
Suppression de Tuples
Syntaxe :
DELETE FROM Table
[WHERE condition]
Remarque :
!
Si on supprime tous les tuples d'une relation,
le schéma de relation existe toujours !
Exemple :
Retirer de la liste tous les étudiants de plus de 22 ans.
21
22
23
Plan du cours
Requêtes de consultation de tables
Projection, Sélection, Jointure
Tri, Agrégation, Partitionnement
Requêtes de Modification de tables
Ajout
Suppression
Manipulation de tables, de vues et de bases de données
24
Création de table
Syntaxe :
CREATE TABLE nomTable (
Attribut Domaine [Contraintes ...],
...
Attribut Domaine [Contraintes ...],
[Contraintes ... ]
)
25
Création de table - Exemple
26
Modification et Suppression de Relation
Modification de Schéma de relation (Syntaxe variable !)
Exemple :
ALTER TABLE Table
[ADD (définition_attribut | Contrainte), [définition_attribut | Contrainte] ... )]
[MODIFY (définition_attribut [, définition_attribut ]... )]
[DROP CONSTRAINT contrainte]
27
Correction TP SQL
28
Req1
Select *
From Client
Where ville = « rabat »;
29
Req2
select raisonsociale
From Client C, Réaliser R
where c.codeclient=r.codeclient and
ville=[saisir une ville]
order by Raisonsociale ASC;
30
Select raisonsociale
from Client C,Réaliser R
where c.codeclient=r.codeclient
And Date between 15/11/2005 and
17/11/2005
order by raisonsociale asc;
31
Req 4
Where C.codeclient=R.codeclient
and R.codetravaux=T.codeTravaux
and date between 01/11/2005 and
15/11/2005 and
Nomcomptable=[saisir un comptable]
32 order by date asc;
Select top 5 libellé,
33
Req 6
34
Req 6
Select (couyhoraire*tempspassé) as
total, libellé
From Réaliser R, Travaux T, Client C
Where C.codeclient=R.codeclient and
T.codeTravaux=R.codetravaux and
Raisonsociale=« Chama »;
35
Req 8
Select count(*)
from client;
36
Req 9
Select SUM(couthoraire*tempspassé) as facture,
SUM(couthoraire*tempspassé) *0,95 as factred, raisonsociale
From Réaliser R, Travaux T, Client C
Where C.codeclient=R.codeclient and T.codeTravaux=R.codetravaux
Group By RaisonSociale
Having facture>600;
UNION
Select SUM(couthoraire*tempspassé) as facture,
SUM(couthoraire*tempspassé) as factred, raisonsociale
From Réaliser R, Travaux T, Client C
Where C.codeclient=R.codeclient and
T.codeTravaux=R.codetravaux
Group By RaisonSociale
37 Having facture<=600;
Update Client
Set Rue=« Mehdia,2210 » , ville=« kénitra »
Where codeclient=18;
38