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

47
Le langage SQL

Upload: nihel-lapeyre

Post on 03-Apr-2015

105 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

Le langage SQL

Page 2: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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)

Page 3: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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)

Page 4: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 5: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 6: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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)

Page 7: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 8: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 9: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 10: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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 :

Page 11: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 12: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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 »

Page 13: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

= 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 :

Page 14: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 15: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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 :

Page 16: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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:

Page 17: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 18: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 19: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 20: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

• 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

Page 21: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

• 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

Page 22: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

• 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

Page 23: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 24: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 25: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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)

Page 26: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 27: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 28: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 29: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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)

Page 30: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 31: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 32: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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)

Page 33: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 34: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 35: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 36: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 37: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 38: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 39: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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;

Page 40: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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;

Page 41: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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;

Page 42: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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’;

Page 43: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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)

Page 44: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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)

Page 45: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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)

Page 46: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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

Page 47: Le langage SQL. mis au point par Codd (SEQUEL SQL) historique : normalisation par lANSI en 1986 et par lISO en 1987 SQL2 en 1992, SQL3 en 1999 manipulation

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