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. 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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

1 Le langage SQL

2 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 de relations (tables) caractéristiques générales : langage « non procédural » ou « déclaratif » possibilité dinté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)

3 Principe général du langage SQL requête : ensemble dinstructions 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 quil arrive)

4 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 dune 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

5 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 dune 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

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

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

8 Projection exemple : SELECT Nom, Ville FROM Personne; Nom Nestor Josette Jacques Ville Paris Lyon Bordeaux IrmaLille HenriParis exemple : SELECT * FROM Personne; Nom Nestor Josette Jacques Ville Paris Lyon Bordeaux NumAch Sexe M F M Irma Lille 2 F Henri Paris 3 M Age possibilité de sélectionner toutes les colonnes : SELECT * affichage de la table

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

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

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

12 Sélection (ou restriction) pour construire les expressions de conditions, utilisation dopérateurs, dexpressions 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 =Egal Différent Supérieur <=Inférieur ou égal >=Supérieur ou égal exemple :SELECT * FROM Vente WHERE Prix > 50000; Prix NumVoit DateVente NumAch Opérateurs, expressions et fonctions non typés opérateurs de comparaison :

14 exemples : SELECT * FROM Voiture WHERE 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 lopérateur LIKE s LIKE mCompare la chaîne de caractères s avec le motif m SELECT * FROM Personne WHERE Nom LIKE %e%; Nom Nestor Josette Jacques Ville Paris Lyon Bordeaux NumAch Sexe M F M Henri Paris 3 M Age jokers du motif m : % zéro, un ou plusieurs caractères _ un et un seul caractère

15 BETWEEN AND Appartient à lintervalle IN Appartient à lensemble de valeurs IS NULLTeste si la colonne nest pas renseignée exemples : SELECT * FROM Voiture WHERE Couleur IN (Blanc, Rouge); Marque Peugeot Style 404 NumVoit 1 Couleur Rouge SELECT * FROM Personne WHERE Age BETWEEN 40 AND 60; Nom Jacques Ville Bordeaux NumAch 5 Sexe M Henri Paris 3 M Age Opérateurs, expressions et fonctions non typés opérateurs permettant de constituer des expressions SQL :

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

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

18 Fonctions statistiques et groupage : fonctions statistiques objectif : effectuer des calculs statistiques sur toutes les valeurs dune colonne dune table COUNTComptage du nombre déléments MAXMaximum des éléments dune colonne MINMinimum des éléments dune colonne AVGMoyenne des éléments dune colonne SUMSomme des éléments dune colonne quelques fonctions statistiques de SQL : 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; SELECT COUNT(*) AS Nombre_Personnes FROM Personne; Prix_Moyen Nombre_Personnes 5

20 objectif : regrouper les lignes dune table par valeurs contenues dans une colonne GROUP BY nom_de_la_colonne_où_seffectue_lagrégat exemple : SELECT Marque FROM Voiture GROUP BY Marque; Marque Peugeot Citroen Opel Renault Fonctions statistiques et groupage : le groupage

21 utilisation courante de GROUP BY: appliquer en une seule instruction des fonctions statistiques aux différents sous-ensembles dune table constitués par GROUP BY exemples : SELECT Marque, COUNT(*) AS Compte FROM Voiture GROUP BY Marque; Marque Peugeot Citroen Opel Renault Compte SELECT Ville, AVG (Age) AS Age_Moyen FROM Personne GROUP BY Ville; Ville Lyon Bordeaux Age_Moyen Lille Paris Fonctions statistiques et groupage : le groupage

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

23 remarque : HAVING permet deffectuer une sélection sur le résultat de lopé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 lopération de groupage exemple : SELECT Marque, COUNT(*) AS Compte FROM Voiture WHERE NOT (Couleur = Rouge) GROUP BY Marque; Marque Peugeot Citroen Opel Renault Compte Fonctions statistiques et groupage : filtrage des agrégats

24 remarque : HAVING permet deffectuer une sélection sur le résultat de lopé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 lopération de groupage exemple : SELECT Marque, COUNT(*) AS Compte FROM Voiture WHERE NOT (Couleur = Rouge) GROUP BY Marque HAVING COUNT(*) > 1; Marque Renault Compte 2 Fonctions statistiques et groupage : filtrage des agrégats

25 Tri du résultat dune requête objectif : trier le résultat dune requête selon une ou plusieurs colonnes ORDER BY liste_des_colonnes_séparées_par_des_virgules possibilité de préciser lordre du tri : ASC (croissant par défaut) ou DESC (décroissant)

26 Tri du résultat dune requête exemples : SELECT Prix, DateVente FROM Vente ORDER BY Prix DESC; Prix DateVente SELECT Nom, Age, Ville FROM Personne ORDER BY Ville, Age; Nom Nestor Josette Jacques Ville Paris Lyon Bordeaux Irma Lille Henri Paris Age

27 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 dune 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

28 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 dune 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

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

30 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.Couleur FROM Voiture; Marque 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.Couleur FROM Voiture AS Vo; Marque Peugeot Renault Couleur Rouge Blanche Rose Citroen Noire Opel Blanche Renault Bleue FROM nom_de_la_table AS alias_de_la_table

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 : Nom Nestor Josette Jacques Ville Paris Lyon Bordeaux NumAch Sexe M F M Irma Lille 2 F Henri Paris 3 M Personne (NumAch, Nom, Age, Ville, Sexe) Age Prix NumVoit 1 5 DateVente NumAch Vente (DateVente, Prix, NumVoit, NumAch)

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

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 lattribut A (ou A1) de la relation R1 et lattribut A (ou A2) de la relation R2 notation : R1 A1 A2 R2 A1=A2 (R1 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 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

35 exemple : Nom Nestor Josette Jacques Ville Paris Lyon Bordeaux NumAch Sexe M F M Irma Lille 2 F Henri Paris 3 M Personne (NumAch, Nom, Age, Ville, Sexe) Age Prix NumVoit 1 5 DateVente NumAch Vente (DateVente, Prix, NumVoit, NumAch) La jointure interne

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

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

38 exemple : Nom Nestor Ville Paris Personne.NumAch 1 Sexe M Age 96 Prix NumVoit 1 DateVente Vente.NumAch Nestor Paris 1 M Irma Lille 2 F 20 Josette Lyon 4 F 34 NumAch=NumAch (Vente Personne) Vente NumAch NumAch Personne La jointure interne

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

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

41 La jointure interne SELECT Personne.Nom, Personne.Ville, Vente.DateVente, Vente.Prix FROM Vente INNER JOIN Personne ON Vente.NumAch = Personne.NumAch; Nom Nestor Irma Josette Ville Paris Lille Lyon DateVente Prix Pour les personnes ayant acheté une voiture, donnez leur nom, le nom de leur ville dorigine, la date de lachat et le prix de cet achat. SELECT Personne.Nom, Personne.Ville, Vente.DateVente, Vente.Prix FROM Vente, Personne WHERE Vente.NumAch = Personne.NumAch;

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

43 La jointure interne SELECT Personne.Nom, Voiture.Style FROM Personne, Vente, Voiture WHERE 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 Renault Style Alpine A310 NumVoit Couleur Rouge Blanche Rose Citroen SM 2 Noire Opel GT 3 Blanche Renault Floride 6 Bleue Voiture (NumVoit, Marque, Style, Couleur) Nom Nestor Josette Jacques Ville Paris Lyon Bordeaux NumAch Sexe M F M Irma Lille 2 F Henri Paris 3 M Personne (NumAch, Nom, Age, Ville, Sexe) Age Prix NumVoit 1 5 DateVente NumAch Vente (DateVente, Prix, NumVoit, NumAch)

44 La jointure interne SELECT Personne.Nom, Voiture.Style FROM 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 Renault Style Alpine A310 NumVoit Couleur Rouge Blanche Rose Citroen SM 2 Noire Opel GT 3 Blanche Renault Floride 6 Bleue Voiture (NumVoit, Marque, Style, Couleur) Nom Nestor Josette Jacques Ville Paris Lyon Bordeaux NumAch Sexe M F M Irma Lille 2 F Henri Paris 3 M Personne (NumAch, Nom, Age, Ville, Sexe) Age Prix NumVoit 1 5 DateVente NumAch Vente (DateVente, Prix, NumVoit, NumAch)

45 La jointure interne SELECT Personne.Nom, Voiture.Style FROM Personne, Vente, Voiture WHERE 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 Renault Style Alpine A310 NumVoit Couleur Rouge Blanche Rose Citroen SM 2 Noire Opel GT 3 Blanche Renault Floride 6 Bleue Voiture (NumVoit, Marque, Style, Couleur) Nom Nestor Josette Jacques Ville Paris Lyon Bordeaux NumAch Sexe M F M Irma Lille 2 F Henri Paris 3 M Personne (NumAch, Nom, Age, Ville, Sexe) Age Prix NumVoit 1 5 DateVente NumAch Vente (DateVente, Prix, NumVoit, NumAch)

46 La jointure interne 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; Marque Peugeot Renault Style Alpine A310 NumVoit Couleur Rouge Blanche Rose Citroen SM 2 Noire Opel GT 3 Blanche Renault Floride 6 Bleue Voiture (NumVoit, Marque, Style, Couleur) Nom Nestor Josette Jacques Ville Paris Lyon Bordeaux NumAch Sexe M F M Irma Lille 2 F Henri Paris 3 M Personne (NumAch, Nom, Age, Ville, Sexe) Age Prix NumVoit 1 5 DateVente NumAch Vente (DateVente, Prix, NumVoit, NumAch) Donnez le nom des personnes ayant acheté une voiture de style 404

47 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


Télécharger ppt "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."

Présentations similaires


Annonces Google