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

LMD: Langage de Manipulation de Données. Lordre de sélection de données SELECT SELECT DATE_ACHAT, TYPE, MARQUE FROM TELEPHONE; SELECT DATE_ACHAT, TYPE,

Présentations similaires


Présentation au sujet: "LMD: Langage de Manipulation de Données. Lordre de sélection de données SELECT SELECT DATE_ACHAT, TYPE, MARQUE FROM TELEPHONE; SELECT DATE_ACHAT, TYPE,"— Transcription de la présentation:

1 LMD: Langage de Manipulation de Données

2 Lordre de sélection de données SELECT SELECT DATE_ACHAT, TYPE, MARQUE FROM TELEPHONE; SELECT DATE_ACHAT, TYPE, MARQUE FROM TELEPHONE; SELECT * FROM TELEPHONE; SELECT * FROM TELEPHONE;

3 LMD: Langage de Manipulation de Données Les options DISTINCT et ALL Par défaut lors de lexécution dun SELECT toutes les lignes sont ramenées (loption ALL est automatique). Si on veut supprimer les doublons, il faut ajouter lordre DISTINCT. Lordre DISTINCT sapplique à toutes les colonnes présentes. Par défaut lors de lexécution dun SELECT toutes les lignes sont ramenées (loption ALL est automatique). Si on veut supprimer les doublons, il faut ajouter lordre DISTINCT. Lordre DISTINCT sapplique à toutes les colonnes présentes. SELECT TYPE, MARQUE, PRIX FROM TELEPHONE; SELECT DISTINCT TYPE, MARQUE, PRIX FROM TELEPHONE;

4 LMD: Langage de Manipulation de Données Utilisation des alias Exemple dalias sur une colonne : SELECT TYPE C1, MARQUE C2, PRIX FROM TELEPHONE TELEPH; Exemple dalias sur une colonne : SELECT TYPE C1, MARQUE C2, PRIX FROM TELEPHONE TELEPH; Exemple dalias sur un résultat de calcul : SELECT TYPE C1, MARQUE C2, PRIX* PRIX_FRANC FROM TELEPHONE TELEPH; Exemple dalias sur un résultat de calcul : SELECT TYPE C1, MARQUE C2, PRIX* PRIX_FRANC FROM TELEPHONE TELEPH;

5 LMD: Langage de Manipulation de Données La clause WHERE Nous avons vu comment récupérer toutes les lignes des tables dans les paragraphes précédents. Pour pouvoir sélectionner une partie des lignes des tables, il faut ajouter une restriction symbolisée par la clause WHERE. SELECT TELEPH.TYPE, TELEPH.MARQUE, TELEPH.PRIX FROM TELEPHONE WHERE TELEPH.TYPE IN (SP, CL) # SP=Smartphone ou CL=Clapet AND TELEPH.PRIX < 200 AND EXISTS (SELECT MARQUE FROM MARQUE_TEL MARQ WHERE MARQ.MARQUE = TELEPH.MARQUE); SELECT TELEPH.TYPE, TELEPH.MARQUE, TELEPH.PRIX FROM TELEPHONE WHERE TELEPH.TYPE IN (SP, CL) # SP=Smartphone ou CL=Clapet AND TELEPH.PRIX < 200 AND EXISTS (SELECT MARQUE FROM MARQUE_TEL MARQ WHERE MARQ.MARQUE = TELEPH.MARQUE);

6 LMD: Langage de Manipulation de Données Les jointures Dans une base relationnelle, la jointure est un des éléments essentiels qui permet dextraire les données de plusieurs tables en appliquant des conditions sur les colonnes. Dans une base relationnelle, la jointure est un des éléments essentiels qui permet dextraire les données de plusieurs tables en appliquant des conditions sur les colonnes. Si nous avons 5 lignes dans chacune des tables TELEPHONE et TYPE_TEL, le système ramènera 5x5 = 25 Lignes. Si nous avons 5 lignes dans chacune des tables TELEPHONE et TYPE_TEL, le système ramènera 5x5 = 25 Lignes. Il faut donc relier les tables entre elles afin dobtenir un résultat conforme à nos attentes

7 LMD: Langage de Manipulation de Données La jointure interne Il faut faire la jointure sur la table TYPE_TEL avec la colonne TYPE et la jointure sur la table MARQUE_TEL sur la colonne MARQUE. SELECT TELEPH.DATE_ACHAT, TELEPH.TYPE, TYP.LIB_TYPE, TELEPH.MARQUE, MARQ.LIB_MARQUE FROM TELEPHONE TELEPH, TYPE_TEL TYP, MARQUE_TEL MARQ WHERE TELEPH.TYPE = TYP.TYPE AND TELEPH.MARQUE = MARQ.MARQUE; SELECT TELEPH.DATE_ACHAT, TELEPH.TYPE, TYP.LIB_TYPE, TELEPH.MARQUE, MARQ.LIB_MARQUE FROM TELEPHONE TELEPH, TYPE_TEL TYP, MARQUE_TEL MARQ WHERE TELEPH.TYPE = TYP.TYPE AND TELEPH.MARQUE = MARQ.MARQUE;

8 LMD: Langage de Manipulation de Données Il existe une autre notation pour obtenir le même résultat en utilisant lordre JOIN qui est défini dans les normes SQL. la norme préconise de travailler avec cet ordre afin de bien distinguer les conditions et les jointures. En effet, dans un WHERE, il est quelques fois difficile de différencier les restrictions des jointures. Il existe une autre notation pour obtenir le même résultat en utilisant lordre JOIN qui est défini dans les normes SQL. la norme préconise de travailler avec cet ordre afin de bien distinguer les conditions et les jointures. En effet, dans un WHERE, il est quelques fois difficile de différencier les restrictions des jointures. La jointure interne SELECT TELEPHONE.DATE_ACHAT, TELEPHONE.TYPE, TYPE_TEL.LIB_TYPE, TELEPHONE.MARQUE, MARQE_TEL.LIB_MARQUE FROM TELEPHONE INNER JOIN TYPE_TEL ON TELEPHONE.TYPE = TYPE_TEL.TYPE INNER JOIN MARQUE_TEL ON TELEPHONE.MARQUE = MARQUE_TEL.MARQUE; SELECT TELEPHONE.DATE_ACHAT, TELEPHONE.TYPE, TYPE_TEL.LIB_TYPE, TELEPHONE.MARQUE, MARQE_TEL.LIB_MARQUE FROM TELEPHONE INNER JOIN TYPE_TEL ON TELEPHONE.TYPE = TYPE_TEL.TYPE INNER JOIN MARQUE_TEL ON TELEPHONE.MARQUE = MARQUE_TEL.MARQUE; Le mot INNER est facultatif, il indique quil sagit du jointure interne, la jointure par défaut lorsqu e lon ne précise pas autre chose. Lopérateur ON précède le critère de jointure qui sera utilisé.

9 LMD: Langage de Manipulation de Données La jointure externe Pour ramener toutes les lignes de la table maître, il faut le préciser au SGBDR même sil ny a pas de correspondance dans les tables filles. Dans ce cas le système ramène les colonnes sans correspondance à NULL. Exemple avec JOIN dans lequel il faut ajouter le mot LEFT (ou RIGHT) pour préci ser que lon veut toutes les lignes de la table à gauche du mot JOIN, ici TELEPHONE. Exemple avec JOIN dans lequel il faut ajouter le mot LEFT (ou RIGHT) pour préci ser que lon veut toutes les lignes de la table à gauche du mot JOIN, ici TELEPHONE. Si lon voulait toutes les lignes de la table TYPE_TEL ou MARQUE_TEL on le préciserait avec le mot RIGHT. Les tables sont à droite du mot JOIN. Si lon veut à la fois les lignes de la table de droite et des tables de gauche, il faut utiliser le mot FULL à la place de RIGHT ou LEFT. Si lon voulait toutes les lignes de la table TYPE_TEL ou MARQUE_TEL on le préciserait avec le mot RIGHT. Les tables sont à droite du mot JOIN. Si lon veut à la fois les lignes de la table de droite et des tables de gauche, il faut utiliser le mot FULL à la place de RIGHT ou LEFT.

10 LMD: Langage de Manipulation de Données SELECT TELEPHONE.DATE_ACHAT, TELEPHONE.TYPE, TYPE_TEL.LIB_TYPE, TELEPHONE.MARQUE, MARQUE_TEL.LIB_MARQUE FROM TELEPHONE LEFT OUTER JOIN TYPE_TEL ON TELEPHONE.TYPE = TYPE_TEL.TYPE LEFT OUTER JOIN MARQUE_TEL ON TELEPHONE.MARQUE = MARQUE_TEL.MARQUE; SELECT TELEPHONE.DATE_ACHAT, TELEPHONE.TYPE, TYPE_TEL.LIB_TYPE, TELEPHONE.MARQUE, MARQUE_TEL.LIB_MARQUE FROM TELEPHONE LEFT OUTER JOIN TYPE_TEL ON TELEPHONE.TYPE = TYPE_TEL.TYPE LEFT OUTER JOIN MARQUE_TEL ON TELEPHONE.MARQUE = MARQUE_TEL.MARQUE; La jointure externe Le mot OUTER est facultatif et indique que lon réalise une jointure externe, par opposition au mot INNER vu plus haut.

11 LMD: Langage de Manipulation de Données Syntaxe des différentes jointures: Jointure interne SELECT,, etc... FROM [INNER] JOIN ON, etc... SELECT,, etc... FROM [INNER] JOIN ON, etc... SELECT,, etc... FROM,, etc... WHERE AND etc... SELECT,, etc... FROM,, etc... WHERE AND etc... OU

12 LMD: Langage de Manipulation de Données Syntaxe des différentes jointures: Jointure externe SELECT,, etc... FROM [LEFT|RIGHT|FULL] [OUTER] JOIN ON, etc... SELECT,, etc... FROM [LEFT|RIGHT|FULL] [OUTER] JOIN ON, etc...

13 LMD: Langage de Manipulation de Données Les tris (ORDER BY) SELECT TELEPH.DATE_ACHAT, TELEPH.TYPE, TYP.LIB_TYPE, TELEPH.MARQUE, MARQ.LIB_MARQUE FROM TELEPHONE TELEPH JOIN TYPE_TEL TYP ON TELEPH.TYPE = TYP.TYPE JOIN MARQUE_TEL MARQ ON TELEPH.MARQUE = MARQ.MARQUE ORDER BY TELEPH.TYPE ASC, MARQ.LIB_MARQUE DESC; SELECT TELEPH.DATE_ACHAT, TELEPH.TYPE, TYP.LIB_TYPE, TELEPH.MARQUE, MARQ.LIB_MARQUE FROM TELEPHONE TELEPH JOIN TYPE_TEL TYP ON TELEPH.TYPE = TYP.TYPE JOIN MARQUE_TEL MARQ ON TELEPH.MARQUE = MARQ.MARQUE ORDER BY TELEPH.TYPE ASC, MARQ.LIB_MARQUE DESC;

14 LMD: Langage de Manipulation de Données Les regroupements (GROUP BY) Cette clause permet de supprimer les doublons dans les lignes ramenées et de réaliser des calculs sur les colonnes sélectionnées. Cette clause permet de supprimer les doublons dans les lignes ramenées et de réaliser des calculs sur les colonnes sélectionnées. SELECT DISTINCT TYPE FROM TELEPHONE; Equivalent à : SELECT TYPE FROM TELEPHONE GROUP BY TYPE;

15 LMD: Langage de Manipulation de Données Les fonctions utilisées lors dun regroupement SELECT COUNT(*) FROM TELEPHONE; SELECT SUM(PRIX) FROM TELEPHONE; Par exemple pour connaître le nombre de lignes de la table TELEPHONE qui ont un prix identique. SELECT TELEPH.PRIX, COUNT(*) AS NB_PRIX FROM TELEPHONE TELEPH GROUP BY TELEPH.PRIX ORDER BY TELEPH.PRIX ASC; SELECT TELEPH.PRIX, COUNT(*) AS NB_PRIX FROM TELEPHONE TELEPH GROUP BY TELEPH.PRIX ORDER BY TELEPH.PRIX ASC;

16 LMD: Langage de Manipulation de Données SUM (sommer des valeurs) SELECT TELEPH.COULEUR, SUM(TELEPH.PRIX) AS PRIX_CUMULE FROM TELEPHONE TELEPH JOIN TYPE_TEL TYP ON TELEPH.TYPE = TYP.TYPE GROUP BY TELEPH.COULEUR ORDER BY TELEPH.COULEUR ASC; SELECT TELEPH.COULEUR, SUM(TELEPH.PRIX) AS PRIX_CUMULE FROM TELEPHONE TELEPH JOIN TYPE_TEL TYP ON TELEPH.TYPE = TYP.TYPE GROUP BY TELEPH.COULEUR ORDER BY TELEPH.COULEUR ASC; MAX et MIN (les valeurs maximum et minimum) SELECT MAX(TELEPH.PRIX) AS PRIX_MAX FROM TELEPHONE TELEPH; SELECT MAX(TELEPH.PRIX) AS PRIX_MAX FROM TELEPHONE TELEPH;

17 LMD: Langage de Manipulation de Données AVG (la moyenne) Cette fonction permet de calculer la moyenne dune série de chiffres. Elle sapplique à une colonne de type numérique bien sûr. SELECT TELEPH.TYPE, TYP.LIB_TYPE, MIN(TELEPH.PRIX) AS PRIX_MIN, MAX(TELEPH.PRIX) AS PRIX_MAX, AVG(TELEPH.PRIX) AS PRIX_MOYEN FROM TELEPHONE TELEPH JOIN TYPE_TEL TYP ON TELEPH.TYPE = TYP.TYPE GROUP BY TELEPH.TYPE, TYP.LIB_TYPE ORDER BY TELEPH.TYPE ASC; SELECT TELEPH.TYPE, TYP.LIB_TYPE, MIN(TELEPH.PRIX) AS PRIX_MIN, MAX(TELEPH.PRIX) AS PRIX_MAX, AVG(TELEPH.PRIX) AS PRIX_MOYEN FROM TELEPHONE TELEPH JOIN TYPE_TEL TYP ON TELEPH.TYPE = TYP.TYPE GROUP BY TELEPH.TYPE, TYP.LIB_TYPE ORDER BY TELEPH.TYPE ASC; Par exemple, pour connaître le prix moyen des téléphones par type comme dans lexemple pr écédent, il suffit de remplacer le SUM/COUNT par un AVG pour obtenir le même résultat.

18 LMD: Langage de Manipulation de Données HAVING On ne peut pas considérer la clause HAVING comme une fonction mais comme un filtre supplémentaire qui travaille sur le résultat dun GROUP BY. À linstar du WHERE qui filtre les lignes ramenées par le SELECT, le HAVING va filtrer le résultat des fonctions utilisées. On ne peut pas considérer la clause HAVING comme une fonction mais comme un filtre supplémentaire qui travaille sur le résultat dun GROUP BY. À linstar du WHERE qui filtre les lignes ramenées par le SELECT, le HAVING va filtrer le résultat des fonctions utilisées. Sélection des prix dans la base qui sont présents au moins deux fois : SELECT TELEPH.PRIX, COUNT(*) AS NB_PRIX FROM TELEPHONE TELEPH GROUP BY TELEPH.PRIX HAVING COUNT(*) > 1; SELECT TELEPH.PRIX, COUNT(*) AS NB_PRIX FROM TELEPHONE TELEPH GROUP BY TELEPH.PRIX HAVING COUNT(*) > 1; Mediaexport -2 LMD

19 LMD: Langage de Manipulation de Données Linsertion de données Lordre INSERT INSERT INTO TELEPHONE (NUMERO, TYPE, MARQUE, DATE_ACHAT,PRIX,NUM_PROPRIETAIRE,COULEUR) VALUES (1,SP,1,to_date(15/01/2010,DD/MM/YYYY),159,190120,ROUGE); INSERT INTO TELEPHONE (NUMERO, TYPE, MARQUE, DATE_ACHAT,PRIX,NUM_PROPRIETAIRE,COULEUR) VALUES (1,SP,1,to_date(15/01/2010,DD/MM/YYYY),159,190120,ROUGE);

20 LMD: Langage de Manipulation de Données Linsertion à partir dune autre table INSERT INTO TELEPHONE (TYPE, MARQUE, COULEUR, PRIX, DATE_ACHAT) (SELECT TYPE,MARQUE,COULEUR,PRIX_ACHAT*2.5,NOW() FROM ACHAT_TEL); INSERT INTO TELEPHONE (TYPE, MARQUE, COULEUR, PRIX, DATE_ACHAT) (SELECT TYPE,MARQUE,COULEUR,PRIX_ACHAT*2.5,NOW() FROM ACHAT_TEL);

21 LMD: Langage de Manipulation de Données La suppression de données Lordre DELETE Exemple de suppression de toutes les lignes dune table : DELETE FROM TELEPHONE; DELETE FROM TELEPHONE WHERE COULEUR IS NULL AND DATE_ACHAT < STR_TO_DATE(31/12/2010,%d/%m/%Y); DELETE FROM TELEPHONE WHERE COULEUR IS NULL AND DATE_ACHAT < STR_TO_DATE(31/12/2010,%d/%m/%Y);

22 LMD: Langage de Manipulation de Données La modification de données Lordre UPDATE UPDATE TELEPHONE SET PRIX = 99; UPDATE TELEPHONE SET PRIX = 99 WHERE PRIX = 49; UPDATE TELEPHONE SET PRIX = 99 WHERE PRIX > 19 AND PRIX < 100; UPDATE TELEPHONE SET PRIX = 99, COULEUR = ROUGE, DATE_ACHAT = TO_DATE(15/01/2011,DD/MM/YYYY) WHERE PRIX > 19 AND PRIX < 100; UPDATE TELEPHONE SET PRIX = 99, COULEUR = ROUGE, DATE_ACHAT = TO_DATE(15/01/2011,DD/MM/YYYY) WHERE PRIX > 19 AND PRIX < 100;

23 LMD: Langage de Manipulation de Données Les fonctions Les fonctions numériques Tous les opérateurs sont utilisables : +, ­, *, / mais également des fonctions comme la valeur absolue, le cosinus, les logarit hmes, le modulo, larrondi, etc. Les fonctions de comparaison et de tests IN ­ NOT IN SELECT T.TYPE, Y.LIB_TYPE, SUM(PRIX) P_TOTAL, ROUND(SQRT(SUM(PRIX))) AS RACINE FROM TELEPHONE T, TYPE_TEL Y WHERE T.TYPE = Y.TYPE GROUP BY T.TYPE,Y.LIB_TYPE HAVING ROUND(SQRT(SUM(PRIX))) IN (7,14,21); SELECT T.TYPE, Y.LIB_TYPE, SUM(PRIX) P_TOTAL, ROUND(SQRT(SUM(PRIX))) AS RACINE FROM TELEPHONE T, TYPE_TEL Y WHERE T.TYPE = Y.TYPE GROUP BY T.TYPE,Y.LIB_TYPE HAVING ROUND(SQRT(SUM(PRIX))) IN (7,14,21);

24 LMD: Langage de Manipulation de Données EXISTS ­ NOT EXISTS (Existence ou non) Les fonctions Les fonctions de comparaison et de tests BETWEEN (entre 2 valeurs) LIKE (qui contient une partie de valeur) Les fonctions de gestion des dates et heures SELECT CURRENT_DATE,CURRENT_DATE(), CURDATE(), NOW() FROM DUAL; SELECT CURRENT_DATE,CURRENT_DATE(), CURDATE(), NOW() FROM DUAL; SELECT DATE_FORMAT(NOW(), %d/%m/%Y)

25 LMD: Langage de Manipulation de Données Heure actuelle SELECT CURRENT_TIME Pour MySQL les principaux sont : %h, %H : format daffichage de lheure sur 12 ou 24 %i : Minute %s : Seconde Pour MySQL les principaux sont : %h, %H : format daffichage de lheure sur 12 ou 24 %i : Minute %s : Seconde Les fonctions sur les chaînes de caractères LOWER / UPPER / UCASE / LCASE (minuscules et majuscules)

26 LMD: Langage de Manipulation de Données

27


Télécharger ppt "LMD: Langage de Manipulation de Données. Lordre de sélection de données SELECT SELECT DATE_ACHAT, TYPE, MARQUE FROM TELEPHONE; SELECT DATE_ACHAT, TYPE,"

Présentations similaires


Annonces Google