1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5.

Slides:



Advertisements
Présentations similaires
Bases de Données Avancées: Bases de Données Relationnelles
Advertisements

Transformation de documents XML
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
SQL - Subtilités.
Fonctionnalités des SGBD
Algèbre relationnelle
C.
Introduction aux Entity Beans
R. Saint-Paul, G. Raschia and N. Mouaddib IRIN, Nantes (France)
TP 3-4 BD21.
Introduction à la POO: Les classes vs les objets
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les contraintes d’integrité
Contrôles d'accès aux données
Rappel sur les bases de données et le vocabulaire
Le langage PHP 5.
Chap 4 Les bases de données et le modèle relationnel
1 Bases de Données Distribuées Chapitre 22, Sections 22.6–22.14.
Calcul Relationnel Chapitre 4, Section 4.3.
2 Ils associent les rangées de 2 requêtes UNION [ALL] INTERSECT MINUS.
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
Expressions régulières et hash tables
1 Développement des Applications des Bases de Données Chapitre 6.
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 Evaluation des Operations Relationnelles Chapitre 14, Section 14.4.
SQL: Contraintes et Triggers
Algèbre Relationnelle
Optimisation des Requêtes Relationnelles
1 Évaluation des Requêtes: Survol Chapitre Objectifs Catalogue Préliminaires: Techniques de base pour traiter des requêtes Chemin daccès Correspondance.
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Évaluation des Requêtes: Survol Chapitre 12.
Bases de Données II (Automne 2007)
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
Cours de Base de Données & Langage SQL
Cours N°2 Base de Données & Langage SQL
1 SQL Avancé 2010 Witold Litwin 2 Quoi & Pourquoi ? n Possibilités Etendues de Manipulation de BDs relationnelles n Fondamentales pour lexploration approfondie.
1 SQL Manipulations Avancées (08-09) Witold Litwin.
1 SQL Manipulations Avancées (08-09) Witold Litwin.
1 SQL Manipulations Avancées Witold Litwin 2 Exemple canon S P SPSP.
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
SQL: Requêtes, Programmation et Triggers
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Calcul Relationnel Chapitre 4, Section 4.3.
Michel Tollenaere SQL et relationnel ENSGI Cours MSI 2A Relationnel et SQL version 1.4 du 25 septembre 2007 (ajout jointures) 1 Modèle relationnel Historique.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Introduction.
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.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
Créer des packages.
Institut Supérieur d’Informatique
Module 7 : Utilisation de requêtes élaborées
Sélection de colonnes (la projection)
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Langage Relationnel Graphe de Requêtes
Séance /10/2004 SGBD - Approches & Principes.
Complément sous-requêtes
INTRODUCTION AUX BASES DE DONNEES Base et métabase
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 Module 1.
Introduction au langage PL/SQL
Bases de données – Cours 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 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
SQL query - 1 / D. Berrabah SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes Agrégats et groupement.
Transcription de la présentation:

1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5

2 Survol des Composantes de SQL Langage de manipulation des données (DML): utilisé pour poser des requêtes, insérer, effacer ou modifier des lignes. Langage de définition des données (DDL): utilisé pour créer, détruire ou modifier les tables et vues. Triggers et contraintes dintégrité avancées : utilisés pour spécifier des actions que le SGBD exécutera automatiquement. SQL incorporé : permet à SQL dêtre appelé dun langage hôte. SQL dynamique : permet de créer et dexécuter des requêtes pendant lexécution dun programme dapplication.

3 Survol des Composantes de SQL (Suite) Exécution client serveur et accès à distance aux BDs: commandes sur laccès à un serveur distant. Gestion des transactions: contrôle lexécution des transactions. Sécurité: contrôle laccès des utilisateurs au système. Divers composantes: orientation objet, récursivité, aide à la décision, XML, données spatiales, exploration des données (data mining), etc. DML, DDL, triggers et ICs seront vu dans ce module.

4 Exemples dinstances S1 S2S2 R1

5 Requête SQL de Base relation-list Une liste des noms de relation (possiblement avec une variable détendue («range-variable») après chaque nom). target-list Une liste dattributs des relations dans relation- list qualification Comparaisons (Attr op const ou Attr1 op Attr2, où op est une des opérations ) combinées en utilisant les particules logiques AND, OR et NOT. DISTINCT est un mot-clé optionnel indiquant que la réponse ne devrait pas contenir des duplicata. Par défaut les duplicata ne sont pas éliminés. SELECT [DISTINCT] target-list FROM relation-list WHERE qualification

6 Stratégie dÉvaluation Conceptuelle La sémantiques dune requête SQL est définie en termes de la stratégie dévaluation suivante: Calculer le produit Cartésien de relation-list. Effacer du résultat tous les tuples ne remplissant pas les qualifications. Effacer les attributs qui ne sont pas dans target-list. Si DISTINCT est spécifié, éliminer les ligne redondantes (duplicata). Cette stratégie est probablement la moins efficiente manière de calculer la réponse à une requête! Un optimisateur trouvera sûrement une stratégie plus efficiente de calculer les mêmes réponses.

7 Exemple dÉvaluation Conceptuelle SELECT S.sname FROM Sailors S, Reserves R WHERE S.sid=R.sid AND R.bid=103

8 Une Note sur les Variables dÉtendue Leur utilisation nest strictement nécessaire que si la même relation apparaît deux fois dans la clause FROM. Ainsi la requête précédente a deux formulations alternatives: SELECT S.sname FROM Sailors S, Reserves R WHERE S.sid=R.sid AND bid=103 SELECT sname FROM Sailors, Reserves WHERE Sailors.sid=Reserves.sid AND bid=103 Lutilisation des variables détendue est cependant considérée comme un bon style! OU

9 Trouver les navigateurs qui ont réservé au moins un bateau Lajout de DISTINCT ferait-il une différence dans cette requête? Quel serait leffet du remplacement de S.sid par S.sname dans la clause SELECT ? Lajout de DISTINCT à cette dernière variante de la requête ferait-il une différence? SELECT S.sid FROM Sailors S, Reserves R WHERE S.sid=R.sid

10 Expressions et Chaînes («Strings») Illustre lutilisation dexpressions arithmétiques et des filtrages des chaînes («string pattern matching»): Trouver des triplets (formés des âges des navigateurs et de deux autres attributs définis par des expressions) pour des navigateurs dont les noms commencent et se terminent par B et contiennent au moins 3 caractères. AS et = sont deux manières de nommer des attributs dans le résultat. LIKE est utilisé pour le filtrage des chaînes de caractères. `_ est utilisé pour un caractère (manquant) et `% tient lieu de 0 ou plus dun caractère arbitraire. SELECT S.age, age1=S.age-5, 2*S.age AS age2 FROM Sailors S WHERE S.sname LIKE B_%B

11 Trouver les sids des navigateurs qui ont réservé un bateau rouge ou vert UNION: peut être utilisée pour calculer lunion de deux ensembles de tuples qui sont compatibles vis-à-vis de lunion (Ces derniers étant eux- mêmes le résultat des requêtes SQL). Si nous remplaçons OR par AND dans la première version, quel serait le résultat? Si nous remplaçons UNION par EXCEPT nous calculons la différence. SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND (B.color=red OR B.color=green) SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=red UNION SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=green

12 Trouver les sids des navigateurs qui ont réservé un bateau rouge et un bateau vert INTERSECT: Peut être utilisé pour calculer lintersection de deux ensembles de tuples qui compatibles vis-à-vis de lunion. Inclus dans le standard SQL/92, mais certains systèmes ne le supportent pas. Contrastez la symétrie des requêtes utilisant UNION et INTERSECT avec lasymétrie des autres requêtes exprimant la même chose. SELECT S.sid FROM Sailors S, Boats B1, Reserves R1, Boats B2, Reserves R2 WHERE S.sid=R1.sid AND R1.bid=B1.bid AND S.sid=R2.sid AND R2.bid=B2.bid AND (B1.color=red AND B2.color=green) SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=red INTERSECT SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=green

13 Requêtes Imbriquées («Nested Queries») Ceci est un mécanisme très puissant de SQL: une clause WHERE peut contenir une requête SQL! Pour trouver les navigateurs qui nont pas réservé le bateau #103, on utilise NOT IN. La sémantique des requêtes imbriquées est comparable à lévaluation des boucles imbriquées : Pour chaque tuple de Sailors, vérifier la qualification en calculant la sous requête. SELECT S.sname FROM Sailors S WHERE S.sid IN ( SELECT R.sid FROM Reserves R WHERE R.bid=103) Trouver les noms des navigateurs qui ont réservé le bateau #103:

14 Requêtes Imbriquées avec Corrélation EXISTS est un autre opérateur de comparaison densemble semblable à IN. Si UNIQUE est utilisé et * est remplacé par R.bid, la requête cherche les navigateurs avec au plus une réservation pour le bateau #103. Cette exemple montre pourquoi, en général, la sous requête doit être recalculée pour chaque tuple de Sailors. SELECT S.sname FROM Sailors S WHERE EXISTS ( SELECT * FROM Reserves R WHERE R.bid=103 AND S.sid=R.sid) Trouver les noms des navigateurs qui ont réservé le bateau #103:

15 Opérateurs de Comparaison dEnsemble On déjà vu IN, EXISTS et UNIQUE. Leur négation sont aussi utilisées NOT IN, NOT EXISTS et NOT UNIQUE. Il y a aussi: op ANY, op ALL, op IN Trouver les navigateurs dont le niveau est plus grand que celui dun navigateur appelé Horatio: SELECT * FROM Sailors S WHERE S.rating > ANY ( SELECT S2.rating FROM Sailors S2 WHERE S2.sname=Horatio)

16 Expression des Requêtes INTERSECT en Utilisant IN De même, les requêtes EXCEPT peuvent être re-écrites en utilisant NOT IN. Pour trouver les noms ( names) (pas les sid s) des navigateurs qui ont réservé des bateaux rouges et des bateaux vert, il suffit de remplacer S.sid par S.sname dans la clause SELECT. Trouver les sids des navigateurs qui ont réservé un bateau rouge et un bateau vert: SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=red AND S.sid IN ( SELECT S2.sid FROM Sailors S2, Boats B2, Reserves R2 WHERE S2.sid=R2.sid AND R2.bid=B2.bid AND B2.color=green)

17 Division en SQL Cette requête est difficile à exprimer sans utiliser EXCEPT : SELECT S.sname FROM Sailors S WHERE NOT EXISTS (( SELECT B.bid FROM Boats B) EXCEPT ( SELECT R.bid FROM Reserves R WHERE R.sid=S.sid)) Trouver les navigateurs qui ont réservé tous les bateaux.