SQL query - 1 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes.

Slides:



Advertisements
Présentations similaires
PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Advertisements

PHP mySQL Extension php_mysql. Connexion à une base de données Établir une connexion mysql_connect(string server, string username, string password) –permet.
Georges Gardarin 1 LE LANGAGE DE REQUETES SQL l Origines et Evolutions l SQL1 86: la base l SQL1 89: l'intégrité l SQL2 92: la nouvelle norme l SQL3 98:
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
LE LANGAGE SQL Langage de manipulation de données (LMD)
Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre.
1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Traduction des opérations sous MySQL
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Introduction  Langage propre à Oracle basé sur ADA  Offre une extension procédurale à SQL  PL/SQL permet d’utiliser un sous-ensemble du langage SQL.
 L’information est conservée sous forme de tables  Contient: ◦ Un nom ◦ Une clé primaire ◦ Une liste de colonnes ◦ Les informations/données (sous forme.
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.
Introduction au langage PL/SQL
Cours 7 Programmation de base. Boucles et Tests for( in ) { } while( ) { } Exemple: x=rep(5,0) for (i in 1:5) x[i]=2*i+1 Les fonctions du type apply(),replicate()
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
Algèbre relationnelle - 1 / Djamel Berrabah Algèbre relationnelle Modèle relationnel : rappel Algèbre relationnelle.
SQL-MAJ, vues - 1 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) SQL : création et mises-à-jour de schémas et de données ● Commandes de.
SQL query - 1 / D. Berrabah SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes Agrégats et groupement.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
Calcul et SQL - 1 / Djamel Berrabah Calcul relationnel et SQL Calcul relationnel à variables « n-uplet » Calcul relationnel à variables « domaine » Query.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Intégration web & Base de données 1 Intégration Web & Base de DonnéesMariem Farhat Intérêt des bases de données pour le Web Cours préparé par : Mariem.
Ajouter le code dans une page html
Introduction au Langage Pascal
Environnement du développement de BD ORACLE REPORTS 10g
Intégration du P7 dans l’épreuve E41
Chapitre 1 nombres, chaînes de caractères, booléens, et VARIABLES
Initiation aux bases de données et à la programmation événementielle
LE LANGAGE DE REQUETES SQL
Langage de manipulation de données (LMD)
Instructions de contrôle
Oracle.
Structured Query Language
Principes de programmation (suite)
Les bases de données et le modèle relationnel
Langage de Manipulation des Données LMD
Session 1 31 mai 2017 Plateforme ICONICS Justine Guégan
Langage d’interrogation des Données LID
SQL LID – INTERROGATIN DES DONNEES
Maria Berger - Maîtrise d'AES Algèbre relationnelle.
L’I NSTRUCTION DE T EST A LTERNATIF Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira, Bejaia Année.
SQL LMD FICHE 4.6.
Manipulation D’Une Base De Données
Programmation en C++ C++ de base
Langage d’interrogation des Données LID
Cours de bases de données
I Copyright © 2004, Oracle. Tous droits réservés. Introduction.
1 Copyright © 2004, Oracle. Tous droits réservés. Extraire des données à l'aide de l'instruction SQL SELECT.
2 Copyright © 2004, Oracle. Tous droits réservés. Restreindre et trier les données.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
4 Copyright © 2004, Oracle. Tous droits réservés. Afficher des données agrégées à l'aide des fonctions de groupe.
5 Copyright © 2004, Oracle. Tous droits réservés. Afficher des données de plusieurs tables.
6 Copyright © 2004, Oracle. Tous droits réservés. Utiliser des sous-interrogations pour résoudre des interrogations.
7 Copyright © 2004, Oracle. Tous droits réservés. Utiliser les opérateurs ensemblistes.
Préface Introduction Objectifs du chapitre I-2 Objectifs du cours I-3 Oracle10g I-4 Oracle Database 10g I-6 Oracle Application Server 10g I-7 Oracle Enterprise.
Remarque : Un nombre ou une lettre en gras fait référence à un chapitre entier ou à une annexe entière. A Affichage des dates par défaut 02-06, Ajouter.
Langage d’interrogation des Données Les fonctions de groupes
Algèbre relationnelle
© Robert Godin. Tous droits réservés.
5 Interface entre SQL et un programme
Programmation PHP / PDO
Les Requêtes S.Q.L « Structured Query Language). SQL Historique.
Info Bases de données avancées
PRESENTATION ACCESS Editeur : Microsoft Environnement Windows (SE)
SQL Structured Query Language
LINQ. LINQ (Language-Integrated Query) est une nouveauté du.NET Framework 3.5 C’est le nom d’un ensemble de technologies basé sur l’intégration de fonctions.
Transcription de la présentation:

SQL query - 1 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes SQL et le calcul relationnel Agrégats et groupement Couplage SQL et langage de programmation

SQL query - 2 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) SQL : Rappel Structure de base d’une requête SQL simples : SELECTvar i.A ik, … attributs FROM R i1 var 1, R i2 var 2 … variables (n-uplet) WHEREP prédicat/condition où: La variable n-uplet var i « appartient » à la table R ij : R i1 (var 1 ) Les variables dans la projection (clause SELECT) et dans la condition (clause WHERE) doivent être liées dans la clause FROM. Simplifications : Si var j n’est pas spécifiée, alors la variable s’appelle par défaut R ij. Si une seule variable n-uplet possède l’attribut A, on peut écrire plus simplement A (non-ambiguïté).

SQL query - 3 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) Trois opérations ensemblistes : union UNION différence − EXCEPT intersection INTERSECT Par défaut, les opérations ensemblistes éliminent les doublons (ensemble). Pour garder les doublons (multi-ensemble), il faut ajouter ALL après l’opérateur : UNION ALL, EXCEPT ALL, INTERSECT ALL Les types des deux tables doivent être “compatibles” : même nombre d'arguments du même type. Exceptions Oracle : EXCEPT est remplacé par MINUS; uniquement UNION ALL est implanté. SQL : Opérateurs ensemblistes

SQL query - 4

SQL query - 5

SQL query - 6 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) Requête imbriquée dans la clause WHERE d'une requête externe: SELECT … FROM … WHERE [Opérande] Opérateur (SELECT … FROM … WHERE …) Opérateurs ensemblistes : (A 1,…A n ) IN : appartenance ensembliste EXISTS : test d’existence (réponse non-vide) (A 1,…A n ) [ALL|ANY] : comparaison avec quantificateur (ANY par défaut) SQL : Requêtes imbriquées

SQL query - 7 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) SELECT … FROM … WHERE (A 1,…,A n )[NOT] IN (SELECT B 1,…,B n FROM … WHERE …) Sémantique : la condition est vraie si le n-uplet désigné par ( A 1,…, A n ) de la requête externe appartient (n’appartient pas) au résultat de la requête imbriquée. Expression « IN »

SQL query - 8 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) ALL/ANY SELECT … FROM … WHERE (A 1,…,A n )  ALL/ANY (SELECT B 1,…,B n FROM … WHERE …) On peut utiliser une comparaison  {, >=, <>} et ALL (  ) ou ANY (  ) La condition est alors vraie si la comparaison est vraie pour tous les n-uplets (ALL) ou au moins un n-uplet (ANY) de la requête imbriquée. Comment peut-on exprimer « IN » avec ALL/ANY?

SQL query - 9

SQL query - 10 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) SELECT … FROM … WHERE (NOT) EXISTS (SELECT * FROM … WHERE P) Sémantique procédurale : pour chaque n-uplet x de la requête externe Q, exécuter la requête interne Q’; s'il existe au moins un n-uplet y dans le résultat de la requête interne, alors sélectionner x. Sémantique logique : { x… | Q(x)  (¬)  y (Q’(y,x) } Les deux requêtes sont généralement corrélées (x est une variable dans Q') : P dans la requête interne Q’ exprime une jointure entre les tables de Q’ et les tables de la requête externe Q. Expression “EXISTS” Q Q’

SQL query - 11

SQL query - 12 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes SQL et le calcul relationnel Agrégats et groupement Couplage SQL et langage de programmation

SQL query - 13 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) Calcul relationnel et SQL Requête SQL de base: SELECTr i.A o, …, r j.A p FROM R 1 r 1, R i r i, …, R j r j, …, R k r k WHEREP(r 1, r 2, …, r k ) Calcul relationnel : { (r i.A o,…, r j.A p ) |  r l,...,  r k (R 1  r 1   R i (r i )  R k  r k  P(r 1,..., r k ) ) }  Rappel: SQL (sans fonctions d’agrégation et de groupement) est équivalent au calcul relationnel sain (et à l’algèbre relationnel).

SQL query - 14

SQL query - 15 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) Calcul relationnel et SQL Convertir en SQL Règle de base: un niveau d'imbrication pour chaque “¬  ” La requête SQL correspondante est: SELECT* FROMEmp e WHERE NOT EXISTS (SELECT* FROM Project p WHERE NOT EXISTS (SELECT* FROMWorks w WHEREp.Pno=w.Pno ANDe.Eno = w.Eno))

SQL query - 16 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes SQL et le calcul relationnel Agrégats et groupement Couplage SQL et langage de programmation

SQL query - 17 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) Fonction d'agrégation : calculer une seule valeur numérique à partir d'un ensemble de n-uplets : COUNT : nombre de valeurs / n-uplets SUM : somme des valeurs MAX : valeur maximale MIN : valeur minimale AVG : moyenne des valeurs SELECTAggFunc(A i ), …, AggFunc(A j ) FROMR 1,..., R m WHEREP SQL : Fonctions d'agrégation

SQL query - 18

SQL query - 19

SQL query - 20 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) Requêtes de groupement : GROUP BY Pour partitionner les n-uplets résultats en fonction des valeurs de certains attributs : SELECTA i, …, A n, aggr1, aggr2, … FROMR 1, …, R m WHEREP GROUP BY A j …, A k Règle: tous les attributs projetés ( A i, …, A n ) dans la clause SELECT qui ne sont pas impliqués dans une opération d'agrégation doivent être inclus dans l'ensemble des attributs ( A j …, A k ) de la clause GROUP BY (qui peut avoir d’autres attributs en plus)

SQL query - 21 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) GROUP BY SELECTA1, B1, sum(A2) FROMR 1, R 2 WHEREA1 < 3 GROUP BY A1, B1 R1 A1 A2 R2 B1 A1 A2 B1 A1 A2 B1 group by from where A1 B1 sum(A2) select A1 B1 A2* a a a a a a a a a a a a a a a

SQL query - 22

SQL query - 23 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) Predicats sur des groupes Pour garder les groupes (partitions) qui satisfont une certaine condition : SELECTA i, …, A n FROMR 1, …, R m WHEREP GROUP BY A j …, A k HAVINGQ Règle : La condition Q porte généralement sur des valeurs atomiques retournées par un opérateur d'agrégation sur les attributs qui n’apparaissent pas dans le GROUP BY

SQL query - 24

SQL query - 25 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes SQL et le calcul relationnel Agrégats et groupement Couplage SQL et langage de programmation

SQL query - 26 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) Couplage SQL–langage de programmation (Embedded SQL) Permet d'accéder une BD depuis un programme d'application SQL n'est pas suffisant pour écrire des applications générales (SQL n’est pas Turing complet) SQL a des liaisons (bindings) pour différents langages de programmation C, C++, Java, PHP, etc. les liaisons décrivent la façon dont des applications écrites dans ces langages hôtes peuvent interagir avec un SGBD relationnel

SQL query - 27 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) Développement d'application Programme source avec SQL « embedded » Préprocesseur Programme source Compilateur Fichiers objets Edition de liens Exécutable Bibliothèques (fcts. SQL,...) Autres fichiers objets et bibs

SQL query - 28 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) Utilisation de Embedded SQL Interface = commandes « EXEC SQL » Notion de variable partagée entre SQL et le langage hôte (C, PHP, Java,..) pour : Passer des valeurs aux requêtes avant leur évaluation (par exemple nom d'une personne lu par le programme,...) Accéder les résultats des requêtes dans le programme (par exemple afficher le résultat)

SQL query - 29 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) Requête produisant un seul n-uplet Si la requête retourne toujours un seul n-uplet, chaque attribut dans la clause SELECT nécessite une variable partagée. Exemple : retrouver le salaire pour un titre donné : … EXEC SQL BEGIN DECLARE SECTION; char title[15]; /* entré par l'utilisateur */ real sal; /* salary */ EXEC SQL END DECLARE SECTION; … /* Code non SQL (omis) pour obtenir title */ EXEC SQL SELECT Salary INTO :sal FROM Pay WHERE Title = :title; /* Code (omis) pour imprimer le résultat */ …

SQL query - 30 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) Curseurs Si la requête retourne un ensemble de n-uplets, il faut utiliser un curseur qui permet d’accéder successivement aux n-uplets du résultat de la requête SQL: déclarer (declare) le curseur :  associe un identificateur de curseur avec une requête SQL ouvrir (open) le curseur :  exécution de la requête et génération du résultat (vue logique)  positionner le curseur avant le premier n-uplet récupérer (fetch) un n-uplet :  avancer le curseur (boucle)  affecter des variables avec les valeurs du n-uplet pointé par le curseur fermer (close) le curseur.

SQL query - 31 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) Exemple de curseur Pour chaque projet employant plus de 2 programmeurs, donner le numéro de projet et la durée moyenne d'affectation des programmeurs … EXEC SQL BEGIN DECLARE SECTION; char pno[3]; /* project number */ real avg-dur; /* average duration */ EXEC SQL END DECLARE SECTION; … EXEC SQL DECLARE duration CURSOR FOR SELECTPno, AVG(Dur) FROMWorks WHEREResp = ‘Programmer’ GROUP BY Pno HAVINGCOUNT(*) > 2; … EXEC SQL OPEN duration; … while(1) { EXEC SQL FETCH FROM duration INTO :pno, :avg-dur if(strcmp(SQLSTATE, “02000”) then break else } EXEC SQL CLOSE duration …

SQL query - 32 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) PL/SQL d’Oracle PL/SQL : langage de programmation procédural intégrant SQL. Bloc PL/SQL : regroupement logique de déclarations et d’ordres. declare sal number; begin SELECTSALARY INTO sal FROMPAY WHERETITLE = ‘Programmer’; if sal>10 then UPDATE PAY SET SALARY = SALARY * 1.1 WHERETITLE = ‘Programmer’; end if; COMMIT; exception when no_data_found then INSERT INTO ERROR values (‘TITLE inexistant’);

SQL query - 33 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) Traitement de PL/SQL Bloc PL/SQL Exécution Analyse Moteur PL/SQL Serveur Oracle