Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et...
-
Upload
nihel-lapeyre -
Category
Documents
-
view
105 -
download
5
Transcript of Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et...
Le langage SQL
Le langage SQL
mis au point par Codd (SEQUEL SQL)
• historique :
normalisation par l’ANSI en 1986 et par l’ISO en 1987
SQL2 en 1992, SQL3 en 1999
manipulation de relations (tables)
• caractéristiques générales :
langage « non procédural » ou « déclaratif »
possibilité d’intégration dans des langages comme VB ou Java
aucun SGBD ne couvre toute la norme
• SQL (Structured Query Langage ou langage de requête structuré) : pseudo-langage informatique destiné à interroger ou à manipuler les bases de données relationnelles
interface SQL dans la majorité des SGBD (phpMyAdmin pour MySQL)
Principe général du langage SQL
• requête : ensemble d’instructions SQL (toujours terminé par « ; » )
un langage de définition des données (LDD ou en anglais DDL Data Definition Language) : création, modification ou suppression de tables
• contient :
un langage de manipulation des données (LMD ou en anglais DML Data Manipulation Language) : insertion, modification, suppression de données dans une table + interrogation des tables
un langage de contrôle des données (LCD ou en anglais DCL Data Control Language) : définition des privilèges afférents aux utilisateurs
un langage de contrôle des transactions (LCT ou en anglais TCL Transaction Control Language) : gestion des transactions (mécanismes assurant la cohérence et la stabilité de la base quoi qu’il arrive)
Le langage SQL : les requêtes
• Les requêtes monotabulaires
La sélection/restriction Opérateurs, expressions et fonctions non typés
Tri du résultat d’une requête
Fonctions statistiques et groupage- Fonctions statistiques- Groupage- Filtrage des agrégats
La projection
• Les requêtes multitabulaires
La notation pointée
La jointure interne Le produit cartésien
Le langage SQL : les requêtes
• Les requêtes monotabulaires
La sélection/restriction Opérateurs, expressions et fonctions non typés
Tri du résultat d’une requête
Fonctions statistiques et groupage- Fonctions statistiques- Groupage- Filtrage des agrégats
La projection
• Les requêtes multitabulaires
La notation pointée
La jointure interne Le produit cartésien
Base de données utilisée en exemple
Marque
Peugeot
Peugeot
Renault
Style
404
403
Alpine A310
NumVoit
1
4
5
Couleur
Rouge
Blanche
Rose
Citroen SM2 Noire
Opel GT3 Blanche
Renault Floride6 Bleue
Voiture (NumVoit, Marque, Style, Couleur)
Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
NumAch
1
4
5
Sexe
M
F
M
Irma Lille2 F
Henri Paris3 M
Personne (NumAch, Nom, Age, Ville, Sexe)
Age
96
34
50
20
45
Prix
10 000
45 000
NumVoit
1
5
DateVente
1985-12-03
2000-04-02
NumAch
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
Vente (DateVente, Prix, NumVoit, NumAch)
Projection
SELECT liste_des_colonnes_séparées_par_des_virgulesFROM nom_de_la_table
• entrée : une relation
• sortie : une nouvelle relation ayant une partie des attributs de la relation initiale et regroupant tous les enregistrements de la relation initiale
extraction de certaines colonnes de la table
diminution du degré de la relation
• notation : A(R) projection des attributs A de la relation R
Projection
exemple :
SELECT Nom, VilleFROM Personne;
Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
Irma Lille
Henri Paris
exemple :
SELECT *FROM Personne;
Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
NumAch
1
4
5
Sexe
M
F
M
Irma Lille2 F
Henri Paris3 M
Age
96
34
50
20
45
• possibilité de sélectionner toutes les colonnes : SELECT *
affichage de la table
Projection
exemple :
SELECT Ville AS CityFROM Personne;
City
Paris
Lyon
Bordeaux
Lille
Paris
• possibilité de renommer les colonnes : [AS] ([ ] optionnel)
exemple :
SELECT DISTINCT MarqueFROM Voiture;
• possibilité d’éliminer les doublons d’une colonne : DISTINCT
Marque
Peugeot
Citroen
Opel
Renault
Projection
• possibilité de créer une colonne : utilisation possible de constantes, d’expressions utilisant des opérateurs algébriques ou des fonctions
exemple : SELECT Prix, DateVente, (Prix / 6.55957) AS Prix_EurosFROM Vente;
+ Addiction- Soustraction* Multiplication/ Division
% Modulo
Prix_Euros
1 524.4902
6 860.2058
DateVente
1985-12-03
2000-04-02
10 671.43121996-03-30
4 573.47051998-06-14
Prix
10 000
45 000
70 000
30 000
• opérateurs algébriques :
Sélection (ou restriction)
• entrée : une relation
• sortie : une nouvelle relation ayant tous les attributs de la relation initiale et regroupant uniquement les enregistrements de la relation initiale satisfaisant certains critères
extraction de certaines lignes de la table
diminution de la cardinalité de la relation
WHERE expressions_de_conditions
• notation : C(R) sélection des enregistrement de la relation R satisfaisant aux critères C
Sélection (ou restriction)
• pour construire les expressions de conditions, utilisation d’opérateurs, d’expressions et de fonctions de différents types :
non typés
spécifiques des chaînes de caractères
spécifiques des nombres
spécifiques des valeurs temporelles
spécifiques des valeurs binaires
fonctions « système »
= Egal< > Différent< Inférieur> Supérieur
<= Inférieur ou égal>= Supérieur ou égal
exemple : SELECT *FROM VenteWHERE Prix > 50000;
Prix NumVoitDateVente NumAch
70 000 21996-03-30 4
Opérateurs, expressions et fonctions non typés
• opérateurs de comparaison :
exemples :
SELECT *FROM VoitureWHERE Couleur LIKE ‘Rouge’;
Marque
Peugeot
Style
404
NumVoit
1
Couleur
Rouge
Opérateurs, expressions et fonctions non typés
• remarque : pour les chaînes de caractères, utiliser l’opérateur LIKE
s LIKE m Compare la chaîne de caractères s avec le motif m
SELECT *FROM PersonneWHERE Nom LIKE ‘%e%’;
Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
NumAch
1
4
5
Sexe
M
F
M
Henri Paris3 M
Age
96
34
50
45
jokers du motif m : % zéro, un ou plusieurs caractères _ un et un seul caractère
BETWEEN <valeur> AND <valeur> Appartient à l’intervalleIN <liste de valeurs > Appartient à l’ensemble de valeursIS NULL Teste si la colonne n’est pas renseignée
exemples :
SELECT *FROM VoitureWHERE Couleur IN (‘Blanc’, ‘Rouge’);
Marque
Peugeot
Style
404
NumVoit
1
Couleur
Rouge
SELECT *FROM PersonneWHERE Age BETWEEN 40 AND 60;
Nom
Jacques
Ville
Bordeaux
NumAch
5
Sexe
M
Henri Paris3 M
Age
50
45
Opérateurs, expressions et fonctions non typés
• opérateurs permettant de constituer des expressions SQL :
AND Et : les deux conditions sont vraies simultanémentOR Ou : l’une de deux conditions est vraie
NOT Inversion de la condition
exemples :
SELECT *FROM VoitureWHERE Couleur = ‘Blanche’ OR Marque = ‘Peugeot’;
SELECT *FROM PersonneWHERE NOT Ville = ‘Paris’;
Marque
Peugeot
Peugeot
Style
404
403
NumVoit
1
4
Couleur
Rouge
Blanche
Opel GT3 Blanche
Nom
Josette
Jacques
Ville
Lyon
Bordeaux
NumAch
4
5
Sexe
F
M
Irma Lille2 F
Age
34
50
20
Opérateurs, expressions et fonctions non typés
• connecteurs logiques et opérateur de négation:
exemples :
SELECT NumAch, Nom, AgeFROM PersonneWHERE (Age BETWEEN 30 AND 50) AND Sexe LIKE ‘F’;
SELECT Nom, SexeFROM PersonneWHERE Ville LIKE ‘Paris’;
Nom
Opérateurs, expressions et fonctions non typés
Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
NumAch
1
4
5
Sexe
M
F
M
Irma Lille2 F
Henri Paris3 M
Personne (NumAch, Nom, Age, Ville, Sexe)
Age
96
34
50
20
45
Nestor
Henri
Sexe
M
M
Nom
Josette
NumAch
4
Age
34
Fonctions statistiques et groupage : fonctions statistiques
• objectif : effectuer des calculs statistiques sur toutes les valeurs d’une colonne d’une table
COUNT Comptage du nombre d’élémentsMAX Maximum des éléments d’une colonne MIN Minimum des éléments d’une colonneAVG Moyenne des éléments d’une colonneSUM Somme des éléments d’une colonne
• quelques fonctions statistiques de SQL :
• remarque : COUNT(*) compte le nombre de lignes de la table
Fonctions statistiques et groupage : fonctions statistiques
exemples :
SELECT AVG(Prix) AS Prix_MoyenFROM Vente;
SELECT COUNT(*) AS Nombre_PersonnesFROM Personne;
Prix_Moyen
38 750.0000
Nombre_Personnes
5
• objectif : regrouper les lignes d’une table par valeurs contenues dans une colonne
GROUP BY nom_de_la_colonne_où_s’effectue_l’agrégat
exemple :
SELECT MarqueFROM VoitureGROUP BY Marque;
Marque
Peugeot
Citroen
Opel
Renault
Fonctions statistiques et groupage : le groupage
• utilisation courante de GROUP BY: appliquer en une seule instruction des fonctions statistiques aux différents sous-ensembles d’une table constitués par GROUP BY
exemples :
SELECT Marque, COUNT(*) AS CompteFROM VoitureGROUP BY Marque;
Marque
Peugeot
Citroen
Opel
Renault
Compte
2
1
1
2
SELECT Ville, AVG (Age) AS Age_MoyenFROM PersonneGROUP BY Ville;
Ville
Lyon
Bordeaux
Age_Moyen
34.0000
50.0000
Lille 20.0000
Paris 70.5000
Fonctions statistiques et groupage : le groupage
• objectif : filtrage du résultat des fonctions statistiques appliquées aux sous-ensembles définis par le groupage
exemple :
SELECT Marque, COUNT(*) AS CompteFROM VoitureGROUP BY MarqueHAVING COUNT(*) > 1;
Marque
Peugeot
Renault
Compte
2
2
Fonctions statistiques et groupage : filtrage des agrégats
HAVING expressions_de_conditions
remarque : HAVING permet d’effectuer une sélection sur le résultat de l’opération de groupage, i.e. après le groupage le mot clé WHERE opère une sélection sur les éléments de la table avant l’opération de groupage
exemple :
SELECT Marque, COUNT(*) AS CompteFROM VoitureWHERE NOT (Couleur = ‘Rouge’)GROUP BY Marque;
Marque
Peugeot
Citroen
Opel
Renault
Compte
1
1
1
2
Fonctions statistiques et groupage : filtrage des agrégats
remarque : HAVING permet d’effectuer une sélection sur le résultat de l’opération de groupage, i.e. après le groupage le mot clé WHERE opère une sélection sur les éléments de la table avant l’opération de groupage
exemple :
SELECT Marque, COUNT(*) AS CompteFROM VoitureWHERE NOT (Couleur = ‘Rouge’)GROUP BY MarqueHAVING COUNT(*) > 1;
Marque
Renault
Compte
2
Fonctions statistiques et groupage : filtrage des agrégats
Tri du résultat d’une requête
• objectif : trier le résultat d’une requête selon une ou plusieurs colonnes
ORDER BY liste_des_colonnes_séparées_par_des_virgules
• possibilité de préciser l’ordre du tri : ASC (croissant par défaut) ou DESC (décroissant)
Tri du résultat d’une requête
exemples :
SELECT Prix, DateVenteFROM VenteORDER BY Prix DESC;
Prix
10 000
45 000
DateVente
1985-12-03
2000-04-02
70 000 1996-03-30
30 000 1998-06-14
SELECT Nom, Age, VilleFROM PersonneORDER BY Ville, Age;
Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
Irma Lille
Henri Paris
Age
96
34
50
20
45
Le langage SQL : les requêtes
• Les requêtes monotabulaires
• Les requêtes multitabulaires
La sélection/restriction Opérateurs, expressions et fonctions non typés
Tri du résultat d’une requête
Fonctions statistiques et groupage- Fonctions statistiques- Groupage- Filtrage des agrégats
La notation pointée
La projection
La jointure interne Le produit cartésien
Le langage SQL : les requêtes
• Les requêtes monotabulaires
• Les requêtes multitabulaires
La sélection/restriction Opérateurs, expressions et fonctions non typés
Tri du résultat d’une requête
Fonctions statistiques et groupage- Fonctions statistiques- Groupage- Filtrage des agrégats
La notation pointée
La projection
La jointure interne Le produit cartésien
Base de données utilisée en exemple
Marque
Peugeot
Peugeot
Renault
Style
404
403
Alpine A310
NumVoit
1
4
5
Couleur
Rouge
Blanche
Rose
Citroen SM2 Noire
Opel GT3 Blanche
Renault Floride6 Bleue
Voiture (NumVoit, Marque, Style, Couleur)
Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
NumAch
1
4
5
Sexe
M
F
M
Irma Lille2 F
Henri Paris3 M
Personne (NumAch, Nom, Age, Ville, Sexe)
Age
96
34
50
20
45
Prix
10 000
45 000
NumVoit
1
5
DateVente
1985-12-03
2000-04-02
NumAch
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
Vente (DateVente, Prix, NumVoit, NumAch)
La notation pointée
• objectif : distinguer les tables dont on manipule les colonnes
remarque : cette notation est aussi utilisable avec une seule table
exemples :
SELECT Voiture.Marque, Voiture.CouleurFROM Voiture;
Marque
Peugeot
Peugeot
Renault
Couleur
Rouge
Blanche
Rose
Citroen Noire
Opel Blanche
Renault Bleue
remarque : cette notation peut devenir fastidieuse alias de la table
SELECT Vo.Marque, Vo.CouleurFROM Voiture AS Vo;
Marque
Peugeot
Peugeot
Renault
Couleur
Rouge
Blanche
Rose
Citroen Noire
Opel Blanche
Renault Bleue
FROM nom_de_la_table AS alias_de_la_table
Le produit cartésien
• entrée : deux relations ayant des attributs quelconques
• sortie : une nouvelle relation ayant tous les attributs de la première relation et tous les attributs de la seconde relation et regroupant toutes les possibilités de combinaison des enregistrements des deux relations
• notation :
SELECT *FROM table_1, table_2
Le produit cartésien
exemple :
Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
NumAch
1
4
5
Sexe
M
F
M
Irma Lille2 F
Henri Paris3 M
Personne (NumAch, Nom, Age, Ville, Sexe)
Age
96
34
50
20
45
Prix
10 000
45 000
NumVoit
1
5
DateVente
1985-12-03
2000-04-02
NumAch
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
Vente (DateVente, Prix, NumVoit, NumAch)
Le produit cartésien
exemple :
Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
Personne.NumAch
1
4
5
Sexe
M
F
M
Irma Lille2 F
Henri Paris3 M
Age
96
34
50
20
45
Prix
10 000
45 000
NumVoit
1
5
DateVente
1985-12-03
2000-04-02
Vente.NumAch
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
SELECT *From Vente, Personne
Nestor Paris1 M96
Nestor Paris1 M96
Nestor Paris1 M96
10 000
45 000
1
5
1985-12-03
2000-04-02
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
10 000
45 000
1
5
1985-12-03
2000-04-02
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
45 000 52000-04-02 2
70 000 21996-03-30 4
30 000 41998-06-14 1
10 000
45 000
1
5
1985-12-03
2000-04-02
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
Irma Lille2 F20
Irma Lille2 F20
Irma Lille2 F20
Henri Paris3 M45
Henri Paris3 M45
Henri Paris3 M45
Josette Lyon4 F34
Josette Lyon4 F34
Jacques Bordeaux5 M50
Jacques Bordeaux5 M50
Jacques Bordeaux5 M50
10 000 11985-12-03 1
Josette Lyon4 F34
La jointure interne
• entrée : deux relations R1 et R2 ayant au plus un attribut commun (A)
• sortie : une nouvelle relation ayant tous les attributs des deux relations et regroupant uniquement toutes les possibilités de combinaison des enregistrements des relations R1 et R2 pour lesquels il y a égalité entre l’attribut A (ou A1) de la relation R1 et l’attribut A (ou A2) de la relation R2
• notation : R1A1 A2R2 A1=A2(R1R2)
produit cartésien des deux relations puis sélection des enregistrements dont les contenus des attributs sur lesquels on fait la jointure sont égaux
FROM table_1, table_2 WHERE table_1.attributA1 = table_2.attributA2
FROM table_1 INNER JOIN table_2 ON table_1.attributA1 = table_2.attributA2
exemple :
Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
NumAch
1
4
5
Sexe
M
F
M
Irma Lille2 F
Henri Paris3 M
Personne (NumAch, Nom, Age, Ville, Sexe)
Age
96
34
50
20
45
Prix
10 000
45 000
NumVoit
1
5
DateVente
1985-12-03
2000-04-02
NumAch
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
Vente (DateVente, Prix, NumVoit, NumAch)
La jointure interne
exemple :
Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
Personne.NumAch
1
4
5
Sexe
M
F
M
Irma Lille2 F
Henri Paris3 M
Age
96
34
50
20
45
Prix
10 000
45 000
NumVoit
1
5
DateVente
1985-12-03
2000-04-02
Vente.NumAch
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
Vente x Personne
Nestor Paris1 M96
Nestor Paris1 M96
Nestor Paris1 M96
10 000
45 000
1
5
1985-12-03
2000-04-02
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
10 000
45 000
1
5
1985-12-03
2000-04-02
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
45 000 52000-04-02 2
70 000 21996-03-30 4
30 000 41998-06-14 1
10 000
45 000
1
5
1985-12-03
2000-04-02
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
Irma Lille2 F20
Irma Lille2 F20
Irma Lille2 F20
Henri Paris3 M45
Henri Paris3 M45
Henri Paris3 M45
Josette Lyon4 F34
Josette Lyon4 F34
Jacques Bordeaux5 M50
Jacques Bordeaux5 M50
Jacques Bordeaux5 M50
10 000 11985-12-03 1
Josette Lyon4 F34
La jointure interne
exemple :
Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
Personne.NumAch
1
4
5
Sexe
M
F
M
Irma Lille2 F
Henri Paris3 M
Age
96
34
50
20
45
Prix
10 000
45 000
NumVoit
1
5
DateVente
1985-12-03
2000-04-02
Vente.NumAch
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
Nestor Paris1 M96
Nestor Paris1 M96
Nestor Paris1 M96
10 000
45 000
1
5
1985-12-03
2000-04-02
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
10 000
45 000
1
5
1985-12-03
2000-04-02
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
45 000 52000-04-02 2
70 000 21996-03-30 4
30 000 41998-06-14 1
10 000
45 000
1
5
1985-12-03
2000-04-02
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
Irma Lille2 F20
Irma Lille2 F20
Irma Lille2 F20
Henri Paris3 M45
Henri Paris3 M45
Henri Paris3 M45
Josette Lyon4 F34
Josette Lyon4 F34
Jacques Bordeaux5 M50
Jacques Bordeaux5 M50
Jacques Bordeaux5 M50
10 000 11985-12-03 1
Josette Lyon4 F34
NumAch=NumAch(VentePersonne)
La jointure interne
exemple :
Nom
Nestor
Ville
Paris
Personne.NumAch
1
Sexe
M
Age
96
Prix
10 000
NumVoit
1
DateVente
1985-12-03
Vente.NumAch
1
30 000 41998-06-14 1 Nestor Paris1 M96
45 000 52000-04-02 2
70 000 21996-03-30 4
Irma Lille2 F20
Josette Lyon4 F34
NumAch=NumAch(VentePersonne)
NumAch=NumAch(VentePersonne) VenteNumAch NumAchPersonne
La jointure interne
exemple :
Nom
Nestor
Ville
Paris
Personne.NumAch
1
Sexe
M
Age
96
Prix
10 000
NumVoit
1
DateVente
1985-12-03
Vente.NumAch
1
30 000 41998-06-14 1 Nestor Paris1 M96
45 000 52000-04-02 2
70 000 21996-03-30 4
Irma Lille2 F20
Josette Lyon4 F34
NumAch=NumAch(VentePersonne)
SELECT *FROM Vente, Personne WHERE Vente.NumAch = Personne.NumAch;
La jointure interne
SELECT *FROM Vente INNER JOIN Personne ON Vente.NumAch = Personne.NumAch;
exemple :
Nom
Nestor
Ville
Paris
Personne.NumAch
1
Sexe
M
Age
96
Prix
10 000
NumVoit
1
DateVente
1985-12-03
Vente.NumAch
1
30 000 41998-06-14 1Nestor Paris1 M96
45 000 52000-04-02 2
70 000 21996-03-30 4
Irma Lille2 F20
Josette Lyon4 F34
NumAch=NumAch(PersonneVente)
SELECT *FROM Personne, VenteWHERE Vente.NumAch =Personne.NumAch;
La jointure interne
SELECT *FROM Personne INNER JOIN Vente ON Vente.NumAch =Personne.NumAch;
La jointure interne
SELECT Personne.Nom, Personne.Ville, Vente.DateVente, Vente.PrixFROM Vente INNER JOIN Personne ON Vente.NumAch = Personne.NumAch;
Nom
Nestor
Nestor
Irma
Josette
Ville
Paris
Paris
Lille
Lyon
DateVente
1985-12-03
1998-06-14
2000-04-02
1996-03-30
Prix
10 000
30 000
45 000
70 000
Pour les personnes ayant acheté une voiture, donnez leur nom, le nom de leur ville d’origine, la date de l’achat et le prix de cet achat.
SELECT Personne.Nom, Personne.Ville, Vente.DateVente, Vente.PrixFROM Vente, Personne WHERE Vente.NumAch = Personne.NumAch;
La jointure interne
SELECT Personne.Nom, Vente.DateVente, Vente.PrixFROM Vente INNER JOIN Personne ON Vente.NumAch = Personne.NumAchWHERE Ville = ‘Paris’;
Nom
Nestor
Nestor
DateVente
1985-12-03
1998-06-14
Prix
10 000
30 000
Pour les personnes ayant acheté une voiture et vivant à Paris, donnez leur nom, la date de l’achat et le prix de cet achat.
SELECT Personne.Nom, Vente.DateVente, Vente.prixFROM Vente, Personne WHERE Vente.NumAch = Personne.NumAch AND Personne.Ville = ‘Paris’;
La jointure interne
SELECT Personne.Nom, Voiture.StyleFROM Personne, Vente, VoitureWHERE Personne.NumAch = Vente.NumAch AND Vente.NumVoit = Voiture.NumVoit;
Donnez le nom des personnes ayant acheté une voiture et le style de la voiture achetée.
Marque
Peugeot
Peugeot
Renault
Style
404
403
Alpine A310
NumVoit
1
4
5
Couleur
Rouge
Blanche
Rose
Citroen SM2 Noire
Opel GT3 Blanche
Renault Floride6 Bleue
Voiture (NumVoit, Marque, Style, Couleur) Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
NumAch
1
4
5
Sexe
M
F
M
Irma Lille2 F
Henri Paris3 M
Personne (NumAch, Nom, Age, Ville, Sexe)
Age
96
34
50
20
45
Prix
10 000
45 000
NumVoit
1
5
DateVente
1985-12-03
2000-04-02
NumAch
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
Vente (DateVente, Prix, NumVoit, NumAch)
La jointure interne
SELECT Personne.Nom, Voiture.StyleFROM Personne INNER JOIN Vente INNER JOIN Voiture ON Personne.NumAch = Vente.NumAch AND Vente.NumVoit = Voiture.NumVoit;
Donnez le nom des personnes ayant acheté une voiture et le style de la voiture achetée.
Marque
Peugeot
Peugeot
Renault
Style
404
403
Alpine A310
NumVoit
1
4
5
Couleur
Rouge
Blanche
Rose
Citroen SM2 Noire
Opel GT3 Blanche
Renault Floride6 Bleue
Voiture (NumVoit, Marque, Style, Couleur) Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
NumAch
1
4
5
Sexe
M
F
M
Irma Lille2 F
Henri Paris3 M
Personne (NumAch, Nom, Age, Ville, Sexe)
Age
96
34
50
20
45
Prix
10 000
45 000
NumVoit
1
5
DateVente
1985-12-03
2000-04-02
NumAch
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
Vente (DateVente, Prix, NumVoit, NumAch)
La jointure interne
SELECT Personne.Nom, Voiture.StyleFROM Personne, Vente, VoitureWHERE Personne.NumAch = Vente.NumAch AND Vente.NumVoit = Voiture.NumVoit AND Voiture.Style = ‘404’;
Donnez le nom des personnes ayant acheté une voiture de style 404
Marque
Peugeot
Peugeot
Renault
Style
404
403
Alpine A310
NumVoit
1
4
5
Couleur
Rouge
Blanche
Rose
Citroen SM2 Noire
Opel GT3 Blanche
Renault Floride6 Bleue
Voiture (NumVoit, Marque, Style, Couleur) Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
NumAch
1
4
5
Sexe
M
F
M
Irma Lille2 F
Henri Paris3 M
Personne (NumAch, Nom, Age, Ville, Sexe)
Age
96
34
50
20
45
Prix
10 000
45 000
NumVoit
1
5
DateVente
1985-12-03
2000-04-02
NumAch
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
Vente (DateVente, Prix, NumVoit, NumAch)
La jointure interne
SELECT Personne.Nom, Voiture.StyleFROM Personne INNER JOIN Vente INNER JOIN Voiture ON Personne.NumAch = Vente.NumAch AND Vente.NumVoit = Voiture.NumVoitWHERE Voiture.Style = ‘404’;
Marque
Peugeot
Peugeot
Renault
Style
404
403
Alpine A310
NumVoit
1
4
5
Couleur
Rouge
Blanche
Rose
Citroen SM2 Noire
Opel GT3 Blanche
Renault Floride6 Bleue
Voiture (NumVoit, Marque, Style, Couleur) Nom
Nestor
Josette
Jacques
Ville
Paris
Lyon
Bordeaux
NumAch
1
4
5
Sexe
M
F
M
Irma Lille2 F
Henri Paris3 M
Personne (NumAch, Nom, Age, Ville, Sexe)
Age
96
34
50
20
45
Prix
10 000
45 000
NumVoit
1
5
DateVente
1985-12-03
2000-04-02
NumAch
1
2
70 000 21996-03-30 4
30 000 41998-06-14 1
Vente (DateVente, Prix, NumVoit, NumAch)
Donnez le nom des personnes ayant acheté une voiture de style 404
Résumé des requêtes SQL
SELECT liste_des_attributs
FROM liste_des_tables
[ WHERE liste_de_critères ]
[ GROUP BY liste_des_attributs ]
[ HAVING liste_de_critères ]
[ ORDER BY liste_des_attributs ]
DISTINCT, [AS]
+,-,*,/,%
AVG, MAX, MIN,SUM, COUNT
<,<=, >, >=, =, < >
BETWEEN, IN, IS NULL
AND, OR, NOT
[ASC], DESC
LIKE
INNER JOIN ON