Faculté des Sciences de Gabès. Cours SGBD. Faîçal Felhi

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

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

TP Contraintes - Triggers

Bases de données avancées

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

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

Oracle Le langage procédural PL/SQL

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

Présentation du PL/SQL

Bases de Données Avancées PL/SQL

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Le langage SQL Rappels

1 Introduction et installation

Optimisation SQL. Quelques règles de bases

Cours Bases de données 2ème année IUT

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

Langage SQL : créer et interroger une base

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

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

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES?

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

Chapitre 5 : Les procédures stockées PL/SQL

Le Langage De Description De Données(LDD)

Le langage procédural PL-PGSQL

//////////////////////////////////////////////////////////////////// Administration bases de données

Olivier Mondet

Les bases de données

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

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Cours Informatique Master STEP

Bases de données Outils de gestion

Administration des bases de données. Jean-Yves Antoine

Introduction à l'etl et application avec Oracle

Intégrité des données

Java Licence Professionnelle CISII,

Le Langage SQL version Oracle

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

SQL MAP. Etude d un logiciel SQL Injection

Initiation à LabView : Les exemples d applications :

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Support de cours «SGBD»

Présentation du module Base de données spatio-temporelles

Bases de données relationnelles

Corrigés détaillés des exercices

Introduction aux SGBDR

Devoir Data WareHouse

PHP. PHP et bases de données

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Introduction au PL/SQL Oracle. Alexandre Meslé

Notes de cours : bases de données distribuées et repliquées

CATALOGUE FORMATIONS DOMAINE Bases de données

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Intégrité sémantique dans les bases de données relationnelles

La Clé informatique. Formation Excel XP Aide-mémoire

Cours Bases de données 2ème année IUT

Introduction à MATLAB R

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

PL langage de programmation côté serveur. SQL à la base : types, expressions, requêtes

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

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

Programmer en JAVA. par Tama

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Du 10 Fév. au 14 Mars 2014

TP11 - Administration/Tuning

Le langage SQL (première partie) c Olivier Caron

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

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Introduction aux Bases de Données 2004/2005

Création et Gestion des tables

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Master I Génie Logiciel

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Les bases de données Page 1 / 8

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

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

1/ Présentation de SQL Server :

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Administration des bases de données

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

LE LANGAGE SQL2 1. INTRODUCTION

16H Cours / 18H TD / 20H TP

Notions fondamentales du langage C# Version 1.0

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

CREATION WEB DYNAMIQUE

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin

SQL Historique

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

Pour les débutants. langage de définition des données

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

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

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Gestion de base de données

Introduction à JDBC. Accès aux bases de données en Java

Transcription:

Faculté des Sciences de Gabès Cours SGBD Faîçal Felhi felhi_fayssal@yahoo.fr

Plan de cours 1. Chapitre1: Introduction à SGBD et PLSQL 2. Chapitre2: Les structures de contrôle 3. Chapitre3: Interaction avec Oracle et curseurs explicites 4. Chapitre4: Gestion des exceptions 5. Chapitre5: Les sous programmes 6. Chapitre6: Les sous programmes stockés et les packages 7. Chapitre7: Les déclencheurs 2

Faculté des Sciences de Gabès Cours SGBD Chapitre 1 : Introduction à SGBD et PLSQL Faîçal Felhi felhi_fayssal@yahoo.fr

La gestion des bases de données Pour contrôler les données ainsi que les utilisateurs, le besoin d'un système de gestion s'est vite fait ressentir. La gestion de la BD se fait grâce à un système appelé Système de Gestion de Bases de Données (SGBD). Le SGBD est une collection de logiciels permettant de créer, gérer et interroger de manière efficace une BD indépendamment du domaine d application. Mono ou multiordinateur. En général, peut gérer plusieurs BDs. Peut aussi accéder aux BDs d autres SGBDs. 4

Historique des SGBD Années 1970 : premiers SGBD commerciaux (hiérarchique, réseau) couplage encore assez fort entre données et programmes difficulté d'accès aux données Années 1970-1980 : premiers SGBD relationnels modèle fondé sur une théorie mathématique langage déclaratif d'accès aux données, "simple" à utiliser Années 1990 : premiers SGBD orientés-objets (OO) intégration de types de données plus divers 5

Avantages de l utilisation d un SGBD Centralisation des données intégrité des données Contrôle centralisé de l'accès aux données sécurité accrue Instructions de traitement très puissantes grande rapidité de développement Indépendance vis-à-vis de la structure physique et logique des données maintenance facilitée Les types de SGBDs Les SGBD peuvent être classés selon les modèles des BD (hiérarchique, réseau, relationnel; relationnel objet, objet, 6 Les SGBD les plus connus sont : Oracle, SQLServer, MySQL, PostgreSQL, Microsoft Access, Informix, DB2, Sybase,.

Introduction au langage PL/SQL PL/SQL (Procedural Language / Structured Query Language) est une extension procédurale à SQL : PL/SQL intègre parfaitement le langage SQL en lui apportant une dimension procédurale. En effet, le langage SQL est un langage déclaratif non procédural permettant d'exprimer des requêtes dans un langage relativement simple. En contrepartie il n'intègre aucune structure de contrôle permettant par exemple d'exécuter une boucle itérative. Le langage PL/SQL permet de définir un ensemble de commandes contenues dans ce que l'on appelle un "bloc" PL/SQL. Un bloc PL/SQL peut lui-même contenir des sous-blocs. Le bloc PL/SQL est analysé et exécuté par le moteur PL/SQL. 7

Introduction au langage PL/SQL Lorsque le moteur PL/SQL reçoit un bloc pour exécution, il effectue les opérations suivantes : Séparation des ordres SQL et PL/SQL Passage des commandes SQL au processeur SQL ( SQL Statement Executor) Passage des instructions procédurales au processeur d instructions procédurales (Procedural Statement Executor) 8

Les blocs PL/SQL 9 Le bloc est l'unité de programmation PL/SQL. Structure d'un bloc PL/SQL : [DECLARE # déclarations et initialisation] BEGIN # instructions exécutables [EXCEPTION # interception des erreurs] END; Les blocs PL/SQL peuvent être imbriqués les uns dans les autres: DECLARE # BEGIN DECLARE #.. BEGIN ## BEGIN ### END ; ### END ; ##.. END ;

Les blocs PL/SQL PL/SQL distingue deux types de blocs : Bloc «anonyme», il correspond à une séquence qui s exécute à l endroit où elle existe. Bloc «nommé», c est sous-programme : procédure ou fonction, et pouvant être appelée autant de fois que nécessaire. Chaque bloc PL/SQL peut être constitué de 3 sections : Une section facultative de déclaration et initialisation de types, variables et constantes Une section obligatoire contenant les instructions d'exécution Une section facultative de gestion des erreurs 10

Section de déclaration Section déclarative optionnelle (facultative) d'un bloc Débute par le mot clé DECLARE Elle contient toutes les déclarations des variables qui seront utilisées localement par la section exécutable, ainsi que leur éventuelle initialisation. Cette section ne peut pas contenir d'instructions exécutables. Toutefois, il est possible de définir dans cette section des procédures ou des fonctions contenant une section exécutable. Toute variable doit avoir été déclarée avant de pouvoir être utilisée dans la section exécutable. Exemple : DECLARE LC$Chaine VARCHAR2(15) := 'Salut Monde' ; BEGIN DBMS_OUTPUT.PUT_LINE( LC$Chaine ) ; END ; 11 Une variable LC$Chaine est déclarée de type VARCHAR2(15) et initialisée avec la valeur 'Salut Monde' ; Dans la section exécutable, cette variable est transmise à la fonction DBMS_OUTPUT() pour être affichée à l'écran

Section exécutable Section obligatoire d'un bloc Débute par le mot clé BEGIN et se termine par END Elle contient les instructions de programme et la section de gestion des erreurs Chaque instruction doit être suivi du terminateur d'instruction ; 12

Section de gestion des exceptions 13 Section de gestion des erreurs optionnelle (facultative) débute par le mot clé EXCEPTION Elle contient le code exécutable mis en place pour la gestion des erreurs Lorsqu'une erreur intervient dans l'exécution, le programme est stoppé et le code erreur est transmis à cette section Exemple : DECLARE V_Chaine VARCHAR2(15) := 'Hello World' ; BEGIN DBMS_OUTPUT.PUT_LINE( V_Chaine ) ; EXCEPTION When.then END ; Les erreurs doivent être interceptées avec le mot clé WHEN suivi du code erreur ciblé.

Types PL/SQL et déclarations Les types PL/SQL se répartissent en deux classes : scalaire et composé. Types scalaires PL/SQL supporte les types du langage SQL (CHAR, VARCHAR2, NUMBER, DATE) et offre des types supplémentaires pour déclarer des variables et des constantes ainsi que des sous types. 14

Types PL/SQL et déclarations 15 Type Explication BINARY_INTEGER Nombre entier compris entre -2 147 483 647 et +2 147 483 647 NUMBER[(e,d)] BOOLEN NATURAL POSITIVE INT, INTEGER, SMALLINT, DEC, REAL, DECIMAL ROWID Nombre réel avec e chiffres significatifs stockés et d décimales Une variable booléenne peut recevoir les valeurs TRUE FALSE NULL. Sous-ensemble de BINARY_INTEGER des entiers de 0 à 2147483647 Sous-ensemble de BINARY_INTEGER des entiers de 0 à 2147483647 Sont des sous-types du type NUMBER Permet de stocker l'adresse absolue d'une ligne dans une table sous la forme d'une chaîne de caractères. Le format d'une telle variable est le suivant : 000000FFFBBBBBBRRR 000000 représente le numéro de l'objet qui possède cette ligne (dans le cas de cluster, plusieurs objets peuvent partager le même segment) FFF représente le numéro du fichier qui contient la ligne BBBBBB représente le numéro du bloc dans le fichier RRR représente le numéro de ligne dans le bloc

Déclaration d une variable Syntaxe: Nom_variable type [NOT NULL] [ { := DEFAULT} expression ] ; nom variable représente le nom de la variable composé de lettres, chiffres, $, ou #. Le nom de la variable ne peut pas excéder 30 caractères NOT NULL interdit d affecter une valeur nulle dans la variable durant toute sa vie et exige obligatoirement son initialisation à la déclaration. [ { := DEFAULT} expression ] initialise une variable dès sa déclaration Leur initialisation, facultative, s'effectue avec l'opérateur := 16 Exemples : age integer; nom varchar(30); datenaissance date; Date _demain date DEFAULT SYSDATE+1; ok boolean := true;

Déclaration d une variable Il est important de noter que : Les déclarations multiples sont interdites (une seule déclaration par ligne): i, j integer; Les identificateurs de variables et de constantes doivent être différents des noms de colonnes; PL/SQL n'est pas sensible à la casse. Pour lui les expressions suivantes sont équivalentes : NOM_VARIABLE NUMBER ; Nom_Variable Number ; nom_variable number ; 17 Commentaires -- Pour une fin de ligne /* Pour plusieurs lignes */

Déclaration d une variable Pour une meilleur lisibilité des programmes, il est recommandé de préfixer les identificateurs selon les conventions suivantes : Identificateurs Préfixe Exemple Variables V_ V_Salaire Exceptions E_ E_Stock_Insuffisant Curseurs C_ C_Etudiant Paramètre P_ P_Chno 18

Déclaration d une variable L attribut %TYPE référence à un type existant qui est soit une colonne d'une table soit un type défini précédemment 19 %TYPE : se lit de même type que Syntaxe: nom_variable1 nom_variable2%type ; Exemple: -- variable de même type que la colonne ENAME de la table EMP V_Nom EMP.ENAME%TYPE ; -- variable de même type qu'une ligne de la table EMP V_EMP EMP%ROWTYPE ; V_Dat1 DATE ; -- variable de même type que V_Dat1 (DATE) V_Dat2 V_Dat1%TYPE ;

Déclaration des constante Une constante est une variable dont l'initialisation est obligatoire et dont la valeur ne pourra pas être modifiée en cours d'exécution Elle est déclarée avec le mot clé : CONSTANT qui doit précéder le type Syntaxe: Nom_constante expression ] ; CONSTANT nom_de_type [ { := DEFAULT} Exemple : Pie CONSTANT NUMBER := 3. 14159 ; 20

Les types Les types PL/SQL se répartissent en deux classes : scalaire et composé. Types composés PL/SQL offre deux types composés : le type enregistrement (RECORD) et le type table (TABLE). Un enregistrement peut être défini de deux façons, soit en définissant ses éléments, soit en se référant à une structure de données (table de la base ou curseur) 21

Les types Type enregistrement (RECORD) La déclaration se fait en deux étapes : a/ Déclaration du type enregistrement Syntaxe TYPE nom-type IS RECORD ( champ1 type1, champ2 type2, ); b/ Déclaration d une variable du type enregistrement Syntaxe nom_variable nom_type; 22 Exemple TYPE emp2 IS RECORD ( matr integer, nom varchar(30)); employe emp2; employe.matr := 500;

Les types Type enregistrement par référence à une table : PL/SQL permet de déclarer un enregistrement de même structure qu une table de la BD en utilisant le type générique %ROWTYPE : Syntaxe Nom_enregistrement nom_table%rowtype; Exemple employe emp%rowtype; 23

Les types Type Table : Une table PL/SQL est vecteur d éléments d un même type scalaire accessibles au moyen d un indice déclaré de type BINARY_INTEGER. La déclaration se fait en deux étapes : a/ Déclaration du type des éléments de la table Syntaxe TYPE Nom_type IS TABLE OF type_scalaire [NOT NULL], INDEX BY BINARY_INTEGER; b/ Déclaration de la variable du type table Syntaxe : nom_table nom_type; 24 type_scalaire : Type de données de l'attribut concerné NOT NULL : Ne pas insérer de valeur nulle dans un n-uplet de la table INDEX BY BINARY_INTEGER : Création d'un attribut contenant l'indice du n-uplet de type obligatoire BINARY_INTEGER Exemple TYPE TAB_NOTE IS TABLE OF NUMBER(5,2) INDEX BY BINARY_INTEGER; -- déclaration d un type TNOTE TAB_NOTE ; -- déclaration d une variable

Affectation et expressions L affectation d une expression dans une variable se fait généralement par l opérateur " := Syntaxe Nom_variable := expression; Exemple V_Nom := ALICE ; V_Compteur := V_Compteur+1; V_Message := V_Message TO_CHAR (V_Salaire); Les variables logiques reçoivent directement TRUE, FALSE ou le résultat d une expression logique. Exemple V_Trouve := TRUE; V_NonTrouve:= NOT V_Trouve; V_Admis := V_Moyenne >=10; Il est également possible d affecter une expression à une variable avec la clause INTO d un curseur. 25

Conversion implicite 26 Outre les conversions explicites par les fonctions prédéfinies (TO_CHAR, TO_NUMBER, TO_DATE, ), PL/SQL peut effectuer des conversions implicites lors des affectations ou évaluations d expressions. 1. L affectation d un nombre dans une chaîne réussit : V_Message VARCHAR2(100) := 1500; -- ok 2. L affectation d une chaîne contenant un nombre réussit : V_Salaire NUMBER(9,3) := V_Message; - - ok est équivalent à V_Salaire NUMBER(9,3) := TO_NUMBER( V_Message); - - ok Ne jamais affecter une valeur textuelle dans une variable numérique, ceci conduit à un échec. 3. Conversion implicite entre DATE et CHAR V_Aujourdhui VARCHAR2(9) := SYSDATE; -- ok V_Date DATE := 21-JAN-O8 ; - - ok Dans l évaluation des expressions, il est conseillé de recourir à des conversions explicites car celles implicites risquent de produire des résultats imprévisibles.

Evaluation des expressions L évaluation des expressions repose sur les règles de priorité des opérateurs ci-dessous présentés de la plus haute vers la plus faible priorité. L usage des () est autorisé pour imposer une priorité dans l évaluation d une expression Opérateur Opération Haute Faible **, NOT +, - *, / +, -, <, <=, =,!=, >, >=, IS NULL, LIKE, BETWEEN, IN Puissance, négation logique Identité, inversion de signe Multiplication, division Addition, soustraction, concaténation Inférieur, inférieur ou égale, différent, supérieur,.., test de nullité, comparaison de chaîne, intervalle de valeur, appartenance. 27 AND OR ET logique OU logique

Usage des fonctions SQL dans les instructions PL/SQL La plupart des fonctions SQL sont utilisables dans les expressions PL/SQL Fonctions SQL valides en PL/SQL Type de fonctions Numérique mono ligne Caractère mono ligne Date Usage divers Exemples ROUND, CEIL, FLOOR LENGT, LOWER, UPPER, TO_CHAR,.. SYSDATE, NEXTDAY, LASTDAY,.. NVL,.. 28 Fonctions SQL non valides en PL/SQL Certaines fonctions SQL sont non autorisés dans les instructions procédurales comme : Les fonctions de groupes, MIN, MAX, AVG, COUNT, etc. ; Les fonctions GREATEST et LEAST.

Imbrication de blocs PL/SQL Imbrication autorise l emboîtement des blocs PL/SQL après BEGIN. Parmi les avantages de l imbrication, on peut citer: Une meilleur lisibilité des programmes décomposés en sous-blocs Un meilleur usage des techniques de gestion et de propagation des exceptions Schéma d imbrication: 29 «bloc1» - - les doubles chevrons «et» délimitent une étiquette DECLARE A INTEGER; B NUMBER; BEGIN DECLARE A INTEGER; C NUMBER; BEGIN IF Bloc1.A = A then.end IF; EXCEPTION END; EXCEPTION. END;

Portée et visibilité Portée (scope) La portée d une variable est tout le bloc où elle est définie. La portée de B s étend au bloc externe et au sous bloc alors que la portée de C se réduit à son bloc interne Visibilité (visibility) La visibilité d une variable est l endroit du programme où elle est utilisable. B est visible dans le bloc externe et dans le bloc interne. Par contre A visible dans son bloc de définition, n est pas visible dans le sous bloc puisqu elle est cachée par une variable de même nom (A du sousbloc). Sa visibilité est donc réduite. Dans le cas de blocs imbriqués ou une même variable est déclarée dans chaque bloc, la visibilité d'une variable se rapporte toujours à la plus proche déclaration 30