LMD: Langage de Manipulation de Données

Slides:



Advertisements
Présentations similaires
26/ 04/ 2007 Auto-Jointure : SELECT * FROM Nom_relation R1 INNER JOIN Nom_relation R2 ON Condition_de_jointure; Problèmes Si des attributs de même nom.
Advertisements

Bases de Données Avancées: Bases de Données Relationnelles
Optimisation des requêtes
Manipulation des données dans SQL
SQL - Subtilités.
Algèbre relationnelle
Les requêtes Manière de dialoguer avec une base de donnée pour :
Optimisation de Requêtes
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Les fonctions.
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
Contrôles d'accès aux données
L’utilisation des bases de données
Rappel sur les bases de données et le vocabulaire
BASE DE DONNEES RELATIONNELLES
Le langage SQL.
LE LANGAGE SQL Langage de manipulation de données (LMD)
Laini Hyacinthe 2 e NSSE Access Les requêtes Laini Hyacinthe 2 e NSSE Plan 1.Quelques définitionsQuelques définitions 2.À quoi servent les requêtesÀ
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
Algèbre relationnelle et SQL
SQL Partie 3 : (LID : Langage d'interrogation de données)
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL PHILIPPE BANCQUART.
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Manipulation des données Requêtes simples
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Initiation aux bases de données et à la programmation événementielle
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
Limiter et trier des données
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
Le langage SQL LDD : Langage de Définition de Données
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
01. Liste des noms de candidats avec leur date de naissance.
SIO SLAM1: Exploitation d’un schéma de données
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Transac SQL Intégrité des données.
Traduction des opérations sous MySQL
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
SQL (deuxième partie) Langage de manipulation de données (LMD) Chap 4.6 p 107.
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
Module 7 : Utilisation de requêtes élaborées
Sélection de colonnes (la projection)
SQL : Langage de Manipulation des données
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Copyright  Oracle Corporation, Tous droits réservés. 2 Sélection et Tri des Lignes Retournées par un SELECT.
Les vues Une vue: c’est une relation virtuelle. Définie par:
Structured Query Language 1/34. SQL Types de données Langage de Définition de Données (LDD) Langage de Manipulation de Données (LDM) Langage de Contrôle.
Les bases de données Séance 8 Jointures.
Le Langage de Manipulation de Données LMD. 2 Les ordres SQL de manipulation INSERT –Insertion (ajout) de ligne(s) dans une table –Utiliser SQL*LOAD pour.
Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage d’interrogation de données. (Les requêtes statistiques et autres).
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
Op é rateurs ensemblistes Module 4. 2 La clause GROUP BY La clause GROUP BY est nécessaire dès que l'on utilise des fonctions de calculs statistiques.
Le Langage d ’ Interrogation des donn é es (LID) Module 2.
Le Langage de Manipulation de Données LMD Module 6.
CONCEPTS BD - Synthèse journée 1 :
Le langage SQL LA Plan 1. Introduction Rappels sur le modèle relationnel Les caractéristiques du langage SQL 2. Le Langage d'Interrogation des.
SQL Partie 2. SQL est un langage de manipulation de données SQL est un langage de manipulation de données (LMD), cela signifie qu'il permet de sélectionner,
De Arnault Chazareix :
Bases de données : modèlisation et SGBD Séance 3.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
1 Les bases de données Séance 6 L ’extraction de données Le SELECT.
Langage de manipulation de données (LMD)
Structured Query Language
Manipulation D’Une Base De Données
Transcription de la présentation:

LMD: Langage de Manipulation de Données

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;

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;

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*6.55957 PRIX_FRANC FROM TELEPHONE TELEPH;

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

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

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;

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

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. 

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. 

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

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

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;

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;

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;

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;

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;

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

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

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

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

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;

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

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

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)

LMD: Langage de Manipulation de Données