IPT_résumé_SQL_PCSI
- page 4 -
Exemples
SELECT AVG(prix_total) FROM Achats
SELECT COUNT(DISTINCT magasin) FROM Achats
SELECT client, SUM(prix_total) AS total FROM Achats GROUP BY client HAVING prix_total > 40
SELECT magasin, COUNT(client) FROM Achats GROUP BY magasin ORDER BY magasin DESC
SELECT magasin, COUNT(magasin) AS nb_achats FROM Achats GROUP BY magasin HAVING nb_achats >=2
Sous-requêtes
Dans les requêtes complexes, il arrive qu'on ait besoin de faire une sélection sur un tableau intermédiaire lui-
même résultat d'une requête.
Une sous-requête est encadrée par des parenthèses.
AS : introduit un alias pour renommer une colonne ou un tableau retourné par une requête. Utile pour renommer
les colonnes lors de l'affichage d'un résultat.
Deux types de sous-requêtes :
• sous-requête dans FROM : SELECT ... FROM (sous-requête) AS nom_provisoire
• sous-requête dans WHERE : SELECT .. FROM ... WHERE expression contenant une sous-requête
Exemples
SELECT client, AVG(prix_total) AS achat_moyen FROM Achats GROUP BY client
SELECT client, SUM(prix_total) AS total FROM Achats GROUP BY client HAVING total > 40
SELECT id, designation FROM Articles WHERE NOT EXISTS
(SELECT * FROM Achats WHERE Achats.article = Articles.id)
Jointures
Permettent de faire des requêtes sur plusieurs tables en précisant la condition de recollement entre les deux tables
SELECT colonne(s) FROM table1 JOIN table2 ON table1.colonneA = table2.colonneB WHERE ...
On peut réaliser la jointure avec WHERE :
SELECT colonnes(s) FROM table1, table2 WHERE table1.colonneA = table2.colonneB AND ...
Exemples
SELECT nom, designation FROM Clients JOIN Articles ON Clients.article_favori = Articles.id
SELECT nom, prenom, designation FROM Clients, Articles WHERE Clients.article_favori = Articles.id
SELECT Clients.nom, date, designation FROM Clients JOIN (Achats JOIN Articles
ON Achats.article = Articles.id) ON Achats.client = Clients.id WHERE article BETWEEN 3 AND 5
Clés et index
• Clé primaire : elles garantissent que deux lignes distinctes de la table ont des valeurs distinctes dans la
colonne correspondant à la clé primaire.
CREATE TABLE nom_table (nom_colonne, ... , PRIMARY KEY (colonne))
ALTER TABLE nom_table ADD PRIMARY KEY colonne
ALTER TABLE nom_table DROP PRIMARY KEY