Interrogation de bases de données avec le langage SQL



Documents pareils
Le langage SQL Rappels

Langage SQL : créer et interroger une base

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Bases de données relationnelles

SQL Historique

Cours 4 : Agrégats et GROUP BY

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

1 Introduction et installation

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

Systèmes de Gestion de Bases de Données

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Auto-évaluation SQL. Document: f0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Le Langage SQL version Oracle

16H Cours / 18H TD / 20H TP

Cours SQL. Base du langage SQL et des bases de données

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

Introduction au Système de Gestion de Base de Données et aux Base de Données

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

TD n 10 : Ma première Base de Données

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Optimisation SQL. Quelques règles de bases

Introduction aux Bases de Données 2004/2005

Vincent Augusto

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

CREATION WEB DYNAMIQUE

FileMaker 13. Guide de référence SQL

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

BTS/CGO P10 SYSTEME INFORMATION Année

TP Bases de données réparties

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic

Ecole Polytechnique de Louvain INGI Fichiers et bases de données

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

PHP 4 PARTIE : BASE DE DONNEES

Durée : 4 heures coefficient : 4 Le sujet se présente sous la forme de deux dossiers indépendants

Les bases de données

Cours: Les Jointures 1

Chapitre 11 Bases de données

Mysql avec EasyPhp. 1 er mars 2006

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Les bases fondamentales du langage Transact SQL

Introduction : présentation de la Business Intelligence

UNIVERSITE DE CONSTANTINE 1 FACULTE DES SIENCES DE LA TECHNOLOGIE DEPARTEMENT D ELECTRONIQUE 3 ème année LMD ELECTRONIQUE MEDICALE

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Performance web. Mesurer. Analyser. Optimiser. Benjamin Lampérier - Benoît Goyheneche. RMLL Beauvais. 8 Juillet 2015

PHP 5. La base de données MySql. A. Belaïd 1

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Le Langage De Description De Données(LDD)

A QUOI SERVENT LES BASES DE DONNÉES?

Devoir Data WareHouse

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

1 Introduction. 2 Le modèle relationnel. 3 Algèbre relationnelle 4 SQL. 5 Organisation physique des données 1/228

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

5 - SQL - Bases de données

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

La présente publication est protégée par les droits d auteur. Tous droits réservés.

Administration de Bases de Données : Optimisation

Bases de données Outils de gestion

MySQL / SQL EXEMPLES

INTRODUCTION : Données structurées et accès simplifié

Résumé S Q L. Auteur: Alexandre PATIN Edition: 22 février alexandre.patin@free.fr URL :

Bases de données élémentaires Maude Manouvrier

Sommaire. 2 LINQ to Objects

Bases de Données relationnelles et leurs systèmes de Gestion

CATALOGUE FORMATIONS DOMAINE Bases de données

STAGE IREM 0- Premiers pas en Python

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Base de données relationnelle et requêtes SQL

Présentation Windows Azure Hadoop Big Data - BI

Introduction aux Bases de Données Relationnelles Conclusion - 1

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

Les Entrepôts de Données

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

Plan d Exécution Graphique pour des Requêtes SQL Simples

MODE OPERATOIRE OPENOFFICE BASE

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

1. Base de données SQLite

Les bases de l optimisation SQL avec DB2 for i

INTRODUCTION AU DATA MINING

Intégrité des données

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Thème : Gestion commerciale

Modules ICI relais & EXAPAQ Predict v4.0

Transcription:

Web dynamique avec PHP et MySQL Interrogation de bases de données avec le langage SQL C. Sirangelo & F. Tort

Interroger une base avec SQL Interroger une base de données: extraire des données de la base Requête: produire une nouvelle table à partir des tables dans la base Langage pour exprimer des requêtes: SQL

SQL : SELECT SELECT nom, prenom FROM PERSONNE; PERSONNE nom Durand prenom Philippe Juliette Philippe Juliette nom Durand prenom Philippe Juliette Philippe Juliette naiss 1945 1972 1980 1945

SELECT (2) SELECT DISTINCT nom, prenom FROM PERSONNE; SELECT * FROM PERSONNE; nom Durand prenom Philippe Juliette Philippe nom Durand prenom Philippe Juliette Philippe Juliette naiss 1945 1972 1980 1945

SELECT (3) SELECT nom AS nom-de-famille FROM PERSONNE ; SELECT CONCAT ('M. ', nom) FROM PERSONNE ; nom-de-famille Durand nom M. Durand M. M. M. SELECT YEAR(NOW()) - naiss AS age FROM PERSONNE ; age 68 41 33 68

SELECT PERSONNE.nom FROM PERSONNE ; SELECT (4) Optionnel (sauf en cas d ambiguité)

WHERE SELECT nom, prenom FROM PERSONNE WHERE naiss = '1945'; nom Durand prenom Philippe Juliette PERSONNE Nom Durand Prenom Philippe Juliette Philippe Juliette Naiss 1945 1972 1980 1945

WHERE (2) SELECT refproduit FROM PRODUIT WHERE prix > '300'; prix <> '300'; prix BETWEEN '300' AND '450'; intitulé = 'manteau'; intitulé LIKE 'm%'; WHERE attribut opérateur (valeur ou attribut);

WHERE (3) SELECT refproduit FROM PRODUIT WHERE prix > '300' AND intitulé ='manteau'; prix > '300' OR intitulé ='manteau'; conjonction (AND) ou disjonction (OR) ou négation (NOT) de conditions

FROM SELECT refproduit FROM PRODUIT P SELECT P.refProduit FROM PRODUIT P WHERE P.prix= 300

FROM SELECT * FROM ACHAT A, PRODUIT PR ACHAT codepers refproduit PRODUIT refproduit Intitulé Prix pantalon 85 ju34 jupe 63

FROM SELECT * FROM ACHAT A, PRODUIT PR codepers A.refProd PR.refProd Intitulé Prix Produit Cartésien ju34 ju34 ju34 ju34 pantalon 85 jupe 63 pantalon 85 jupe 63 pantalon 85 jupe 63 pantalon 85 jupe 63

FROM SELECT codepers, prix FROM ACHAT A, PRODUIT PR WHERE A. refproduit = PR.refProduit ; codepers prix 100 85 100 120 ACHAT codepers refproduit PRODUIT refproduit Intitulé Prix pantalon 85 ju34 jupe 63 Join

FROM SELECT nom, prix FROM PERSONNE P, ACHAT A, PRODUIT PR WHERE A. refproduit = PR.refProduit AND P.codePers = A.codePers ; nom Durand Blanc Durand prix 100 85 100 120 PERSONNE ACHAT PRODUIT codepers nom codepers refproduit refproduit Intitulé Prix Durand Blanc ju34 pantalon 85 jupe 63

SELECT nom, naiss FROM PERSONNE WHERE naiss < 1975 ORDER BY naiss; ORDER BY nom Durand naiss 1945 1945 1972 PERSONNE Nom Durand Prenom Philippe Juliette Philippe Juliette Naiss 1945 1972 1980 1945

SELECT nom, naiss FROM PERSONNE WHERE naiss < 1975 ORDER BY naiss; ORDER BY naiss DESC; nom, prenom;

GROUP BY SELECT codepers, AVG(prix) FROM ACHAT A, PRODUIT PR WHERE A. refproduit = PR.refProduit GROUP BY codepers HAVING AVG(prix)>='100'; ACHAT codepers refproduit PRODUIT refproduit Intitule Prix pantalon 85 ju34 jupe 63

GROUP BY SELECT codepers, AVG(prix) FROM ACHAT A, PRODUIT PR WHERE A. refproduit = PR.refProduit GROUP BY codepers HAVING AVG(prix)>='100'; 1) La partie FROM-WHERE est evaluée: A.codePers A.refProduit P.refProduit P.Intitule P.Prix pantalon 85

GROUP BY SELECT codepers, AVG(prix) FROM ACHAT A, PRODUIT PR WHERE A. refproduit = PR.refProduit GROUP BY codepers HAVING AVG(prix)>='100'; 2) Le résultat est réparti en groupes de lignes avec la même valeur des attributs de GROUP BY: A.codePers A.refProduit P.refProduit P.Intitule P.Prix pantalon 85

GROUP BY SELECT codepers, AVG(prix) FROM ACHAT A, PRODUIT PR WHERE A. refproduit = PR.refProduit GROUP BY codepers HAVING AVG(prix)>='100'; 3) Les groupes qui satisfont la condition de HAVING restent: A.codePers A.refProduit P.refProduit P.Intitule P.Prix

GROUP BY SELECT codepers, AVG(prix) FROM ACHAT A, PRODUIT PR WHERE A. refproduit = PR.refProduit GROUP BY codepers HAVING AVG(prix)>='100'; 4) SELECT est appliqué à chaque groupe codepers AVG(prix) 110 100 A.codePers A.refProduit P.refProduit P.Intitule P.Prix

GROUP BY SELECT codepers, AVG(prix), Intitule FROM ACHAT A, PRODUIT PR WHERE A. refproduit = PR.refProduit GROUP BY codepers HAVING AVG(prix)>='100'; codepers AVG(prix) 110 100 A.codePers A.refProduit P.refProduit P.Intitule P.Prix

GROUP BY SELECT codepers, AVG(prix) FROM ACHAT A, PRODUIT PR WHERE A. refproduit = PR.refProduit GROUP BY codepers HAVING AVG(prix)>='100'; D autres fonctions d'agrégation: SUM COUNT COUNT (DISTINCT...) MIN MAX etc.

Ordre d exécution des clauses SELECT FROM WHERE GROUP BY HAVING ORDER BY ; 6 1 2 3 4 5

Requêtes Imbriquées SELECT Intitule FROM PRODUIT P WHERE NOT EXISTS ( SELECT * FROM Achat WHERE refproduit=p.refproduit ) Sous-requête évaluée pour chaque ligne de la requête principale ACHAT codepers refproduit PRODUIT refproduit Intitule Prix pantalon 85 ju34 jupe 63

Requêtes Imbriquées SELECT Intitule FROM PRODUIT P WHERE NOT EXISTS ( SELECT * FROM Achat WHERE refproduit=p.refproduit ) Intitule jupe Vrai si la sous-requête retourne un résultat vide ACHAT PRODUIT codepers refproduit refproduit Intitule Prix pantalon 85 ju34 jupe 63

SELECT Intitule FROM PRODUIT P WHERE refproduit NOT IN ( SELECT refproduit FROM Achat ) Requêtes Imbriquées Intitule jupe Vrai si la valeur de refproduit n appartient pas au résultat de la sous-requête ACHAT PRODUIT codepers refproduit refproduit Intitule Prix pantalon 85 ju34 jupe 63

Requêtes Imbriquées SELECT Intitule FROM PRODUIT P WHERE EXISTS ( SELECT * FROM Achat WHERE refproduit=p.refproduit ) ACHAT PRODUIT Intitule manteau pantalon veste Vrai si la sous-requête retourne un résultat non vide codepers refproduit refproduit Intitule Prix pantalon 85 ju34 jupe 63

SELECT Intitule FROM PRODUIT P WHERE refproduit IN ( SELECT refproduit FROM Achat ) ACHAT Requêtes Imbriquées PRODUIT Intitule manteau pantalon veste Vrai si la valeur de refproduit appartient au résultat de la sous-requête codepers refproduit refproduit Intitule Prix pantalon 85 ju34 jupe 63

Exercices Écrire en SQL les requêtes suivantes: 1. Les noms des personnes qui ont acheté des pantalons ou des jupes; 2. Pour chaque produit, la somme totale dépensée en achats de ce produit; 3. Les intitulés des produits achetés par deux personnes différentes; 4. Les références des produits achetés par au moins une personne d âge inférieure à 35 ans; 5. Les intitulés des produits qui n ont jamais été achetés par des personnes d âge inférieure à 35 ans; 6. Les codes des personnes qui ont acheté tous les produits de type manteau;