le langage sql. mis au point par codd (sequel sql) historique : normalisation par lansi en 1986 et...

Post on 03-Apr-2015

105 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related