1 Créer les Applications de BDs : SQL Imbriqué Witold Litwin.

Slides:



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

Les Systèmes de Gestion de Bases de Données (SGBD) PL-SQL.
Langage de manipulation de données Ensemble de commandes permettant : – modifier la base : ajout, modification et suppression – interroger la base ex :
Découverte de SQL Server par la pratique pour les administrateurs expérimentés Module 5 : Accès aux données Bertrand Audras Microsoft Technology Center.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
SQL - Subtilités.
Fonctionnalités des SGBD
SQL Catalogues, Vues, Autorisations, Déclencheurs
Algèbre relationnelle
Optimisation algébrique de requêtes relationnelles
1 SQL Subtilités Witold Litwin. 2 Synonymes n "Différent de" peut être exprimé de trois manières: != ^= –Oracle, DB2 mais pas MsAccess n Type d'attribut.
Programmation dapplication INT. 2 Bases de Données Plan du document Contexteslide 1 Programmer avec une BDslide 2 Client-Serveur SQL et architecture 3.
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
Connexion base de données
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.
Développement d’applications web
XQuery 1. Introduction 2. Modèle de données 3. XQuery par l'exemple
Contrôles d'accès aux données
CYCLE 3 : Alternatives Faire des choix dans un programme en C 1- AIGUILLAGE SIMPLE sur CONDITION : if-else 2-AIGUILLAGE MULTIPLE sur CONDITIONS if-else.
L’utilisation des bases de données
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Mise en œuvre du langage MDX - 1 ère partie- Présentation de lexemple et des outils utilisés -1-
Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre.
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
L’utilisation des bases de données
1 Développement des Applications des Bases de Données Chapitre 6, Sections
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Cours N°2 Base de Données & Langage SQL
1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
SQL Injection Réalisée par: BEN NASR Houssem GMATI Idriss HADDAD Mohamed Aymen HAKIM Youssef.
Développer en C avec Eclipse Introduction Création d'un projet Ajout de fichiers Compilation Exécution Utiliser le débogueur Département dinformatique.
PLSQL ORACLE 8i Connecter VB à BD Oracle Les collections Question de révision Les blocs anonymes Les triggers REVISION Par : Joël Huot.
ACTIVITES Les quotients (5).
GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++
1 Développement des Applications des Bases de Données Chapitre 6.
1 CSI 2532 Lab5 Installation de JDBC Février 13, 2012.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Contraintes et Triggers Chapitre 5,
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Développement des Applications des Bases de Données Chapitre 6, Sections
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.
PL/SQL Noreddine GHERABI 1.
C'est pour bientôt.....
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
‘‘Open Data base Connectivity‘‘
Introduction.
PHP & My SQL.
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,
10 paires -. 9 séries de 3 étuis ( n° 1 à 27 ) 9 positions à jouer 5 tables Réalisé par M..Chardon.
CALENDRIER-PLAYBOY 2020.
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
USAM BRIDGE H O W E L L -CLASSIQUE
Mise en œuvre du langage MDX
LES PILES ET FILES.
9 paires séries de 3 étuis ( n° 1 à 27 )
Initiation MS Access 2010 Requêtes - Sélection (travail en autonomie)
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
1 BDs Orientées Objets Witold LITWIN. 2 Pourquoi ? F Les BDs relationnelles ne sont pas adaptées aux applications CAD/CAM, cartes géo... F le problème.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
02/06/2015© Robert Godin. Tous droits réservés.1 5 Interface entre SQL et un programme n SQL incomplet n Défaut d'impédance (impedance mismatch) – modèle.
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
Séance /10/2004 SGBD - Approches & Principes.
Initiation aux bases de données et à la programmation événementielle
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,
Transcription de la présentation:

1 Créer les Applications de BDs : SQL Imbriqué Witold Litwin

2 Introduction Destiné aux programmeurs d'application Les ordres sont imbriqués parmi les instructions d'un langage de programmation favori: –Cobol, PL1, C... Ces ordres sont ensuite précompilés

3 Exemple de texte source PL1 DCL GIVENS# CHAR(5) ; DCL RANK FIXED BIN(15) ; DICL CITY CHAR(15); DCL.... EXEC SQL DECLARE S TABLE ( S# CHAR(5)NOT NULL SNAME CHAR(20), STATUS INT, CITY CHAR(20) ) ; EXEC SQL INCLUDE SQLCA ; IF ALPHA > BETA THEN GETSTC EXEC SQL SELECT STATUS CITY INTO :RANK, :CITY FROM S WHERE S# = :GIVENS# ; PUT SKIP LIST (RANK, CITY) Texte blanc: PL1 Vert & jaune: SQL

4 Exemple de texte source PL1 DCL GIVENS# CHAR(5) ; DCL RANK FIXED BIN(15) ; DICL CITY CHAR(15); DCL.... EXEC SQL DECLARE S TABLE ( S# CHAR(5)NOT NULL SNAME CHAR(20), STATUS INT, CITY CHAR(20) ) ; EXEC SQL INCLUDE SQLCA ; IF ALPHA > BETA THEN GETSTC EXEC SQL SELECT STATUS CITY INTO :RANK, :CITY FROM S WHERE S# = :GIVENS# ; PUT SKIP LIST (RANK, CITY) SQL Communication Area Variables Hôte Interface entre le hôte et le SGBD

5 Communication hôte-SQL Variables -hôtes (de forme :x ) –type doit être compatible avec les attributs SQL correspondants –SGBD, ex. DB2, en général peut fait certaines conversions entre types faibl. compatibles ex.: CITY char (15) : CITY Char (20) Les variables-hôtes peuvent être employées dans les clauses de requêtes

6 Communication hôte-SQL SQLCA avec SQLCODE: 0 = ordre exécuté OK 100 = résultat vide (pas de tuples) = SQL warning < 0 = SQL erreur Codes warning et erreur ne sont pas normalisés entre les dialectes –ODBC de facto standard ??

7 Préparation et exécution d'une application SQL Bind Appl. Plan Modif. source Module Compil. DB Request Module Object Mod. Module source Ed. de liens Mod. de charg. Mod. de charg. Precomp. App. Plan Suprv. d'Exec. Gest. de Données Gest. de Tampons Autres Mémoire centrale BD

8 Concept de curseur Pointeur d'un tuple dans la table temporaire définit par une requête SQL imbriquée SQL curseur Table virtuelle

9 Concept de curseur Pointeur d'un tuple dans la table temporaire définit par une requête SQL imbriquée SQL curseur

10 Curseurs (sémantique) Nécessaires pour les opérations navigationnelles, car non-SQL Plusieurs curseurs peuvent simultanément partager une table (virtuelle). Un curseur n'a pas de valeur connue ; –seul le tuple pointé est mis à la disposition Un curseur ne peut qu'avancer, d'un tuple à la fois Un curseur peut être ouvert, puis fermé, puis reouvert etc.

11 SELECT sans curseur le résultat doit être un seul tuple: EXEC SQL SELECT STATUS, CITY INTO :RANK, :CITY FROM S WHERE S# = :GIVENS# ; Si les nuls peuvent être trouvés, alors on peut déclarer les variables indicateurs: EXEC SQL SELECT STATUS, CITY INTO :RANK:RANKID, :CITY FROM S WHERE S# = :GIVENS# ; IF RANKIND < 0 THEN traite le nul...

12 UPDATE sans curseur EXEC SQL UPDATE S SET STATUS = STATUS + :RAISE WHERE CITY = 'PARIS' ; S'il n'y a pas de tuple satisfaisant WHERE, alors SQLCODE := 100 ;

13 DELETE & INSERT sans curseur EXEC SQL DELETE FROM SP WHERE :CITY = (SELECT CITY FROM S WHERE S.S# = SP.S#) ; Idem pour SQLCODE si la clause WHERE n'est pas satisfaite EXEC SQL INSERT INTO P (P#, PNAME, WEIGHT) VALUES (:PNO, :PNAME, :W) ;

14 Opérations sur les curseurs Exemple EXEC SQL DECLARE X CURSOR FOR SELECT S#, SNAME, STATUS FROM S WHERE CITY = :Y ; EXEC SQL OPEN X ; DO pour tous les tuples de S accessibles via X: EXEC SQL FETCH X INTO :S#, :SNAME, :STATUS END EXEC SQL CLOSE X ;

15 Opérations sur les curseurs EXEC SQL DECLARE curseur CURSOR FOR expression-de-sélection [ FOR UPDATE OF attribut [, attribut ]... | ORDER BY attribut [, attribut ]... ] ; ORDER BY est pour les interrogations seulement EXEC SQL FETCH curseur INTO cible [, cible ].... cible := :variable-hôte [:variable-indicateur ].... Variable-indicateur de FETCH est gérée comme pour le SELECT sans curseur

16 CURRENT OF curseur Spécifie le tuple en cours, pour la navigation avec un UPDATE ou un DELETE EXEC SQL UPDATE TABLE SET STATUS = STATUS + :UPGRADE, CITY = :CITY WHERE CURRENT OF X ; EXEC SQL DELETE FROM SP WHERE CURRENT OF Y ;

17 CURRENT OF curseur UPDATE CURRENT et DELETE CURRENT ne sont pas permis quand: –SELECT inclue UNION ou ORDER BY –CREATE VIEW avec ce SELECT aurait défini une vue impossible à mettre à jour. Pour UPDATE CURRENT, on doit préalablement déclarer le curseur et les attributs mis à jour.

18 SQL Dynamique Un ordre de SQL imbriqué à exécuter peut ne pas à être connu à la compilation Exemples : –un interface convivial à SQL interactif –une application offrant le SQL interactif lui-même, ex. MsAccess SQL dynamique est une solution à ce problème, ajoutée à SQL imbriqué originel –plusieurs SGBDs n'avaient pas de SQL dynamique pendant plusieurs années (INGRES)

19 L'idée SQL "statique": –on déclarait au précompilateur un texte d'une requête SQL, SQL dynamique: –on déclare seulement une variable soit V de SQL à l'exécution, run-time, on chargera dynamiquement dans V le texte reçu

20 SQL Dynamique: commandes DCL SQLSOURCE CHAR (256) VARYING ; EXEC SQL DECLARE SQLOBJ STATEMENT ; INPUT (SQLSOURCE) ; EXEC SQL PREPARE SQLOBJ FROM :SQLSOURCE ; EXEC SQL EXECUTE SQLOBJ ; La procédure INPUT initialise :SQLSOURCE avec le texte d'une requête SQL, par exemple venant d'un terminal. –ex. 'SELECT * FROM S' SQLSOURCE est une variable PL1, mais SQLOBJ est une variable SQL destinée à recevoir le run-time texte de SQL SQLCODE est initialisé comme d'habitude

21 Avantages/désavantages Une flexibilité ou une nécessité pour certaines applications Mais, une possible détérioration de performances d'une requête –peut être importante –c'est pourquoi, on garde le SQL "statique"

22 Conclusion SQL imbriqué : un sous-langage relationnel pour imbriquer dans les langages de programmation traditionnels Offre les fonctions non-procedurales et navigationnelles –déclarations de tables –curseurs Offre les interfaces de communication: –variables dans les requêtes –SQLCA

23 Conclusion L'idée conduit au problème de l'impédance mismatch Modèle de données hôte Modèle relationnel

24 Conséquences négatives Le programmeur d'application doit maîtriser deux modèles de données et la conversion entre eux –en général on ne peut pas écrire une application vite prototyper en quelques heures écrire en quelques jours –perte des avantages non-proceduraux du relationnel Les opérations non-relationnelles souvent nécessite l'extraction navigationnelle de la totalité d'une ou plusieurs tables –performances médiocres voire inacceptables de l'ensemble

25 Solutions proposées Langages 4-GL –génération rapide d'applications –bonne convivialité inhérente d'utilisation de SGBD –Très gros succès ! SGBD extensibles (faillite) Interoperabilité (en cours de preuve) OO-SGBDs et relationnel-objet (idem) –LBD est un langage de progr. complet donc pas de mismatch

26 FIN

27