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

Présentations similaires


Présentation au sujet: "LMD: Langage de Manipulation de Données"— Transcription de la présentation:

1 LMD: Langage de Manipulation de Données

2 LMD: Langage de Manipulation de Données
 L’ordre de sélection de données SELECT SELECT DATE_ACHAT, TYPE, MARQUE FROM TELEPHONE; SELECT * FROM TELEPHONE;

3 LMD: Langage de Manipulation de Données
Les options DISTINCT et ALL Par  défaut  lors  de  l’exécution  d’un  SELECT  toutes  les  lignes  sont  ramenées  (l’option  ALL  est  automatique).  Si  on veut supprimer les doublons, il faut ajouter l’ordre DISTINCT.  L’ordre DISTINCT s’applique à 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 d’alias sur une colonne :  SELECT TYPE C1, MARQUE C2, PRIX FROM TELEPHONE TELEPH; Exemple d’alias 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);

6 LMD: Langage de Manipulation de Données
Les jointures Dans  une  base  relationnelle,  la  jointure  est  un  des  éléments  essentiels  qui  permet  d’extraire  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.  Il faut donc relier les tables entre elles afin d’obtenir 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;

8 LMD: Langage de Manipulation de Données
 La jointure interne Il existe une autre notation pour obtenir le même résultat en utilisant l’ordre 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.  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 qu’il s’agit du jointure interne, la jointure par défaut lorsque l’on ne précise pas autre chose.  L’opé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  s’il  n’y  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éciser que l’on veut toutes les lignes  de la table à gauche du mot JOIN,  ici TELEPHONE.  Si  l’on  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 l’on 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
 La jointure externe 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; Le mot OUTER est facultatif et indique que l’on 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 <colonne 1>, <colonne 2>, etc ... FROM <table gauche> [INNER] JOIN <table droite 1> ON <critères 1>, [INNER] JOIN <table droite 2> ON <critères 2>, etc ... OU SELECT <colonne 1>, <colonne 2>, etc ... FROM <table gauche>, <table droite 1>, <table droite 2> etc ... WHERE <critères 1> AND <critères 2> etc ...

12 LMD: Langage de Manipulation de Données
Syntaxe des différentes jointures: Jointure externe SELECT <colonne 1>, <colonne 2>, etc ... FROM <table gauche> [LEFT|RIGHT|FULL] [OUTER] JOIN <table droite 1> ON <critères>, [LEFT|RIGHT|FULL] [OUTER] JOIN <table droite 2> ON <critères>, 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;

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.  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 d’un 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;

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;  MAX et MIN (les valeurs maximum et minimum) 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 d’une série de chiffres.  Elle s’applique à une colonne de type numérique bien sûr.  Par exemple, pour connaître le prix moyen des téléphones par type comme dans l’exemple précédent, il suffit de remplacer le SUM/COUNT par un AVG pour obtenir le même résultat.  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;

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 d’un GROUP BY.  À  l’instar  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; Mediaexport -2 LMD

19 LMD: Langage de Manipulation de Données
L’insertion de données  L’ordre 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’);

20 LMD: Langage de Manipulation de Données
 L’insertion à partir d’une autre table 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  L’ordre DELETE Exemple de suppression de toutes les lignes d’une table :  DELETE FROM TELEPHONE; 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 L’ordre 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;

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 logarithmes, le modulo, l’arrondi, 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);

24 LMD: Langage de Manipulation de Données
Les fonctions  Les fonctions de comparaison et de tests  EXISTS ­ NOT EXISTS (Existence ou non) 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 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 d’affichage de l’heure 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"

Présentations similaires


Annonces Google