La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Le langage SQL.

Présentations similaires


Présentation au sujet: "Le langage SQL."— Transcription de la présentation:

1 Le langage SQL

2 Le langage SQL SQL (Structured Query Langage ou langage de requête structuré) : pseudo-langage informatique destiné à interroger ou à manipuler les bases de données relationnelles historique :  mis au point par Codd (SEQUEL  SQL)  normalisation par l’ANSI en 1986 et par l’ISO en 1987  SQL2 en 1992, SQL3 en 1999 caractéristiques générales :  manipulation de relations (tables) Les modèles de données (ou modèles de BD) décrivent la manière dont l’information est structurée dans une BD. Ils permettent de traduire l’information vers une représentation utilisable en informatique. L’évolution de ces modèles a suivie les avancées de l’informatique. Dans la première génération de modèles, le modèle hiérarchique où les données sont représentées sous forme d’un arbre, et le modèle réseau, où les données sont représentées sous forme d’un graphe quelconque, il existe un lien très fort entre le niveau logique et le niveau physique, ce qui présente certains inconvénients La séparation de ce deux niveaux est arrivée avec le modèle de 2ème génération, le modèle relationnel dans lequel les données sont représentées sous forme de tables. Dans les années 80 après le développement des langages orientés objets, sont apparus les modèles de 3ème génération : le modèle objet où les données sont représentées sous forme d’objets et le modèle relationnel-objet hybride entre le modèle objet et le modèle relationnel. Malgré leur apparition, le modèle relationnel reste celui qui le plus utilisé aujourd’hui. C’est donc celui que nous verrons (reverrons en fait).  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  interface SQL dans la majorité des SGBD (phpMyAdmin pour MySQL)

3 Principe général du langage SQL
requête : ensemble d’instructions SQL (toujours terminé par « ; » ) contient :  un langage de définition des données (LDD ou en anglais DDL Data Definition Language) : création, modification ou suppression de tables  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 Les modèles de données (ou modèles de BD) décrivent la manière dont l’information est structurée dans une BD. Ils permettent de traduire l’information vers une représentation utilisable en informatique. L’évolution de ces modèles a suivie les avancées de l’informatique. Dans la première génération de modèles, le modèle hiérarchique où les données sont représentées sous forme d’un arbre, et le modèle réseau, où les données sont représentées sous forme d’un graphe quelconque, il existe un lien très fort entre le niveau logique et le niveau physique, ce qui présente certains inconvénients La séparation de ce deux niveaux est arrivée avec le modèle de 2ème génération, le modèle relationnel dans lequel les données sont représentées sous forme de tables. Dans les années 80 après le développement des langages orientés objets, sont apparus les modèles de 3ème génération : le modèle objet où les données sont représentées sous forme d’objets et le modèle relationnel-objet hybride entre le modèle objet et le modèle relationnel. Malgré leur apparition, le modèle relationnel reste celui qui le plus utilisé aujourd’hui. C’est donc celui que nous verrons (reverrons en fait).  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)

4 Le langage SQL : les requêtes
Les requêtes monotabulaires  La projection  La sélection/restriction  Opérateurs, expressions et fonctions non typés  Fonctions statistiques et groupage - Fonctions statistiques - Groupage - Filtrage des agrégats  Tri du résultat d’une requête Les requêtes multitabulaires  La notation pointée  Le produit cartésien  La jointure interne

5 Le langage SQL : les requêtes
Les requêtes monotabulaires  La projection  La sélection/restriction  Opérateurs, expressions et fonctions non typés  Fonctions statistiques et groupage - Fonctions statistiques - Groupage - Filtrage des agrégats  Tri du résultat d’une requête Les requêtes multitabulaires  La notation pointée  Le produit cartésien  La jointure interne

6 Base de données utilisée en exemple
Voiture (NumVoit, Marque, Style, Couleur) NumVoit Marque Style Couleur 1 Peugeot 404 Rouge 2 Citroen SM Noire 3 Opel GT Blanche 4 Peugeot 403 Blanche 5 Renault Alpine A310 Rose 6 Renault Floride Bleue Personne (NumAch, Nom, Age, Ville, Sexe) NumAch Nom Age Ville Sexe 1 Nestor 96 Paris M 2 Irma 20 Lille F 3 Henri 45 Paris M 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M Vente (DateVente, Prix, NumVoit, NumAch) DateVente Prix NumVoit NumAch 10 000 1 1 70 000 2 4 30 000 4 1 45 000 5 2

7 Projection 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 SELECT liste_des_colonnes_séparées_par_des_virgules FROM nom_de_la_table

8 Projection possibilité de sélectionner toutes les colonnes : SELECT *
exemple : Nom Ville Nestor Paris SELECT Nom, Ville FROM Personne; Irma Lille Henri Paris Josette Lyon Jacques Bordeaux possibilité de sélectionner toutes les colonnes : SELECT *  affichage de la table exemple : NumAch Nom Age Ville Sexe SELECT * FROM Personne; 1 Nestor 96 Paris M 2 Irma 20 Lille F 3 Henri 45 Paris M 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M

9 Projection possibilité de renommer les colonnes : [AS] ([ ]  optionnel) exemple : City SELECT Ville AS City FROM Personne; Paris Lille Paris Lyon Bordeaux possibilité d’éliminer les doublons d’une colonne : DISTINCT exemple : Marque SELECT DISTINCT Marque FROM Voiture; Citroen Opel Peugeot Renault

10 Projection possibilité de créer une colonne : utilisation possible de constantes, d’expressions utilisant des opérateurs algébriques ou des fonctions opérateurs algébriques : + Addiction - Soustraction * Multiplication / Division % Modulo exemple : SELECT Prix, DateVente, (Prix / ) AS Prix_Euros FROM Vente; Prix DateVente Prix_Euros 10 000 70 000 30 000 45 000

11 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 notation : C(R)  sélection des enregistrement de la relation R satisfaisant aux critères C WHERE expressions_de_conditions

12 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 »

13 Opérateurs, expressions et fonctions non typés
opérateurs de comparaison : = Egal < > Différent < Inférieur > Supérieur <= Inférieur ou égal >= Supérieur ou égal exemple : SELECT * FROM Vente WHERE Prix > 50000; DateVente Prix NumVoit NumAch 70 000 2 4

14 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 jokers du motif m : %  zéro, un ou plusieurs caractères _  un et un seul caractère exemples : SELECT * FROM Voiture WHERE Couleur LIKE ‘Rouge’; NumVoit Marque Style Couleur 1 Peugeot 404 Rouge NumAch Nom Age Ville Sexe SELECT * FROM Personne WHERE Nom LIKE ‘%e%’; 1 Nestor 96 Paris M 3 Henri 45 Paris M 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M

15 Opérateurs, expressions et fonctions non typés
opérateurs permettant de constituer des expressions SQL : BETWEEN <valeur> AND <valeur> Appartient à l’intervalle IN <liste de valeurs > Appartient à l’ensemble de valeurs IS NULL Teste si la colonne n’est pas renseignée exemples : SELECT * FROM Personne WHERE Age BETWEEN 40 AND 60; NumAch Nom Age Ville Sexe 3 Henri 45 Paris M 5 Jacques 50 Bordeaux M SELECT * FROM Voiture WHERE Couleur IN (‘Blanc’, ‘Rouge’); NumVoit Marque Style Couleur 1 Peugeot 404 Rouge

16 Opérateurs, expressions et fonctions non typés
connecteurs logiques et opérateur de négation: AND Et : les deux conditions sont vraies simultanément OR Ou : l’une de deux conditions est vraie NOT Inversion de la condition exemples : NumVoit Marque Style Couleur 1 Peugeot 404 Rouge SELECT * FROM Voiture WHERE Couleur = ‘Blanche’ OR Marque = ‘Peugeot’; 3 Opel GT Blanche 4 Peugeot 403 Blanche SELECT * FROM Personne WHERE NOT Ville = ‘Paris’; NumAch Nom Age Ville Sexe 2 Irma 20 Lille F 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M

17 Opérateurs, expressions et fonctions non typés
Personne (NumAch, Nom, Age, Ville, Sexe) NumAch Nom Age Ville Sexe 1 Nestor 96 Paris M 2 Irma 20 Lille F 3 Henri 45 Paris M 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M exemples : SELECT Nom, Sexe FROM Personne WHERE Ville LIKE ‘Paris’; Nom Sexe Nestor M Henri M SELECT NumAch, Nom, Age FROM Personne WHERE (Age BETWEEN 30 AND 50) AND Sexe LIKE ‘F’; NumAch Nom Age 4 Josette 34

18 Fonctions statistiques et groupage : fonctions statistiques
objectif : effectuer des calculs statistiques sur toutes les valeurs d’une colonne d’une table quelques fonctions statistiques de SQL : COUNT Comptage du nombre d’éléments MAX Maximum des éléments d’une colonne MIN Minimum des éléments d’une colonne AVG Moyenne des éléments d’une colonne SUM Somme des éléments d’une colonne remarque : COUNT(*) compte le nombre de lignes de la table

19 Fonctions statistiques et groupage : fonctions statistiques
exemples : SELECT AVG(Prix) AS Prix_Moyen FROM Vente; Prix_Moyen SELECT COUNT(*) AS Nombre_Personnes FROM Personne; Nombre_Personnes 5

20 Fonctions statistiques et groupage : le groupage
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 : Marque SELECT Marque FROM Voiture GROUP BY Marque; Citroen Opel Peugeot Renault

21 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 Compte FROM Voiture GROUP BY Marque; Marque Compte Citroen 1 Opel 1 Peugeot 2 Renault 2 Ville Age_Moyen SELECT Ville, AVG (Age) AS Age_Moyen FROM Personne GROUP BY Ville; Bordeaux Lille Lyon Paris

22 Fonctions statistiques et groupage : filtrage des agrégats
objectif : filtrage du résultat des fonctions statistiques appliquées aux sous-ensembles définis par le groupage HAVING expressions_de_conditions exemple : SELECT Marque, COUNT(*) AS Compte FROM Voiture GROUP BY Marque HAVING COUNT(*) > 1; Marque Compte Peugeot 2 Renault 2

23 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 Compte FROM Voiture WHERE NOT (Couleur = ‘Rouge’) GROUP BY Marque; Marque Compte Citroen 1 Opel 1 Peugeot 1 Renault 2

24 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 Compte FROM Voiture WHERE NOT (Couleur = ‘Rouge’) GROUP BY Marque HAVING COUNT(*) > 1; Marque Compte Renault 2

25 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)

26 Tri du résultat d’une requête
exemples : Prix DateVente SELECT Prix, DateVente FROM Vente ORDER BY Prix DESC; 70 000 45 000 30 000 10 000 Nom Age Ville SELECT Nom, Age, Ville FROM Personne ORDER BY Ville, Age; Jacques 50 Bordeaux Irma 20 Lille Josette 34 Lyon Henri 45 Paris Nestor 96 Paris

27 Le langage SQL : les requêtes
Les requêtes monotabulaires  La projection  La sélection/restriction  Opérateurs, expressions et fonctions non typés  Fonctions statistiques et groupage - Fonctions statistiques - Groupage - Filtrage des agrégats  Tri du résultat d’une requête Les requêtes multitabulaires  La notation pointée  Le produit cartésien  La jointure interne

28 Le langage SQL : les requêtes
Les requêtes monotabulaires  La projection  La sélection/restriction  Opérateurs, expressions et fonctions non typés  Fonctions statistiques et groupage - Fonctions statistiques - Groupage - Filtrage des agrégats  Tri du résultat d’une requête Les requêtes multitabulaires  La notation pointée  Le produit cartésien  La jointure interne

29 Base de données utilisée en exemple
Voiture (NumVoit, Marque, Style, Couleur) NumVoit Marque Style Couleur 1 Peugeot 404 Rouge 2 Citroen SM Noire 3 Opel GT Blanche 4 Peugeot 403 Blanche 5 Renault Alpine A310 Rose 6 Renault Floride Bleue Personne (NumAch, Nom, Age, Ville, Sexe) NumAch Nom Age Ville Sexe 1 Nestor 96 Paris M 2 Irma 20 Lille F 3 Henri 45 Paris M 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M Vente (DateVente, Prix, NumVoit, NumAch) DateVente Prix NumVoit NumAch 10 000 1 1 70 000 2 4 30 000 4 1 45 000 5 2

30 La notation pointée objectif : distinguer les tables dont on manipule les colonnes  remarque : cette notation est aussi utilisable avec une seule table remarque : cette notation peut devenir fastidieuse  alias de la table FROM nom_de_la_table AS alias_de_la_table exemples : Marque Couleur Peugeot Rouge SELECT Voiture.Marque, Voiture.Couleur FROM Voiture; Citroen Noire Opel Blanche Peugeot Blanche Renault Rose Renault Bleue Marque Couleur Peugeot Rouge SELECT Vo.Marque, Vo.Couleur FROM Voiture AS Vo; Citroen Noire Opel Blanche Peugeot Blanche Renault Rose Renault Bleue

31 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

32 Le produit cartésien exemple :
Vente (DateVente, Prix, NumVoit, NumAch) Personne (NumAch, Nom, Age, Ville, Sexe) DateVente Prix NumVoit NumAch NumAch Nom Age Ville Sexe 10 000 1 1 1 Nestor 96 Paris M 70 000 2 4 2 Irma 20 Lille F 30 000 4 1 3 Henri 45 Paris M 45 000 5 2 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M

33 Le produit cartésien exemple : SELECT * From Vente, Personne DateVente
Prix NumVoit Vente.NumAch Personne.NumAch Nom Age Ville Sexe 10 000 1 1 1 Nestor 96 Paris M 70 000 2 4 1 Nestor 96 Paris M 30 000 4 1 1 Nestor 96 Paris M 45 000 5 2 1 Nestor 96 Paris M 10 000 1 1 2 Irma 20 Lille F 70 000 2 4 2 Irma 20 Lille F 30 000 4 1 2 Irma 20 Lille F 45 000 5 2 2 Irma 20 Lille F 10 000 1 1 3 Henri 45 Paris M 70 000 2 4 3 Henri 45 Paris M 30 000 4 1 3 Henri 45 Paris M 45 000 5 2 3 Henri 45 Paris M 10 000 1 1 4 Josette 34 Lyon F 70 000 2 4 4 Josette 34 Lyon F 30 000 4 1 4 Josette 34 Lyon F 45 000 5 2 4 Josette 34 Lyon F 10 000 1 1 5 Jacques 50 Bordeaux M 70 000 2 4 5 Jacques 50 Bordeaux M 30 000 4 1 5 Jacques 50 Bordeaux M 45 000 5 2 5 Jacques 50 Bordeaux M

34 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 produit cartésien des deux relations puis sélection des enregistrements dont les contenus des attributs sur lesquels on fait la jointure sont égaux notation : R1A A2R2  A1=A2(R1R2) FROM table_1 INNER JOIN table_2 ON table_1.attributA1 = table_2.attributA2 FROM table_1, table_2 WHERE table_1.attributA1 = table_2.attributA2

35 La jointure interne exemple : Vente (DateVente, Prix, NumVoit, NumAch)
Personne (NumAch, Nom, Age, Ville, Sexe) DateVente Prix NumVoit NumAch NumAch Nom Age Ville Sexe 10 000 1 1 1 Nestor 96 Paris M 70 000 2 4 2 Irma 20 Lille F 30 000 4 1 3 Henri 45 Paris M 45 000 5 2 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M

36 La jointure interne exemple : Vente x Personne DateVente Prix NumVoit
Vente.NumAch Personne.NumAch Nom Age Ville Sexe 10 000 1 1 1 Nestor 96 Paris M 70 000 2 4 1 Nestor 96 Paris M 30 000 4 1 1 Nestor 96 Paris M 45 000 5 2 1 Nestor 96 Paris M 10 000 1 1 2 Irma 20 Lille F 70 000 2 4 2 Irma 20 Lille F 30 000 4 1 2 Irma 20 Lille F 45 000 5 2 2 Irma 20 Lille F 10 000 1 1 3 Henri 45 Paris M 70 000 2 4 3 Henri 45 Paris M 30 000 4 1 3 Henri 45 Paris M 45 000 5 2 3 Henri 45 Paris M 10 000 1 1 4 Josette 34 Lyon F 70 000 2 4 4 Josette 34 Lyon F 30 000 4 1 4 Josette 34 Lyon F 45 000 5 2 4 Josette 34 Lyon F 10 000 1 1 5 Jacques 50 Bordeaux M 70 000 2 4 5 Jacques 50 Bordeaux M 30 000 4 1 5 Jacques 50 Bordeaux M 45 000 5 2 5 Jacques 50 Bordeaux M

37 La jointure interne exemple : NumAch=NumAch(VentePersonne) DateVente
Prix NumVoit Vente.NumAch Personne.NumAch Nom Age Ville Sexe 10 000 1 1 1 Nestor 96 Paris M 70 000 2 4 1 Nestor 96 Paris M 30 000 4 1 1 Nestor 96 Paris M 45 000 5 2 1 Nestor 96 Paris M 10 000 1 1 2 Irma 20 Lille F 70 000 2 4 2 Irma 20 Lille F 30 000 4 1 2 Irma 20 Lille F 45 000 5 2 2 Irma 20 Lille F 10 000 1 1 3 Henri 45 Paris M 70 000 2 4 3 Henri 45 Paris M 30 000 4 1 3 Henri 45 Paris M 45 000 5 2 3 Henri 45 Paris M 10 000 1 1 4 Josette 34 Lyon F 70 000 2 4 4 Josette 34 Lyon F 30 000 4 1 4 Josette 34 Lyon F 45 000 5 2 4 Josette 34 Lyon F 10 000 1 1 5 Jacques 50 Bordeaux M 70 000 2 4 5 Jacques 50 Bordeaux M 30 000 4 1 5 Jacques 50 Bordeaux M 45 000 5 2 5 Jacques 50 Bordeaux M

38 La jointure interne exemple : NumAch=NumAch(VentePersonne)
DateVente Prix NumVoit Vente.NumAch Personne.NumAch Nom Age Ville Sexe 10 000 1 1 1 Nestor 96 Paris M 30 000 4 1 1 Nestor 96 Paris M 45 000 5 2 2 Irma 20 Lille F 70 000 2 4 4 Josette 34 Lyon F NumAch=NumAch(VentePersonne)  VenteNumAch NumAchPersonne

39 La jointure interne exemple : NumAch=NumAch(VentePersonne) SELECT *
DateVente Prix NumVoit Vente.NumAch Personne.NumAch Nom Age Ville Sexe 10 000 1 1 1 Nestor 96 Paris M 30 000 4 1 1 Nestor 96 Paris M 45 000 5 2 2 Irma 20 Lille F 70 000 2 4 4 Josette 34 Lyon F SELECT * FROM Vente, Personne WHERE Vente.NumAch = Personne.NumAch; SELECT * FROM Vente INNER JOIN Personne ON Vente.NumAch = Personne.NumAch;

40 La jointure interne exemple : NumAch=NumAch(PersonneVente) SELECT *
Personne.NumAch Nom Age Ville Sexe DateVente Prix NumVoit Vente.NumAch 1 Nestor 96 Paris M 10 000 1 1 1 Nestor 96 Paris M 30 000 4 1 2 Irma 20 Lille F 45 000 5 2 4 Josette 34 Lyon F 70 000 2 4 SELECT * FROM Personne, Vente WHERE Vente.NumAch =Personne.NumAch; SELECT * FROM Personne INNER JOIN Vente ON Vente.NumAch =Personne.NumAch;

41 La jointure interne 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. Nom Ville DateVente Prix Nestor Paris 10 000 Nestor Paris 30 000 Irma Lille 45 000 Josette Lyon 70 000 SELECT Personne.Nom, Personne.Ville, Vente.DateVente, Vente.Prix FROM Vente, Personne WHERE Vente.NumAch = Personne.NumAch; SELECT Personne.Nom, Personne.Ville, Vente.DateVente, Vente.Prix FROM Vente INNER JOIN Personne ON Vente.NumAch = Personne.NumAch;

42 La jointure interne Pour les personnes ayant acheté une voiture et vivant à Paris, donnez leur nom, la date de l’achat et le prix de cet achat. Nom DateVente Prix Nestor 10 000 Nestor 30 000 SELECT Personne.Nom, Vente.DateVente, Vente.prix FROM Vente, Personne WHERE Vente.NumAch = Personne.NumAch AND Personne.Ville = ‘Paris’; SELECT Personne.Nom, Vente.DateVente, Vente.Prix FROM Vente INNER JOIN Personne ON Vente.NumAch = Personne.NumAch WHERE Ville = ‘Paris’;

43 La jointure interne Personne (NumAch, Nom, Age, Ville, Sexe) Voiture (NumVoit, Marque, Style, Couleur) NumAch Nom Age Ville Sexe 1 Nestor 96 Paris M NumVoit Marque Style Couleur 2 Irma 20 Lille F 1 Peugeot 404 Rouge 3 Henri 45 Paris M 2 Citroen SM Noire 4 Josette 34 Lyon F 3 Opel GT Blanche 5 Jacques 50 Bordeaux M 4 Peugeot 403 Blanche 5 Renault Alpine A310 Rose Vente (DateVente, Prix, NumVoit, NumAch) 6 Renault Floride Bleue DateVente Prix NumVoit NumAch 10 000 1 1 70 000 2 4 30 000 4 1 45 000 5 2 Donnez le nom des personnes ayant acheté une voiture et le style de la voiture achetée. SELECT Personne.Nom, Voiture.Style FROM Personne, Vente, Voiture WHERE Personne.NumAch = Vente.NumAch AND Vente.NumVoit = Voiture.NumVoit;

44 La jointure interne Personne (NumAch, Nom, Age, Ville, Sexe) Voiture (NumVoit, Marque, Style, Couleur) NumAch Nom Age Ville Sexe 1 Nestor 96 Paris M NumVoit Marque Style Couleur 2 Irma 20 Lille F 1 Peugeot 404 Rouge 3 Henri 45 Paris M 2 Citroen SM Noire 4 Josette 34 Lyon F 3 Opel GT Blanche 5 Jacques 50 Bordeaux M 4 Peugeot 403 Blanche 5 Renault Alpine A310 Rose Vente (DateVente, Prix, NumVoit, NumAch) 6 Renault Floride Bleue DateVente Prix NumVoit NumAch 10 000 1 1 70 000 2 4 30 000 4 1 45 000 5 2 Donnez le nom des personnes ayant acheté une voiture et le style de la voiture achetée. SELECT Personne.Nom, Voiture.Style FROM Personne INNER JOIN Vente INNER JOIN Voiture ON Personne.NumAch = Vente.NumAch AND Vente.NumVoit = Voiture.NumVoit;

45 La jointure interne Personne (NumAch, Nom, Age, Ville, Sexe) Voiture (NumVoit, Marque, Style, Couleur) NumAch Nom Age Ville Sexe 1 Nestor 96 Paris M NumVoit Marque Style Couleur 2 Irma 20 Lille F 1 Peugeot 404 Rouge 3 Henri 45 Paris M 2 Citroen SM Noire 4 Josette 34 Lyon F 3 Opel GT Blanche 5 Jacques 50 Bordeaux M 4 Peugeot 403 Blanche 5 Renault Alpine A310 Rose Vente (DateVente, Prix, NumVoit, NumAch) 6 Renault Floride Bleue DateVente Prix NumVoit NumAch 10 000 1 1 70 000 2 4 30 000 4 1 45 000 5 2 Donnez le nom des personnes ayant acheté une voiture de style 404 SELECT Personne.Nom, Voiture.Style FROM Personne, Vente, Voiture WHERE Personne.NumAch = Vente.NumAch AND Vente.NumVoit = Voiture.NumVoit AND Voiture.Style = ‘404’;

46 La jointure interne Personne (NumAch, Nom, Age, Ville, Sexe) Voiture (NumVoit, Marque, Style, Couleur) NumAch Nom Age Ville Sexe 1 Nestor 96 Paris M NumVoit Marque Style Couleur 2 Irma 20 Lille F 1 Peugeot 404 Rouge 3 Henri 45 Paris M 2 Citroen SM Noire 4 Josette 34 Lyon F 3 Opel GT Blanche 5 Jacques 50 Bordeaux M 4 Peugeot 403 Blanche 5 Renault Alpine A310 Rose Vente (DateVente, Prix, NumVoit, NumAch) 6 Renault Floride Bleue DateVente Prix NumVoit NumAch 10 000 1 1 70 000 2 4 30 000 4 1 45 000 5 2 Donnez le nom des personnes ayant acheté une voiture de style 404 SELECT Personne.Nom, Voiture.Style FROM Personne INNER JOIN Vente INNER JOIN Voiture ON Personne.NumAch = Vente.NumAch AND Vente.NumVoit = Voiture.NumVoit WHERE Voiture.Style = ‘404’;

47 <,<=, >, >=, =, < >
Résumé des requêtes SQL DISTINCT, [AS] +,-,*,/,% AVG, MAX, MIN, SUM, COUNT SELECT liste_des_attributs FROM liste_des_tables INNER JOIN ON [ WHERE liste_de_critères ] [ GROUP BY liste_des_attributs ] <,<=, >, >=, =, < > [ HAVING liste_de_critères ] BETWEEN, IN, IS NULL [ ORDER BY liste_des_attributs ] LIKE AND, OR, NOT [ASC], DESC


Télécharger ppt "Le langage SQL."

Présentations similaires


Annonces Google