Bases de données. Mihaela Mathieu

Dimension: px
Commencer à balayer dès la page:

Download "Bases de données. Mihaela Mathieu"

Transcription

1 Bases de données Mihaela Mathieu

2 Objectifs : comprendre et maîtriser les fonctions d un SGBD relationnel (Oracle et MySQL) connaître le langage SQL savoir développer une application sous Oracle et MySQL c M. Mathieu 2

3 Contenu du cours : Introduction aux SGBD(R) historique définitions, panorama du marché présentation d Oracle et de SQL*Plus présentation de MySQL Manipulation et description des objets d une base - langage SQL Système transactionnel Administration système d Oracle catalogues de données gestion des utilisateurs c M. Mathieu 3

4 Programmation et bases de données programmation en PL/SQL Java et le SGBD (Oracle) c M. Mathieu 4

5 Contenu TP : travail avec Oracle (SQL, PL/SQL, C, Java) depuis une plate-forme Windows ou Unix Contenu TD : * rappel du modèle relationnel c M. Mathieu 5

6 Le cours ne comprend pas : progammation C pour les bases de données aspects XML module Oracle Web... d autres modules d Oracle notions de bases de données OLAP, bases de données distribuées c M. Mathieu 6

7 Pré-requis : logique cours Systèmes d Informations c M. Mathieu 7

8 Chapitre 1 : Introduction aux SGBD(R) 1. Définitions 2. État du marché 3. Présentation d Oracle et de SQL*Plus 4. Présentation de MySQL c M. Mathieu 8

9 Base de données = collection structurée de données cohérentes, intègres, protégées et accessibles simultanément aux utilisateurs. Système de Gestion de Bases de Données = logiciel complexe capable d assurer l exploitation correcte et efficace des BD. BD au coeur des Systèmes d Information importance capitale de la qualité, de la fiabilité et de la bonne exploitation des SGBDs. Volume d une BD : entre 1 MegaBytes et 10? TeraBytes. La taille d une BD doit être transparente à l utilisateur et au développeur (-), de même pour son déploiement. c M. Mathieu 9

10 Une représentation d une BD : Schéma externe Schéma externe Schéma conceptuel Schéma physique Mémoire (externe) c M. Mathieu 10

11 Le schéma conceptuel indique la façon dont les données sont modélisées, structurées (selon le modèle choisi : relationnel, objet ou autre ; les tables et les indexes, les procédures...) Le schéma physique indique comment dont les structures choisies sont implantées physiquement. Tout est stocké en mémoire. Les schémas externes sont dédiées aux utilisateurs et donnent des vues (partielles) des données de la base. c M. Mathieu 11

12 Les acteurs d une BD : utilisateurs : naïfs, occasionnels, avertis développeurs administrateurs (DBA) : administrateurs de données et administrateurs système experts c M. Mathieu 12

13 UTILISATEUR Schéma externe Schéma externe Schéma conceptuel DEVELOPPEUR Schéma physique EXPERT DBA Mémoire (externe) c M. Mathieu 13

14 Plusieurs configurations sont possibles : une BD sur une seule machine plusieurs BD sur la même machine une BD sur plusieurs machines (BD distribuée) Une BD peut admettre 1 ou plusieurs utilisateurs simultanés. Pour n importe quelle configuration le SGBD doit assurer le bon fonctionnement dans la transparence. Un SGBD doit assurer : la définition des bases de données et des objets contenus la manipulation des données la confidentialité l intégrité des données la sécurité de fonctionnement la gestion des accès concurrents c M. Mathieu 14

15 Les SGBD ont un modèle de représentation des données. Classification de SGBD selon leur modèle : relationnel réseau, hiérarchique (plus maintenant) orienté objet (passé de mode). Exemple : O2 XML Les fonctions d un SGBD sont indépendantes du modèle de représentation des données, mais la réalisation de ces fonctions y dépend. Quelques SGBD : petits (bureautique) : Paradox, MS Access moyens SGBD : dbase, FoxPro de taille importante : Oracle, DB2, SQL Server, Ingres logiciel libre : MySQL, PostgeSQL. Le prix d un SGBD varie entre 100 et quelques 10 6 euros. c M. Mathieu 15

16 MySQL - logiciel libre - SGBD relationnel, client/serveur - facile à installer et à utiliser - supporte mal les gros volumes de données - langage SQL réduit par rapport au standard - assure mal la cohérence et la consistence de données c M. Mathieu 16

17 ORACLE - SGBD produit depuis 1975 par Oracle Corporation - SGBD périodiquement mis à jour et en évolution (dernières versions : 9i et 10G). Version utilisée SGBD relationnel (qui tolère des représentations objets depuis la version 8 et des traitements RI et en langage XML depuis la version 9). Pourquoi Oracle? utilise SQL très proche du standard comme langage d interrogation fiable multi-utilisateurs comporte toutes des fonctions des SGBD possibilité de développer des applications variées très répandu en milieu industriel (les moins : administration assez lourde pour des gros volumes de données, son prix) c M. Mathieu 17

18 Les composants d Oracle : SQL*Plus : permet de description et la manipulation des données à travers le langage SQL SQL*Loader, SQL*Net, SQL*Admin compilateur Pro*C Oracle Entreprise Manager OracleWeb : développement des application Web Portail d entreprise, gestionnaire de documents papiers et multimédia Oracle JDevelopper : réalisation des applications multi-fonctions, multi-fenêtres sur la BD... Architecture Client /Serveur sur des serveurs Unix, Windows (NT, XP...), Linux et clients PC, Linux, Unix. c M. Mathieu 18

19 Les objets qu Oracle manipule : pour la manipulation des données : les tables les séquences les indexes les synonymes les clusters - jointure physiques sur plusieurs tables (distantes) pour les traitements : les fonctions et procédures stockées et/ou appelées explicitement les triggers - procédures déclenchées lors des événements précis les assertions - procédures de vérifications lancées systématiquement pour la gestion des utilisateurs les users et leurs droits explicites c M. Mathieu 19

20 Les méta-données d Oracle : des tables spécifiques avec des informations sur des objets de la même catégorie Oracle sait aussi gérer les transactions. Une base Oracle peut s interfacer facilement avec une autre base Oracle ou autre. Des nombreux logiciels de développement d applications travaillent sur les bases Oracle (Swing, PowerBuilder, OpenRoad,...) c M. Mathieu 20

21 Présentation SQL*Plus SQL*Plus est un outil d Oracle pour interroger la BD. fonctionne comme un interpréteur en ligne En entrée : des commandes propres des ordres SQL des procédures PL/SQL des fichiers SQL Il est appelé avec la commande : >sqlplus nom [email protected][/mot de passe] c M. Mathieu 21

22 Exemple 1 : SQL>desc agent ou SQL>describe agent commande SQL*PLUS qui indique la structure de l objet agent. Équivalent à : SQL > desc - agent Exemple 2 : SQL > select * from agent ; (toutes les instructions SQL finissent par les caractère ; ) Exemple 3 : SQL exécute les ordres contenus dans fichier.sql c M. Mathieu 22

23 Architecture Oracle utilisée : Oracle en client/serveur sur educusers (le serveur) et optxy et asixy (les clients Sun) et PC (les clients Windows). c M. Mathieu 23

24 Chapitre 2 : Types de données Les tables d une BD relationnel se composent des attributs qui contiennent des données. Chaque attribut a un type de données précis. Les types de données sous SQL : tous les types sont simples (pas de types composés, pas de références...) ordonnés ou pas, indexables ou pas c M. Mathieu 24

25 Les types de données sont les suivants : Chaînes de caractères : VARCHAR2(taille) : taille variable d au plus 2000 caractères (VARCHAR sous MySQL) CHAR(taille) :taille fixe d au plus 255 caractères LONG : au plus caractères non-indexable un seul champ LONG par table c M. Mathieu 25

26 Nombres : NUMBER(n,v) : n chiffres, v chiffres après la virgule (DECIMAL sous MySQL) INTEGER FLOAT Dates : DATE : date et heure type ordonné permet des opérations numériques (elle est visible comme une chaîne de caractères selon le format de sortie) Données binaires : RAW(taille) : jusqu à 255 octets LONG RAW : jusqu à 2 Giga Octets pareil que long pb pour la récupération de la valeur c M. Mathieu 26

27 Les constantes : texte : délimitées par des apostrophes ou guillemets : Chaîne ou Chaine numériques : nombre entiers ou à virgule : 12, 12,5 ou 12.5 valeurs logiques : TRUE, FALSE la date courante : SYSDATE (ou NOW sous MySQL) l objet NULL manque de données, vide c M. Mathieu 27

28 La valeur NULL : désigne un manque de données 0 n est pas NULL si une expression contient NULL, est vaut NULL la comparaison avec NULL : IS NULL, est pas = NULL La fonction NVL permet de corriger dans des expressions une possible valeur NULL : NVL (attribut, valeur par-défaut) La fonction COALESCE est une extension de NVL en admettant un nombre variable de paramètres, elle retourne la première valeur non nulle rencontrée dans la liste de ses paramètres. c M. Mathieu 28

29 Fonctions de conversion : TO CHAR : numérique ou date -> chaîne de caractères TO NUMBER : chaîne ->numérique TO DATE : chaîne -> date Autres fonctions : GREATEST, LEAST Opération et fonctions pour le type DATE : opérations + et - avec la signification : date + - nombre : ajout ou suppression d un nombre de jours de la date date1 - date2 : le nombre de jours entre les deux dates calcul de dates : LAST DAY, NEXT DAY, ADD MONTHS c M. Mathieu 29

30 La table DUAL est créée par défaut par Oracle et accessible par tous les utilisateurs ne contient qu un champ DUMMY avec la valeur C est utilisée pour obtenir des valeurs calculées sur la base des constantes Oracle Exemple : SELECT SYSDATE FROM DUAL ; c M. Mathieu 30

31 Chapitre 3 : Langage SQL 1. Manipulations (interrogations et modifications des objets données d une base) 2. Descriptions (créations, modifications, suppressions) 3. Contrôle (gestion des transactions). c M. Mathieu 31

32 SQL = Structured Query Language version stable issu de QUEL sur Ingres et SEQUEL sur SYSTEM R (IBM) langage non-procédural langage interactif Trois dimensions du langage : définition et modification du schéma d une base de données relationnelle interrogation et modification (non-procédurale) de la base contrôle de sécurité et confidentialité de la base. Une commande SQL est souvent appelée requête. SQL ne fait pas la différence entre les petites et les grandes lettres (sauf à l intérieur des chaînes de caractère). c M. Mathieu 32

33 1. Consultation de données - une seule commande : SELECT [ALL/DISTINCT/UNIQUE] liste de sélection FROM nom table,... [WHERE condition de recherche] [GROUP BY liste attributs] [HAVING condition de recherche] [ORDER BY liste attributs] ou une version qui opère avec des ensembles : requête SELECT1 {UNION MINUS INTERSECT} requête SELECT2 car le résulat d une requête SELECT est un ensemble de tuples, i.e. une table. c M. Mathieu 33

34 On appèle clause une partie d une requête. Les clauses SELECT et FROM sont obligatoires. La clause SELECT contient la liste de séléction ainsi que des descripteurs pour la présentation du résultat. La liste de sélection contient : des attributs, des expressions où des attributs ou des constantes interviennent. Un attribut est sous la forme champs ou table.champs. Le symbole * dans la liste de sélection signifie tous les champs de la table. Exemple : SELECT * FROM LECTEUR ; fournit tous les enregistrements de cette table. c M. Mathieu 34

35 SELECT NOM, PRENOM, AGE FROM LECTEUR fournit uniquement les champs indiqués de la table, présentés enregistrement par enregistrement. Les options DISTINCT, UNIQUE assurent la non-redondance du résultat (option implicite : ALL, donc rédondance). Exemple : SELECT PRENOM FROM LECTEUR ; fournit tous les champs PRENOM des enregistrements de cette table, même les doublons. SELECT DISTINCT PRENOM FROM LECTEUR fournit l ensemble des champs PRENOM, donc sans les doublons. c M. Mathieu 35

36 La clause FROM contient une liste d au moins une table avec ou sans synonyme pour une écriture équivalente plus rapide. Exemple : les deux requêtes ci-dessous sont strictement équivalentes : SELECT NOM, PRENOM, AGE FROM LECTEUR et SELECT L.NOM, L.PRENOM, L.AGE FROM LECTEUR L Une vue ou un synonyme se comporte dans une requête SELECT comme une table. (On se concentre pour l instant sur les requêtes SELECT qui opèrent sur une seule table). c M. Mathieu 36

37 La clause ORDER BY permet d afficher les résultats selon des champs présents dans sa liste de sélection. Le tri peut être croissant (option ASC - implicite) ou décroissant (option DESC). La liste de la clause ORDER BY contient des éléments de même type que la clause SELECT (sauf le * ) et / ou des numéros. Exemple : SELECT NOM, PRENOM FROM LECTEUR ORDER BY AGE et SELECT NOM, PRENOM, AGE FROM LECTEUR ORDER BY 3 Les numéros font référence aux éléments de la clause SELECT. En absence de cette clause les résultats sont présentés dans leur ordre d obtention par le système. c M. Mathieu 37

38 Les conditions de recherche sont formées d une ou plusieurs conditions reliées par les opérateurs logiques : NOT, AND et OR. Ces conditions sont de 3 types : conditions de comparaisons conditions de jointure conditions sous-requête c M. Mathieu 38

39 Conditions de comparaison permettent de comparer un attribut ou une expression à un autre attribut ou valeur. La syntaxe est : exp opérateur comparaison exp exp [NOT] BETWEEN exp AND exp exp [NOT] IN (liste valeurs) attribut [NOT] LIKE chaîne attribut IS [NOT] NULL exp désigne une expression formée des attributs, constantes, fonctions reliés par les opérateurs : +, -, *, /,. Les opérateurs de comparaisons sont ceux connus. Exemple : SELECT * FROM LECTEUR WHERE AGE < 10 ; c M. Mathieu 39

40 Le prédicat BETWEEN permet de vérifier si l expression située à gauche se trouve dans l intervalle défini. Exemple : SELECT * FROM LECTEUR WHERE AGE BETWEEN 10 AND 14 ; Le prédicat IN permet de vérifier si un attribut se trouve dans la liste de valeurs indiquées. Exemple : SELECT * FROM LECTEUR WHERE AGE IN (10, 11, 12, 13, 14) ; c M. Mathieu 40

41 Le prédicat LIKE permet de réaliser des comparaisons entre un attribut et une chaîne de caractères en utilisant des caractères de substitution : pour zéro ou plusieurs caractères (%) pour un seul caractère ( ) Exemple : SELECT * FROM LECTEUR WHERE PRENOM LIKE Mich% ; permet d avoir les enregistrements qui correspond aux lecteurs dont le prénom commence par Mich. c M. Mathieu 41

42 Les fonctions sur les chaînes de caractères : UPPER() - conversion en majuscules LOWER() - conversion en minuscules TRIM() - suppression des répétitions d un caractère à gauche ou à droite ou aux deux extrémités SUBTRING() - création d une chaîne a partir d une autre. Les fonction sur les dates : DATE(exp) - conversion d une expression numérique ou chaîne de caractère vers une date DAY(date) - le jour du mois de la date MONTH(date) - le mais de la date YEAR(date) - l année de la date c M. Mathieu 42

43 Les fonctions agrégat (de regroupement) permettent d obtenir des données synthétiques concernant une table ou des attributs de la table : COUNT(* / attribut) - le nombre d enregistrements satisfaisant la requête SUM(attribut) - la somme des valeurs MIN(attribut) - le minimum MAX(attribut) - le maximum AVG(attribut) - la moyenne arithmétique STDEV(attribut) - l écart-type VARIANCE(attribut) - la variance liée à l écart-type La fonction COUNT peut contenir aussi les directives DISTINCT ou ALL. Exemple : SELECT COUNT(*), AVG(AGE) FROM LECTEUR ; fournit le nombre d enregistrements dans la table LECTEUR et la moyenne d âge. c M. Mathieu 43

44 La clause GROUP BY permet de grouper le résultat en fonction des valeurs des attributs présents dans la liste SELECT. Exemple 1 : SELECT COUNT(*), AGE FROM LECTEUR GROUP BY AGE ; fournit le nombre d enregistrements dans la table LECTEUR pour chaque tranche d age. La même requête sans la clause GROUP BY est érronnée, car imbigue. Exemple 2 : SELECT COUNT(*) FROM LECTEUR WHERE PRENOM = Anna ; fournit le nombre d enregistrements dans la table LECTEUR qui ont le prénom Anna. c M. Mathieu 44

45 La clause HAVING décrit une restriction posées sur un groupe des tuples, donc toute condition qui est posée sur un agrégat doit figurer dans la clause HA- VING. Exemple 3 : SELECT COUNT(*), AGE FROM LECTEUR GROUP BY AGE HAVING COUNT(*) >= 2 ; fournit les tranches d age avec au moins deux enregistrements dans la table LECTEUR. c M. Mathieu 45

46 Travail avec la valeur NULL Des champs peuvent avoir la valeur NULL. Exemple : select anom, aprenom, commission from agent ; Résultat : JACQ Aime LEM Roger DESCH Didier BART Fabs BLANCO Laurent 10.5 DESS Lim... c M. Mathieu 46

47 Les requêtes d agrégat comme : select min(commission) from agent ou select count(commission) from agent opèrent uniquement sur des valeurs non NULL. La requête : select anom, aprenom, nvl(to char(commission), sans ) from agent affiche : ANOM APRENOM NVL(TO CHAR(COMMISSION), SANS ) JACQ Aime sans LEM Roger sans DESCH Didier sans BART Fabs sans BLANCO Laurent 10.5 DESS Lim sans c M. Mathieu 47

48 Le fonctionnement de la fonction COUNT et des autres fonctions agrégat Exemples : select count(*) from agent ; fournit le nombre total d enregistrements de la table AGENT. select count(fonction) from agent ; fournit le nombre d apparitions du champ FONCTION de la table AGENT. select count(distinct fonction) from agent ; fournit le nombre d apparitions des valeurs distinctes du champ FONCTION. c M. Mathieu 48

49 La requete : select fonction, count(*) from agent ; est ambigue et non-résolue. La requete : select fonction, count(*) from agent group by fonction ; fournit : FONCTION COUNT(*) ANALYSTE 2 CAPITAINE 1 COMMERCIAL 4 DIRECTEUR 1 EMPLOYE 4 GARDIEN 1 PRESIDENT 1 qui est la liste de toutes les valeurs du champ FONCTION, avec leur nombre d apparitions. c M. Mathieu 49

50 Si la liste de sélection d une requete SELECT contient des fonctions d agrégat et des attributs des tables de sélection, dans la clause GROUP BY il faut impérativement indiquer tous les attributs ou fonctions scalaires sur ces attributs qui apparaissent dans la clause SELECT. c M. Mathieu 50

51 Requêtes SELECT sur plusieurs tables Dans la clause FROM on fait figurer plusieurs tables ou on utilise une condition de sous-requête. Exemple : SELECT lecteur.*, pret.* FROM lecteur, pret ; fournit les enregistrements concatennés de deux tables. En absence de toute condition entre les champs de deux tables la requête réalise simplement le produit cartésien : il faut donc ajouter des conditions de jointure. c M. Mathieu 51

52 Conditions de jointure Un jointure est un lien entre des attributs semblables des deux tables différente : table1.attribut1 opérateur table2.attribut2 L opérateur de comparaison peut être : =, <, >, <> (!=), <=, >=. Exemple : SELECT LECTEUR.CODE LECTEUR, LECTEUR.NOM, LECTEUR.PRENOM FROM LECTEUR, ENSEIGNANT WHERE LECTEUR.NOM = ENSEIGNANT.NOM AND LECTEUR.PRENOM = ENSEIGNANT.PRENOM ; permet d extraire des informations de la table LECTEUR qui ont un correspondant dans la table ENSEIGNANT. c M. Mathieu 52

53 Les jointures s appèlent internes quand l existence des deux attributs (table1.attribut1, table2.attribut2) est obligatoire. Un cas particulier de jointure interne est l équijointure : on teste l égalité entre des attributs qui ont des domaines compatibles et la même signification sémantique. Exemple : SELECT lecteur.*, pret.* FROM lecteur, pret WHERE lecteur.code lecteur = pret.code lecteur ; on fournit uniquement les lecteurs qui ont des prêts en cours, un lecteur apparaît autant de fois que le nombre d enregistrements de la table pret. c M. Mathieu 53

54 Exemple : les lecteurs qui ont en prêt la livre L Ile Mistérieuse : SELECT nom, prenom FROM lecteur l, pret p, document d WHERE lecteur.code lecteur = pret.code lecteur AND p.code document = d.code document AND d.titre = L Ile Mystérieuse ; L ordre des conditions d équijointure n est pas importante, de même dans une équijointure on peut permuter les deux attributs. Remarque : d autres conditions que = ou!= sont rarement utilisées dans les jointures. c M. Mathieu 54

55 Une condition de jointure externe s exprime à l aide du (+) mis à coté d un attribut : table1.attribut1 = table2.attribut2(+) ou table2.attribut2(+) = table1.attribut1 avec la signification : si des enregistrement de la table2 existent et vérifient la clause WHERE ils sont sélectionnés conformément à une jointure classique ; si des enregistrement de la table2 n existent pas les enregistrements de la table1 sont toutefois sélectionnés. c M. Mathieu 55

56 Exemple : soient les tables EMPLOYE(NOM, CODE S) et SERVICE(CODE S, NOM SERVICE) avec les enregistrements : NOM CODE S Anna 117 Nicolas 170 André 170 Paul CODE S NOM SERVICE 170 RH 800 Direction 117 Comptabilité c M. Mathieu 56

57 Pour afficher les employés et leur service : SELECT nom, nom service FROM employe, service WHERE e.code s = s.code s ; mais l employé Paul n y figure pas. La jointure ouverte (externe) : SELECT nom, nom service FROM employe, service WHERE e.code s = s.code s(+) ; fournit : NOM André Anna Nicolas Paul NOM SERVICE RH Comptabilité RH c M. Mathieu 57

58 Autre jointure ouverte : SELECT nom, nom service FROM employe, service WHERE e.code s(+) = s.code s ; fournit : NOM André Anna Nicolas NOM SERVICE RH Contabilité RH Direction Si on veut obtenir une jointure à deux entrées, il faut utiliser l opération UNION. c M. Mathieu 58

59 Une condition de sous-requête : [NOT] EXISTS (requête SELECT) la condition est évaluée à vrai, si la requête SELECT retourne au moins une ligne. Exemple : SELECT * FROM PRET WHERE EXISTS (SELECT * FROM DOCUMENT) ; affiche le contenu de la table PRET uniquement si la table DOCUMENT n est pas vide. c M. Mathieu 59

60 Exemple 1 : vérifier que des exemplaires du livre Les Fourmis sont en prêt : SELECT COUNT(*) FROM document d WHERE d.titre = Les formis AND EXISTS (SELECT * FROM pret p WHERE d.code document = p.code document) ; c M. Mathieu 60

61 Exemple 2 : vérifier que tous les exemplaires du livre Les Fourmis sont en prêt : SELECT Oui FROM document d WHERE d.titre = Les formis AND NOT EXISTS (SELECT * FROM pret p WHERE d.code document = p.code document) HAVING COUNT(*) = 0 ; c M. Mathieu 61

62 Requêtes imbriquées Les imbrications des requêtes peuvent apparaître au niveau des conditions de la clause WHERE et au niveau des tables de sélection. (Oracle admet jusqu à 16 requêtes imbriquées.) Les imbrications de la clause WHERE sont de type : table.attribut = (requête SELECT) ou table.attribut IN (requête SELECT) ou table.attribut {<,>,<=,>=} {ANY ALL}(requête SELECT) Les deux premières formes sont sémantiquement équivalentes, mais leur façon d être résolues par le SGBD est différent. c M. Mathieu 62

63 Les sous-requêtes qui apparaissent dans la partie droite ne doivent pas contenir des clauses ORDER BY. Une requête imbriquée peut s écrire comme une requête non-imbriquée. Exemple : afficher tous les lecteurs ayant emprunté des livres depuis 24h : SELECT DISTINCT l.nom, l.prenom FROM lecteurs l WHERE l.code lecteur IN (SELECT p.code lecteur FROM pret p WHERE p.date pret > SYSDATE -1) ; Cette requête peut s écrire comme : SELECT DISTINCT l.nom, l.prenom FROM lecteurs l, pret p WHERE l.code lecteur = p.code lecteur AND p.date pret > SYSDATE -1 ; c M. Mathieu 63

64 Exemple : afficher les agents qui gangent au moins comme un plus grand salaire d une fonction : SELECT anom, aprenom FROM agent WHERE salaire >= ANY (SELECT MAX(salaire) FROM agent GROUP BY fonction) Exemple : afficher les agents qui gangent plus que le plus grand salaire de chaque fonction : SELECT anom, aprenom FROM agent WHERE salaire >= ALL (SELECT MAX(salaire) FROM agent GROUP BY fonction) c M. Mathieu 64

65 Le résultat d une requête SELECT peut être utilisé comme une table de sélection. Exemple : afficher les agents qui gagnent le plus grand et le plus bas salaire : select anom, aprenom from agent A, ( select min(salaire) as sal from agent) B, ( select max(salaire) as sala from agent) C where A.salaire = B.sal or A.salaire = C.sala ; Dans les requêtes de cette forme l usage des synonymes devient impératif. (Les synonymes sont utilisés pour les noms des tables de la clause FROM et pour la liste de sélection de la clause SELECT. Ces synonymes sont volatiles.) c M. Mathieu 65

66 Une requête ensembliste est de forme : requête1 UNION [ALL] MINUS INTERSECT requête2 où UNION, MINUS, INTERSECT réalise les opérations des ensembles connues. La version UNION ALL réalise l union des résultats de chaque requête sans éliminer les doublons. Les listes de sélection des deux requêtes se doivent être compatibles par type. c M. Mathieu 66

67 Exemple : afficher les agents qui gagnent le plus grand et le plus bas salaire : select anom, aprenom from agent where salaire = (select min(salaire) from agent) union select anom, aprenom from agent where salaire = (select max(salaire) from agent) ; c M. Mathieu 67

68 Modifications de données : Langage SQL - Mise à jour des données insertion INSERT mise à jour - UPDATE suppression - DELETE (TRUNCATE) 1. Insertion INSERT INTO nom table [(liste attributs)] VALUES (liste valeurs) Si les champs de la table sont explicités par (liste attributs), la liste des valeurs doit avoir la même longueur car la correspondance se fait de 1 à 1, sinon, la liste des valeurs doit correspondre en longueur et en type à la liste des attributs de la table dans leur ordre de définition. Si des attributs ne sont pas spécifiés, ils prendront la valeur NULL ou leur valeur par défaut. c M. Mathieu 68

69 Exemple : la table COLLECTIVITE a la structure suivante : SQL>desc collectivite Name Type IDCOLLECT NUMBER CDESINATION VARCHAR2(20) alors : INSERT INTO COLLECTIVITE VALUES (9, Picardie ) ; est équivalent à : INSERT INTO COLLECTIVITE (CDESINATION, IDCOLLECT) VALUES ( Picardie, 8) ; c M. Mathieu 69

70 Une autre forme de l ordre INSERT : INSERT INTO nom table[(liste attributs)] requête SELECT ; permet l insertion dans la table indiquée des enregistrements (même plusieurs) obtenus avec la requête SELECT. Exemple : INSERT INTO AGENT BIS SELECT * FROM AGENT ; réalise une copie de la table AGENT dans la table AGENT BIS qui a la même structure. c M. Mathieu 70

71 2. Modification UPDATE nom table SET nom attribut = valeur,.../ (liste attributs) = (liste valeurs)... WHERE condition ; Cette instruction permet la modification des enregistrements vérifiant la condition ; cette modification porte sur les attributs précisés dans la clause SET qui se voient attribués les valeurs indiquées. Ces valeurs sont soit des constantes, soit des expressions contenant des opérateurs et fonctions (excepté les fonctions agrégats) qui portent sur des constantes et des attributs. Le type d une valeur associée pour un attribut modifié doit être compatible avec le type de l attribut. c M. Mathieu 71

72 Exemple : UPDATE COMMANDE SET DATEC = sysdate, DATEL = DATEL + 10 WHERE IDCOMM = 20 ; est équivalent avec : UPDATE COMMANDE SET (DATEC, DATEL) = (sysdate, DATEL+ 10) WHERE IDOMM = 20 ; Cette requête modifie l enregistrement de la table COMMANDE ayant la valeur 20 pour l attribut clé IDCOMM. c M. Mathieu 72

73 La forme suivante de UPDATE permet de faire la modification des attributs avec des valeurs obtenues par une ou plusieurs requêtes SELECT (appelées sous-requêtes) : UPDATE nom table SET (attribut) = (sous-requête),... (liste attributs) = (sous-requête) [WHERE condition] ; Les sous requêtes doivent impérativement retourner un seul enregistrement. Si la sous-requête fait intervenir la table nom table et les attributs à modifier, on dit que la requête est corrélée. Dans une requête corrélée on doit utiliser des synonymes pour les tables. c M. Mathieu 73

74 Exemple 1 - une requête non-corrélée qui attribue à un certain agent le salaire maximum de la fonction COMMERCIAL : UPDATE AGENT SET SALAIRE = (SELECT MAX(SALAIRE) FROM AGENT WHERE FONCTION = COMMERCIAL ) WHERE IDAGENT = 210 ; Exemple 2 - une requête corrélée, qui attribue à un certain agent le salaire maximum de son service : UPDATE AGENT A1 SET SALAIRE = (SELECT MAX(A2.SALAIRE) FROM AGENT A2 WHERE A2.SERVICE ID = A1.SERVICE ID) WHERE IDAGENT = 210 ; c M. Mathieu 74

75 3. Suppression DELETE FROM nom table [WHERE condition] ; Cette instruction permet d enlever de la table nom table tous les enregistrements qui vérifient la condition. En absence de la clause WHERE tous les enregistrements de la table seront effacés. L ordre : TRUNCATE nom table ; permet la suppression rapide de tous les enregistrements de la table nom table. c M. Mathieu 75

76 Exemple : DELETE FROM COMMANDE WHERE DATEL < SYSDATE ; efface les enregistrements de la table COMMANDE qui ont la date de livraison passé de plus d un an. Les instructions : DELETE FROM COMMANDE ; et TRUNCATE COMMANDE ; fournissent presque le même résultat : l effacement de tous les enregistrements de la table COMMANDE, mais la deuxième forme est plus rapide et ne nécessite pas de confirmation. c M. Mathieu 76

77 L effet des mises à jour : SQL - langage de contrôle des données les requête INSERT, UPDATE, DELETE modifient d abord le buffer utilisateur. Elles doivent être rendues définitives avec l ordre SQL : COMMIT ou annulées avec l ordre ROLLBACK la requête TRUNCATE est effective (une fois qu elle est saisie, elle est directement exécutée sur la base). c M. Mathieu 77

78 Transactions Transaction = une séquence de commandes traitée comme une opération atomique afin de garantir la cohérence et l intégrité des données de la base. Les commandes sont des mises à jour et / ou des simples consultations. Exemple 1 : l enregistrement d une commande VPC de plusieurs produits, qui comporte : l insertion de l entête de la commande l insertions des produits commandés Ces insertions doivent être exécutées de façon indissociable et définitive. Exemple 2 : la réservation de places dans un avion (problème de concurrence d accès) - solution : gestion transactionnelle des opérations sur la base. Exemple 3 : un transfert bancaire entre 2 comptes. c M. Mathieu 78

79 Les propriétés d une transactions : atomicité : les opérations d une transaction sont exécutées comme une unique opération consistance : la base reste dans un état cohérent à la fin de la transaction isolation : la transaction s exécute indépendamment d autres opérations sur la base durabilité : les mises à jour d une transaction sont définitives (ACID) Une transaction comporte : un début : création une fin : validation ou annulation c M. Mathieu 79

80 Création d une transaction : implicite : à partir de la première instruction qui suit la connexion à la base ou après un ordre COMMIT ou ROLLBACK explicite : par l exécution de l ordre : SET TRANSACTION {READ ONLY READ WRITE} Validation : implicite : à la fin de la connexion explicite : par l ordre COMMIT Annulation : explicite : par l ordre ROLLBACK ou : ROLLBACK TO SAVEPOINT point de retour ou le point de retour est crée avec l ordre : SET SAVEPOINT point de retour à l intérieur de la transaction. c M. Mathieu 80

81 Exemple 1 : SQL>SELECT* FROM AGENT ; SQL>INSERT INTO AGENT... SQL>UPDATE AGENT SET... SQL>SELECT * FROM AGENT ; SQL>COMMIT ; Les ordres INSERT et UPDATE font partie d une même transaction, ils seront exécutés l un après l autre, mais leur exécution est faite dans un intervalle de temps indivisible. Lors du deuxième ordre SELECT les modifications sont visibles, bien qu elles ne soient pas encore effectuées dans la base. Exemple 2 : SQL>SET TRANSACTION READ ONLY SQL>SELECT * FROM AGENT ; SQL>SELECT * FROM SERVICE ; SQL>COMMIT ; On obtient le contenus de deux tables au même moment, à savoir à la déclaration de la transaction. c M. Mathieu 81

82 Une transaction READ ONLY contient uniquement des ordres SELECT et LOCK TABLE nom table Les requête SELECT sont exécutées avec le contenu de la base tel qu il était au moment de la déclaration SET TRANSACTION. SQL*Plus dispose aussi la commande : SET AUTOCOMMIT [ON OFF] Si on a l option ON sur le paramètre AUTOCOMMIT, après chaque requête correcte syntaxiquement l ordre COMMIT est fait automatiquement. c M. Mathieu 82

83 SQL - Langage de définition des données Trois ordres pour définir des objets dans la base : CREATE objet nom liste paramètres ALTER objet nom option paramètre DROP objet [option] ou objet peut être : table, vue, indexe, synonyme, séquence, profil utilisateur, procédure stockée ou déclenchée, tablespace, base, etc. Ces ordres se auto-valident, à savoir si ils sont corrects syntaxiquement et fonctionellement, ils sont immédiatement exécutés dans la base de façon définitive et irréversible. c M. Mathieu 83

84 Manipulation des tables Une table se compose de colonnes, qui ont chacune un type, et doit respecter des contraintes d intégrité. Les contraintes d intégrité sont des conditions qui s exprime sur une ou plusieurs colonnes de la table avec, parfois, des colonnes d une deuxième table. La définition d une table se fait avec l ordre : CREATE TABLE nom table [(nom colonne type [DEFAULT valeur] [contrainte colonne],... [contrainte table,...])] [options de stockage, cluster, parallélisme, etc] [AS requête SELECT ] Les options de stockage et autres dépendent du SGBD (travail de l administrateur de BD). c M. Mathieu 84

85 Exemple 1 : CREATE TABLE COLLECTIVITE (IDCOLL NUMBER(2) DEFAULT 0, NOM COLLECTIVITE VARCHAR2(30)) ; Les contraintes d intégrités sur une colonne contrainte colonne ou sur une table contrainte table sont de forme : [CONSTRAINT nom contrainte] description contrainte Si le nom d une contrainte n est pas indiquée, il est généré automatiquement. Le nom sert à pouvoir supprimer la contrainte ou pouvoir l activer / désactiver. La description contrainte est de forme : [NOT] NULL, CHECK, UNIQUE, PRIMARY KEY, FOREIGN KEY c M. Mathieu 85

86 [NOT] NULL indique si la colonne est autorisée ou pas à avoir la valeur NULL (par défaut NULL autorisé). UNIQUE [(colonne,..)] indique que la colonne ou la liste des colonnes engendrent l unicité de l enregistrement (forment une clé potentielle). CHECK (condition) indique que la condition qui porte sur une ou plusieurs colonnes de la table doit être toujours satisfaite. PRIMARY KEY[(colonne,...)] indique que la ou les colonnes auxquelles la contrainte est associée forment la clé primaire de la table (ORACLE admet donc des clés multiples ayant jusqu au 16 colonnes). c M. Mathieu 86

87 FOREIGN KEY [(colonne,...)] REFERENCES table2 (colonne,...) [ON DE- LETE CASCADE] Une telle contrainte est une contrainte d intégrité référentielle. La ou les colonnes de cette clé étrangère doivent correspondre en nombre et en type avec les colonnes indiquées de la table2. De plus, les colonnes de cette table2 (qui peut être différente de la table de définition ou la même) doivent impérativement être soit une clé primaire, soit associées à une contrainte UNIQUE. L effet de cette contrainte est que les valeurs des colonnes de la table1 doivent toujours se retrouver dans la table2. La clause ON DELETE CASCADE indique que si un enregistrement de la table2 est supprimé, les enregistrements de la table1 avec la clé étrangère correspondante doivent aussi être supprimés. Aucune contrainte d intégrité n est obligatoire pour une table. c M. Mathieu 87

88 Exemple 2 : CREATE TABLE COLLECTIVITE (IDCOLL NUMBER(2) DEFAULT 0 CONSTRAINT NN COLL IDCOLL NOT NULL CONSTRAINT PK COLLECTIVITE PRIMARY KEY, NOM COLLECTIVITE VARCHAR2(30) NOT NULL) ; équivalent à : CREATE TABLE COLLECTIVITE (IDCOLL NUMER(2) DEFAULT 0 CONSTRAINT NN COLL IDCOLL NOT NULL, NOM COLLECTIVITE VARCHAR2(30) NOT NULL, CONSTRAINT PK COLLECTIVITE PRIMARY KEY(IDCOLL)) ; Exemple 3 : CREATE TABLE EMPLOYE (IDEMP NUMBER(5) DEFAULT 0 NOT NULL CONSTRAINT PK EMPLOYE PRIMARY KEY, NOM VARCHAR25(50) NOT NULL, PRENOM VARCHAR2(50)NOT NULL, IDCHEF NNUMBER(5) NULL, NO SS VARCHAR2(15) CONSTRAINT CC EMP1 CHECK(NO SS LIKE 1% OR NO SS LIKE 2% ), IDCOLL NUMBER(2) CONSTRAINT FK EMP1 FOREIGN KEY REFERENCES COLLECTIVITE(IDCOLL)); c M. Mathieu 88

89 Exemple 4 : CREATE TABLE EMPLOYE (IDEMP NUMBER(5) DEFAULT 0 NOT NULL CONSTRAINT PK EMPLOYE PRIMARY KEY, NOM VARCHAR25(50) NOT NULL, PRENOM VARCHAR2(50)NOT NULL, IDCHEF NNUMBER(5) NULL, NO SS VARCHAR2(15) CONSTRAINT CC EMP1 CHECK(NO SS LIKE 1% OR NO SS LIKE 2% ), IDCOLL NUMBER(2) CONSTRAINT FK EMP1 FOREIGN KEY REFERENCES COLLECTIVITE(IDCOLL), CONSTRAINT FK EMP2 FOREIGN KEY (IDCHEF) REFERENCES EMPLOYE(IDEMP)) ; Dans cette table il y a deux clés étrangères. La contrainte FK EMP1 exige que la table COLLECTIVITE soit créée avant et que les insertions dans la table EMPLOYE soient faites après celles de la table COLLECTIVITE. La contrainte FK EMP2 est très difficile à satisfaire lors des insertions, car les insertions doivent être faites dans un ordre stricte avant d assurer l insertion d un chef avant ses employés. Que faire pour s affranchir? c M. Mathieu 89

90 La clause AS requête SELECT permet d insérer directement dans la table les enregistrements obtenus avec la requête. L usage de cette clause change le format de description de la table : la description peut manquer et, dans ce cas, les noms des colonnes de la table seront donnés par les noms des colonnes présentes dans la requête ; les mêmes contraintes d intégrité sont également ajoutées. si la description est présente, on n indique pas le type des colonnes qui est donné par le type des colonnes de SELECT ; le nombre de colonnes retournées par ce SELECT doit correspondre au nombre des colonnes de la table. Exemple 5 : CREATE TABLE EMP ARCHIVE AS SELECT * FROM EMPLOYE ; Attention! toute mise à jour postérieure à cette déclaration pour la table EMPLOYE n est pas répercutée sur la table EMP ARCHIVE. c M. Mathieu 90

91 La modification d une table est réalisée par un ordre : ALTER TABLE nom table option ; Les options sont : des changements de l espace de stockage, des partitions, du parallélisme, etc non explicitées dans ce cours RENAME TO nom nouvelle table qui permet de changer le nom de la table {ADD MODIFY} [(colonne type [DEFAULT valeur] contrainte colonne,...)] [contrainte table] DROP COLUMN nom colonne qui permet d ajouter des nouvelles colonnes à la table et des nouvelles contraintes sur la tables ou de modifier le type, la valeur par défaut et les contraintes NULL d une colonne. c M. Mathieu 91

92 Les modifications de type autorisées sont celles qui augmentent ou diminuent (à condition que ce soit possible) la taille du type ou les transformations VAR- CHAR2 CHAR. Exemple 6 : ALTER TABLE EMP ARCHIVE RENAME ARCHIVE EMPLOYE ; change le nom de la table créée en exemple 5 Exemple 7 : ALTER TABLE EMPLOYE ADD (DATEE DATE DEFAULT SYSDATE NOT NULL) ; ALTER TABLE EMPLOYE MODIFY (NOM VARCHAR25(50) NOT NULL, PRENOM VARCHAR2(50)NOT NULL) ajoute une colonne à la table EMPLOYE et modifie deux autres colonnes. Exemple 8 : une solution à la question posée en exemple 4 est de faire d abord les insertions et ensuite ajouter la contrainte d intégrité référentielle : ALTER TABLE EMPLOYE ADD CONSTRAINT FK EMP2 REFERENCES EMPLOYE(IDEMP) ; c M. Mathieu 92

93 Les options : {DROP DISABLE ENABLE} {CONSTRAINT nom contrainte PRIMARY KEY UNIQUE (liste colonnes)} CASCADE ; permet de supprimer, désactiver ou activer une contrainte d intégrité sur une table. L option CASCADE est obligatoire si la contrainte est PRIMARY KEY ou UNIQUE et si elle est référencée par des contraintes FOREIGN KEY. Exemple 9 : une autre solution à la question posée en exemple 4 est de désactiver la contrainte d intégrité référentielle, de faire les insertions et ensuite de l activer. ALTER TABLE EMPLOYE DISABLE CONSTRAINT FK EMP2 ; INSERT INTO EMPLOYE... ; INSERT INTO EMPLOYE... ; ALTER TABLE EMPLOYE DISABLE CONSTRAINT FK EMP2 ; c M. Mathieu 93

94 Exemple 10 : modifier la clé primaire d une table signifie sa suppression suivie de sa seconde création et des éventuelles ré-créations des contraintes d intégrités référentielles : ALTER TABLE EMPLOYE DROP PK EMPLOYE CASCADE ; ALTER TABLE EMPLOYE ADD CONSTRAINT PK EMPLOYE PRIMARY KEY (NOM,PRENOM) ; ALTER TABLE EMPLOYE ADD CONSTRAINT CU EMPLOYE UNIQUE (IDEMP) ; ALTER TABLE EMPLOYE ADD CONSTRAINT REFERENCES EMPLOYE(IDEMP) ; FK EMP2 FOREIGN KEY (RESPONSABLE) c M. Mathieu 94

95 La suppression d une table est réalisée avec l ordre : DROP TABLE nom table CASCADE CONSTRAINTS ; avec l option CASCADE CONSTRAINTS on supprime toutes les contraintes référentielles qui font appel à cette table. Lors de l exécution de cet ordre le SGBD : supprime tous les enregistrements de la table supprime tous les indexes associés invalide les objets (synonyme, vue ou autre) qui font référence à cette table. Exemple 11 : DROP TABLE EMPLOYE CASCADE CONSTRAINTS ; c M. Mathieu 95

96 Les séquences Une séquence est un compteur qui s incrémente et qui fournit sa valeur courante afin d être utilisée comme valeur de colonne. Création : CREATE SEQUENCE nom séquence [INCREMENT BY valeur1] [START WITH valeur2] [MAXVALUE valeur3 NOMAXVALUE] [MINVALUE valeur4 NOMIN- VALUE] [CYCLE NOCYCLE] ; Modification : ALTER SEQUENCE nom séquence paramètres où les paramètres sont les mêmes que pour la création, à l exception de START WITH. Suppression : DROP SEQUENCE nom séquence ; c M. Mathieu 96

97 L usage d une séquence : séquence.curval : donne la valeur courante séquence.nextval : incrémente la séquence et retourne le résultat. Une séquence peut être utilisée par plusieurs tables. Exemple : CREATE SEQUENCE NO EMP START WITH 200 INCREMENTED BY 5 ; INSERT INTO EMPLOYE VALUES (NO EMP.NEXTVAL, DUPONT, D.,..) ; ALTER SEQUENCE NO EMP INCREMENTED BY 10) ; INSERT INTO EMPLOYE VALUES (NO EMP.NEXTVAL, DUPOND, D.,..) ; SELECT NO EMP.CURVAL FROM DUAL ; c M. Mathieu 97

98 Les vues Une vue est une table logique basée sur une ou plusieurs tables ou vues et qui n a pas d existence physique. elle est une requête SELECT elle ne stocke donc pas des données les mises à jour à partir des tables est automatique Une vue est créée pour : la confidentialité masquer la complexité des données de la base en consultation / modification c M. Mathieu 98

99 Création : CREATE [OR REPLACE] VIEW nom vue [(liste colonnes)] AS requête SELECT [WITH READ ONLY] [WITH CHECK CONTRAINT condition] ; La vue est créée à partir de la requête SELECT indiquée qui ne doit pas contenir la clause ORDER BY. Les noms des colonnes de la vue sont soit explicités avec liste colonnes, soit donnés par la requête SELECT. Suppression : DROP VIEW nom vue ; c M. Mathieu 99

100 Exemple : CREATE VIEW AFFECTATION (SALARIE, GROUPE) AS SELECT IDEMP, IDCOLL FROM EMPLOYE ; CREATE VIEW CHEFS AS SELECT DISTINCT NOM AS NOM CHEF, PRENOM AS PRENOM CHEF FROM EMPLOYE E1 WHERE EXISTS (SELECT * FROM EMPLOYE E2 WHERE E2.ID CHEF = E1.IDEMP) ; c M. Mathieu 100

101 Les index Les index sont des objets Oracle attachés à une table, créés implicitement ou explicitement dans le but d accélérer l accès à cette table. Un index se traduit par une structure de données de type table de hachage ou B-arbre. Index créés : implicitement - les clés primaires et les attributs formant une contrainte d intégrité UNIQUE explicitement avec l ordre : CREATE INDEX nom index ON nom table (liste colonnes) [options de stockage] ; c M. Mathieu 101

102 Suppression d un index : suppression de la contrainte PRIMARY KEY ou UNIQUE explicitement avec : DROP INDEX nom index Afin d obtenir vraiment une accélération du temps d accès il est souhaitable que la table ait un taille importante et que les colonnes sur lesquelles on met l index se trouvent dans la partie WHERE des requêtes accédant à cette table. Il est conseillé aussi de mettre dans la partie WHERE d une requête des conditions qui portent sur la totalité des colonnes d un index. c M. Mathieu 102

103 Exemple : Même pour une table avec 14 enregistrements l effet d un index est visible : select * from agent where datee> 01-DEC-91 ; Elapsed : 00 :00 :00.06 CREATE INDEX AGENT IDX1 ON AGENT(DATEE) ; Index created. Elapsed : 00 :00 :00.89 select * from agent where datee > 01-DEC-91 ; Elapsed : 00 :00 :00.01 c M. Mathieu 103

104 Chapitre 4 : Notions d administration de bases de données Application à Oracle 1. Synonymes et catalogues de données 2. Gestion des utilisateurs 3. Gestion des connexions à la base 4. Gestion de la mémoire 5. Création et entretien d une base c M. Mathieu 104

105 Les synonymes Un objet est désigné complétement comme : [instance base.][proprietaire.]objet[@lien connexion] l objet étant table, vue, séquence, synonyme, procédure stocké, etc. Afin d éviter cette écriture pour désigner l objet on utilise un synonyme définit avec : CREATE [PUBLIC] SYNONYM nom synonyme FOR désignation complète Le synonyme pourra être utilisé dans des ordres SELECT, UPDATE, MODIFY, DELETE, LOCK TABLE, GRANT, REVOKE. c M. Mathieu 105

106 Exemple 1 : CREATE SYNONYM market FOR scott.market research ; CREATE PUBLIC SYNONYM emp FOR scott.emp@sales ; Le premier synonyme fait référence à une table d un autre utilisateur de la même base et le deuxième à une table d une base distante. Exemple 2 : CREATE PUBLIC SYNONYM FOURNISSEUR FOR system.fournisseur; CREATE PUBLIC SYNONYM SERVICE FOR system.service; CREATE PUBLIC SYNONYM COMMANDE FOR system.commande ; CREATE PUBLIC SYNONYM AGENT FOR system.agent ; CREATE PUBLIC SYNONYM FOURNITURE FOR system.fourniture; CREATE PUBLIC SYNONYM COLLECTIVITE FOR system.collectivite; c M. Mathieu 106

107 Les catalogues des données Oracle organise des méta-informations sur les objets contenus dans la base, ces méta-informations se présentent sous forme des tables en mode lecture uniquement. Les dictionnaires de données contiennent des informations sur : les définitions de tous les objets de la base (tables, vues, séquences, procédures, etc.) l espace mémoire alloué et utilisé par chaque objet les valeurs pas défaut des colonnes les contraintes d intégrité les utilisateurs et leurs rôles et privilèges d autres informations Toutes ces informations sont la propriété de l utilisateur SYSTEM et sont gardées dans un espace mémoire à part. Elles sont mises à jour dès qu un ordre LDD est éxecuté. c M. Mathieu 107

108 Ces informations sont visibles avec les vues : USER *, ALL *, DBA *. La liste de ces vues se trouve dans la table DICTIONARY ayant deux colonnes : TABLE NAME et COMMENTS. Les vues suivantes sont accessibles par n importe quel utilisateur : ALL CATALOG ALL COL COMMENTS ALL CONS COLUMNS ALL CONSTRAINTS ALL IND COLUMNS ALL INDEXES ALL OBJECTS ALL TAB COLUMNS ALL TAB COMMENTS ALL TABLES ALL USERS ALL VIEWS Les informations sur vos propres tables créées se trouveront dans ALL TABLES et USER TABLES, ALL CONSTRAINTS, ALL INDEXES. c M. Mathieu 108

109 La gestion des utilisateurs L accès à une BD Oracle se fait en s identifiant avec un nom utilisateur et un mot de passe créés par l administrateur (DBA). Un utilisateur peut avoir des droits (privilèges) : pour créer des objets qui deviennent les siens pour utiliser des objets déjà créés La création d un utilisateur (par le DBA) : CREATE USER nom utilisateur IDENTIFIED BY mot passe [options de stockage] ; Le changement de mot de passe (par l utilisateur ou par le DBA) : ALTER USER nom utilisateur IDENTIFIED BY nouveau mot de passe ; c M. Mathieu 109

110 La suppression d un utilisateur : DROP USER nom utilisateur [CASCADE] ; L affectation et la suppression d un privilège (par le DBA ou le propriétaire de l objet) : GRANT privilège TO nom utilisateur ; REVOKE privilège TO nom utilisateur ; Les privilèges : le droit de se connecter à la base (CONNECT), de créer des objets (CREATE...), des consulter en lecture uniquement (SELECT ON objet) ou en modification des objets existants (MODIFY ON objet) (les objets doivent être désignés de manière non-ambiguë) c M. Mathieu 110

111 Exemple : DROP USER LAURENT CASCADE ; DROP USER OLIVIER CASCADE ; /* Creation des utilisateurs profs */ create user LAURENT identified by test default tablespace donneeopt temporary tablespace temp quota 3M on donneeopt ; create user OLIVIER identified by test default tablespace donneeopt temporary tablespace temp quota 3M on donneeopt ; grant connect to OLIVIER, LAURENT ; grant create session, create table, create synonym, create view, create sequence, create procedure to OLIVIER, LAURENT ; grant create trigger to OLIVIER, LAURENT ; GRANT SELECT ON system.fourniture TO OLIVIER, LAURENT ; GRANT SELECT ON system.service TO OLIVIER, LAURENT ; GRANT SELECT ON system.commande TO OLIVIER, LAURENT ; GRANT SELECT ON system.agent TO OLIVIER, LAURENT ; GRANT SELECT ON system.fournisseur TO OLIVIER, LAURENT ; GRANT SELECT ON system.collectivite TO OLIVIER, LAURENT ; c M. Mathieu 111

112 La connexion à une base (Oracle) L accès en mode client-serveur se fait selon ce schéma : Serveur Oracle Net8 base1 base2 Poste client Net8 - middleware qui s appuie sur un protocole réseau (TCP/IP). (remplace SQL*Net). c M. Mathieu 112

113 Sur le poste client il faut : installer le logiciel Net8 d Oracle le configurer afin de rendre la base accessible (via fichier TNSNAMES.ORA) installer soit des drivers JDBC pour programmer sous Java, soit un OBDC afin d accéder à la base depuis MS Acces, soit des logiciels Oracle ou de développement. Sur le serveur il faut configurer le fichier LISTNER.ORA. L emplacement des fichiers LISTNER.ORA et TNSNAMES.ORA est : $ORACLE HOME/network/admin/. c M. Mathieu 113

114 Oracle permet l accès d un utilisateur déjà connecté sur une base d accéder à une autre base Oracle (modulo le protocole réseau, la configuration, le logiciel Net8). Depuis la base courante on accède aux objets de la base distante en indiquant : [instance base.][proprietaire.]objet@lien connexion Le lien connexion comporte le nom symbolique de la base distante et se définit avec : CREATE [PUBLIC] [SHARED] DATABASE LINK lien connexion CONNECT TO nom utilisateur IDENTIFIED BY mot de passe USING nom symbolique Exemple : CREATE SHARED PUBLIC DATABASE LINK sales.hq.acme.com CONNECT TO scott IDENTIFIED BY tiger AUTHENTICATED BY anupam IDENTIFIED BY bhide USING sales ; c M. Mathieu 114

115 Oracle - fonctionnement du serveur Sous Unix un utilisateur à part pour Oracle. Tout le travail du SGBD s appuie sur le listener : > lsnrctl [start stop status] Une fois le listner lancé les instances de base se lancent avec : > set ORACLE SID=ORCL >svrmgrl connect internal/oracle startup exit > c M. Mathieu 115

116 L arrêt du serveur doit être précédé de l arrêt de toutes les instances de la base : > set ORACLE SID=ORCL >svrmgrl connect internal/oracle shutdown [immediate] exit > c M. Mathieu 116

117 Création d une base création du fichier d initialisation création de la nouvelle instance de base création des dictionnaires, tablespaces, procédures stockées... création des utilisateurs c M. Mathieu 117

118 Importer / exporter des données C est possible sous Oracle avec les exécutables imp et exp qui se trouvent dans : $ORACLE HOME/bin Pur faire ces opérations il n y a pas besoin de privilèges particuliers, à part les droits sur les objets (tables) manipulés. Ces opération sont utiles pour transférer les données d une base à une autre et aussi pour l entretien d une base. c M. Mathieu 118

119 Chapitre 5 : Introduction au PL/SQL c M. Mathieu 119

120 PL/SQL : une marque Oracle un vrai langage complémentaire à SQL un langage structuré et procédural permet la création des fonctions / procédures stockées au niveau de la base permet un accès plus fin à la base avec une gestion explicite des erreurs La structure du code : [DECLARE -- declarations] BEGIN -- instructions [EXCEPTION --traitement exceptions] END ; c M. Mathieu 120

121 Un programme PL/SQL peut être : un bloc anonyme saisis directement sous SQL*Plus un bloc anonyme créé dans un fichier.pl et exécuté depuis SQL*PLUS : SQL>@fichier.pl une fonction/procédure stockée, un package ou un trigger appelé depuis des requêtes SQL, d autre code PL/SQL ou déclenchés lors des certains événements : Exemples : CREATE FUNCTION/PROCEDURE/TRIGGER nom code... AS... c M. Mathieu 121

122 Exemples : un code PL/SQL qui ne fait rien : SQL> begin 2 null ; 3 end ; 4 / SQL>run Procedure PL/SQL terminee avec succes. ou qui fait la même chose (pas grand chose) sous forme de procédure stockée : SQL> create or replace procedure rien 2 is 3 begin 4 null ; 5 end ; 6 / Procedure creee. SQL> execute rien Procedure PL/SQL terminee avec succes. c M. Mathieu 122

123 SQL et PL/SQL Des ordres SQL sont supportés dans PL/SQL et des fonctions écrites en PL/SQL sont utilisables dans les ordres SQL. Les instructions acceptées sous PL/SQL du langage de manipulation de données (LMD) et certaines instructions de gestion de transactions, à savoir : INSERT, UPDATE, DELETE, SELECT, COMMIT, ROLLBACK, SAVEPOINT, LOCK TABLE, SET TRANSACTION READ ONLY. Les ordres du LDD ne sont pas supportés. c M. Mathieu 123

124 Exemple : DECLARE qty on hand NUMBER(5) ; BEGIN SELECT quantity INTO qty on hand FROM inventory WHERE product = TENNIS RACKET FOR UPDATE OF quantity ; IF qty on hand > 0 THEN -- check quantity UPDATE inventory SET quantity = quantity - 1 WHERE product = TENNIS RACKET ; INSERT INTO purchase record VALUES ( Tennis racket purchased, SYSDATE) ; ELSE INSERT INTO purchase record VALUES ( Out of tennis rackets, SYSDATE) ; END IF ; COMMIT ; EXCEPTION WHEN no data found THEN INSERT INTO error table VALUES ( Product Tennis Rackets not found ) ; END ; / c M. Mathieu 124

125 Déclaration de variables Types de données : BINARY INTEGER Entier NUMBER [(n,m)] CHAR [(longueur max)] Caractères long. fixe < o LONG et LONG RAW VARCHAR2 (longueur max) Caractères long. Var < o DATE BOOLEAN True,False ou Null V Prix NUMBER(4,2) := 11.5 ; Affecter des valeurs : V Prix := 15 ; V PrixUnitaire := V Prix ; c M. Mathieu 125

126 Déclaration de constantes : credit limit CONSTANT REAL := ; La lecture d une variable (dans un bloc anonyme) est faite avec &variable Déclaration de variables globales : VARIABLE type nom variable ; Une variable globale s utilise avec :nom variable. VARIABLE NUMBER(10,2) PRIX ;... BEGIN :PRIX := CALCUL(...)... END PRINT PRIX ; c M. Mathieu 126

127 Exemple : Retrouver le type d un fournisseur donné. /* usage des variables internes */ set serveroutput on DECLARE VFNom Fournisseur.FNom%TYPE; VFType Fournisseur.FType%TYPE; Resultat CHAR(80) ; BEGIN SELECT FNom, FType INTO VFNom, VFType FROM Fournisseur WHERE IdFourS = 107 ; Resultat := Fournisseur : 107 Nom : VFNom Type : VFType ; DBMS OUTPUT.PUT LINE(Resultat) ; END ; c M. / Mathieu 127

128 /* Avec des variables globales dont un prompteur */ ACCEPT PID PROMPT Numero fournisseur : VARIABLE Resultat CHAR (80) ; DECLARE VFNom Fournisseur.FNom%TYPE; VFType Fournisseur.FType%TYPE; BEGIN SELECT FNom, FType INTO VFNom, VFType FROM Fournisseur WHERE IdFourS = &PID ; :Resultat := Fournisseur : &PID Nom : VFNom Type : VFType ; END ; / print Resultat ; c M. Mathieu 128

129 L attribut %TYPE permet de définir des variables à partir : d une colonne de table NomF Agent.ANom%TYPE; d une autre variable Prix NUMBER (4,2) ; Prix Max v Prix%TYPE := 56 ; L attribut %ROWTYPE permet de déclarer une variable à partir d un ensemble de colonnes d une table (ou vue) Agent enregistrement Agent%ROWTYPE ; c M. Mathieu 129

130 Deux types de données composites table PL/SQL : record PL/SQL : similaire aux structures d enregistrement Exemple RECORD PL/SQL DECLARE TYPE Agt enreg IS RECORD ( AgtNom VARCHAR(25), AgtPrenom VARCHAR(25) ) ; Enreg Agent Agt enreg ; c M. Mathieu 130

131 Les expressions font intervenir les opérateurs connus, des constantes et des fonctions Oracle ou définies par l utilisateur à l exception de fontions d agrégat. Les structures de contrôle : structures de test : IF - THEN IF - THEN - ELSE IF - THEN - ELSIF structures itératives : LOOP et EXIT WHILE - LOOP FOR - LOOP structure de contrôle séquentiel : GOTO NULL c M. Mathieu 131

132 Exemples : IF sales > quota THEN compute bonus(empid) ; UPDATE payroll SET pay = pay + bonus WHERE empno = emp id ; END IF ; IF trans type = CR THEN UPDATE accounts SET balance = balance + credit WHERE... ELSE IF new balance >= minimum balance THEN UPDATE accounts SET balance = balance - debit WHERE... ELSE RAISE insufficient funds ; END IF ; END IF ; c M. Mathieu 132

133 WHILE total <= LOOP... SELECT sal INTO salary FROM emp WHERE... total := total + salary ; END LOOP ; FOR ctr IN LOOP IF NOT finished THEN INSERT INTO... VALUES (ctr,...) ; factor := ctr * 2 ; -- legal ELSE ctr := 10 ; -- illegal END IF ; END LOOP ; -- legal c M. Mathieu 133

134 DECLARE done BOOLEAN ; BEGIN... FOR i IN LOOP IF done THEN GOTO end loop ; END IF ;... < <end loop> > -- NULL ; END LOOP ; -- not an executable statement END ; c M. Mathieu 134

135 Curseurs curseurs implicits (SELECT) curseurs variable c M. Mathieu 135

136 Exemple : CURSOR c1 IS SELECT empno, ename, job, sal FROM emp WHERE sal > 2000 ; CURSOR c2 RETURN dept%rowtype IS SELECT * FROM dept WHERE deptno = 10 ; CURSOR c3 (start date DATE) IS SELECT empno, sal FROM emp WHERE hiredate > start date ; c M. Mathieu 136

137 Exemple : DECLARE VFourT Id Commande.FourT Id%TYPE ; VPrix Commande.Prix %TYPE ; VIdCom Commande.IdCom%TYPE; BEGIN CURSOR LCurseur1 IS SELECT IdCom, Prix FROM Commande WHERE FourT Id = &VFourT Id ;... END ; OPEN LCurseur1 ; LOOP... FETCH LCurseur1 INTO VIdCom, VPrix ; EXIT WHEN LCurseur1%ROWCOUNT>5 OR %NOTFOUND ;... END LOOP ; CLOSE LCurseur1 ; c M. Mathieu 137

138 Traitement d errreurs Liste des erreurs prédéfinies : ACCESS INTO NULL ORA CURSOR ALREADY OPEN ORA DUP VAL ON INDEX ORA INVALID CURSOR ORA INVALID NUMBER ORA LOGIN DENIED ORA NO DATA FOUND ORA NOT LOGGED ON ORA c M. Mathieu 138

139 PROGRAM ERROR ORA ROWTYPE MISMATCH ORA SELF IS NULL ORA STORAGE ERROR ORA SUBSCRIPT BEYOND COUNT ORA SUBSCRIPT OUTSIDE LIMIT ORA SYS INVALID ROWID ORA TIMEOUT ON RESOURCE ORA TOO MANY ROWS ORA VALUE ERROR ORA ZERO DIVIDE ORA c M. Mathieu 139

140 Exemple : DECLARE pe ratio NUMBER(3,1) ; BEGIN DELETE FROM stats WHERE symbol = XYZ ; SELECT price / NVL(earnings, 0) INTO pe ratio FROM stocks WHERE symbol = XYZ ; INSERT INTO stats (symbol, ratio) VALUES ( XYZ, pe ratio) ; EXCEPTION WHEN ZERO DIVIDE THEN... WHEN NOT FOUND THEN... END ; c M. Mathieu 140

141 DECLARE pe ratio NUMBER(3,1) ; BEGIN DELETE FROM stats WHERE symbol = XYZ ; BEGIN sub-block begins SELECT price / NVL(earnings, 0) INTO pe ratio FROM stocks WHERE symbol = XYZ ; EXCEPTION WHEN ZERO DIVIDE THEN pe ratio := 0 ; END ; sub-block ends INSERT INTO stats (symbol, ratio) VALUES ( XYZ, pe ratio) ; EXCEPTION WHEN OTHERS THEN... END ; c M. Mathieu 141

142 DECLARE v ename emp.ename%type ; v job emp.job%type ; BEGIN SELECT ename, job INTO v ename, v job FROM emp WHERE hiredate BETWEEN 1-JAN-92 AND 31-DEC-92 ;... EXCEPTION WHEN no data found THEN INSERT INTO error tab VALUES ( Nobody in 92 ) ; WHEN too many rows THEN INSERT INTO error tab VALUES ( More then one person in 92 ) ; END ; c M. Mathieu 142

143 Si d autres erreurs ORACLE apparaissent, PL/SQL a deux variables qui permet de récupérer l erreur : SQLCODE - le numéro de l erreur SQLERRM - le message complet DECLARE error-message CHAR (100) ; error-code NUMBER ; BEGIN... EXCEPTION WHEN OTHERS THEN error message :=SUBSTR(SQLERM,1,100); error code :=SQLCODE ; INSERT INTO errors VALUES (error message, error code) ; END ; c M. Mathieu 143

144 L utilisateur peut définir ses propres erreurs (des erreurs de traitement). Il faut préciser explicitement l exception (erreur) et lors de son apparition le code est interrompu avec : RAISE exception Exemple : DECLARE out of stock EXCEPTION ;... IF quantity on hand = 0 THEN RAISE out of stock ; END IF... EXCEPTION WHEN out of stock THEN ----traitement c M. Mathieu 144

145 Exécution dynamique des requêtes SQL Avec l instruction : EXECUTE IMMEDIATE dynamic string Exemple 1 : EXECUTE IMMEDIATE < :my comm EXECUTE IMMEDIATE DELETE FROM emp WHERE sal > :my sal AND comm DELETE FROM emp WHERE sal > :s AND comm < :c ou :my sal est substitué avec sa valeur courante c M. Mathieu 145

146 Exemple 2 : DECLARE TYPE EmpCurTyp IS REF CURSOR ; emp cv EmpCurTyp ; my ename VARCHAR2(15) ; my sal NUMBER := 1000 ; BEGIN OPEN emp cv FOR SELECT ename, sal FROM emp WHERE sal > :s USING my sal ;... END ; c M. Mathieu 146

147 Exemple 3 : CREATE PROCEDURE create dept ( deptno IN OUT NUMBER, dname IN VARCHAR2, loc IN VARCHAR2) AS BEGIN deptno := deptno seq.nextval ; INSERT INTO dept VALUES (deptno, dname, loc) ; END ; Appel de cette procedure par du code PL/SQL dynamique : DECLARE plsql block VARCHAR2(500) ; new deptno NUMBER(2) ; new dname VARCHAR2(14) := ADVERTISING ; new loc VARCHAR2(13) := NEW YORK ; BEGIN plsql block := BEGIN create dept( :a, :b, :c) ; END ; ; EXECUTE IMMEDIATE plsql block USING IN OUT new deptno, new dname, new loc ; IF new deptno > 90 THEN... END ;-- c M. Mathieu 147

148 Procédures, fonctions et triggers Sont des programmes qui contiennent du SQL et du PL/SQL qui sont gardés dans la base et exécutés sur demande explicite (procédures et fonctions) ou lors des événements précis (triggers). création : CREATE modification du code : ALTER ou REPLACE suppression : DROP c M. Mathieu 148

149 Exemple 1 : CREATE FUNCTION get bal(acc no IN NUMBER) RETURN NUMBER IS acc bal NUMBER(11,2) ; BEGIN SELECT balance INTO acc bal FROM accounts WHERE account id = acc no ; RETURN(acc bal) ; END ; Exemple 2 : CREATE OR REPLACE PROCEDURE sam.credit (acc no IN NUMBER, amount IN NUMBER) AS BEGIN UPDATE accounts SET balance = balance + amount WHERE account id = acc no ; END ; c M. Mathieu 149

150 Trigger = procédure stockée déclenchée lors de l insertion, modification ou suppression d un enregistrement dans une table ou vue bien précise. CREATE TRIGGER nom trigger [BEFORE AFTER] évenement ON table vue [FOR EACH ROW] [WHEN (condition)] code PL/SQL Exemple : CREATE TRIGGER scott.emp permit changes BEFORE DELETE OR INSERT OR UPDATE ON scott.emp pl/sql block CREATE TRIGGER scott.salary check BEFORE INSERT OR UPDATE OF sal, job ON scott.emp FOR EACH ROW WHEN (new.job <> PRESIDENT ) pl/sql block c M. Mathieu 150

151 Chapitre 6 : JAVA et Oracle c M. Mathieu 151

152 Trois façon d interfacer JAVA (le langage) et Oracle (le SGBD) : JDBC - API de Java SQLJ - produit Oracle pour une Java VM qui supporte des requêtes statiques Fonctions stockées Java (PL/SQL) CORBA et autres... c M. Mathieu 152

153 c M. Mathieu 153

154 JDBC (Java DataBase Conectivity) Oracle a créé donc des drivers (thin, oci7, oci8,...) et amélioré considérablement le standard de JAVA. Du point de vue de la programmation, les tâches s enchaînent de la manière suivante : Création d une instance d un driver JDBC Connexion à la base de données Création d un contexte de requête Soumission d une requête SQL au serveur SGBD Collecte et traitement des résultats c M. Mathieu 154

155 Packages java Nous utiliserons les classes définies dans le package java.sql DriverManager, Connection, Statement et ResultSet Les résultats (les valeurs des champs de la base) s obtiennent avec les méthodes get?? définies par l interface ResultSet. Les méthodes existent sous deux formes autorisant l accès aux données soit par le nom du champ, soit par son index dans le ResultSet : les chaînes de caractères : String getstring(int index) ; String getstring(string name) ; les entiers et les réels : int getint(int index) ; float getfloat(int index) ; int getint(string name) ; float getfloat(string name) ; les dates : Timestamp getdate(int index) ; Timestamp getdate(string name) ; c M. Mathieu 155

156 Exemple : import java.sql.* import java.math.* import java.io.* import java.awt.* class JdbcTest { public static void main (String args []) throws SQLException { // Load Oracle driver DriverManager.registerDriver (new oracle.jdbc.driver.oracledriver()); // Connect to the local database Connection conn = DriverManager.getConnection ( "jdbc :oracle :thin :@educusers :1521 :dbem", "scott", "tiger") ; c M. Mathieu 156

157 // Query the employee names Statement stmt = conn.createstatement () ; ResultSet rset = stmt.executequery ("SELECT ENAME FROM EMP") ; } } // Print the name out while (rset.next ()) System.out.println (rset.getstring (1)) ; // Close the result set, statement, and the connection rset.close() ; stmt.close() ; conn.close() ; c M. Mathieu 157

158 JDBC permet aussi des reqêtes dynamiques : import java.sql.* ; public static void projectsdue(boolean duethismonth) throws SQLException { // Get JDBC connection from previously initialized SQLJ DefaultContext. Connection conn = DefaultContext.getDefaultContext().getConnection(); String query = "SELECT name, start date + duration " + "FROM projects WHERE start date + duration >= sysdate" ; if (duethismonth) query += " AND to char(start date + duration, fmmonth ) " + " = to char(sysdate, fmmonth ) " ; c M. Mathieu 158

159 PreparedStatement pstmt = conn.preparestatement(query); ResultSet rs = pstmt.executequery(); while (rs.next()) { System.out.println("Project : " + rs.getstring(1) + " Deadline : " + rs.getdate(2)) ; } rs.close() ; pstmt.close() ; } c M. Mathieu 159

160 Les traitements par lot (batch) sous JDBC : DriverManager.registerDriver(new oracle.jdbc.driver.oracledriver()); conn = DriverManager.getConnection( "jdbc :oracle :thin :@educusers :1521 :dbem", "scott", "tiger") ; stmt = conn.createstatement(); try { stmt.execute( "create table mytest table (col1 number, col2 varchar2(20))"); } catch (Exception e1) {} // // Insert in a batch. // pstmt = conn.preparestatement("insert into mytest table values (?,?)") ; c M. Mathieu 160

161 pstmt.setint(1, 1) ; pstmt.setstring(2, "row 1") ; pstmt.addbatch(); pstmt.setint(1, 2) ; pstmt.setstring(2, "row 2") ; pstmt.addbatch(); pstmt.executebatch(); // // Select and print results. // rset = stmt.executequery("select * from mytest table") ; while (rset.next()) { } System.out.println(rset.getInt(1) + ", " + rset.getstring(2)); c M. Mathieu 161

162 SQLJ Extension de Java qui fonctionne avec les même drivers que JDBC, le code est fait pour requêtes statiques et exécution est plus rapide. >sqlj code.sqlj // produit code.java >javac code.java Exemple : void runexample() throws SQLException { System.out.println(); System.out.println( "Running the example." ) ; System.out.println(); /* Reset the database for the demo application. */ #sql { DELETE FROM SALES } ; c M. Mathieu 162

163 /* Insert a row into the cleared table. */ #sql { INSERT INTO SALES VALUES( 101, Relativistic redshift recorder, TO DATE( 22-OCT-1997, dd-mon-yyyy ), , 1, John Smith ) } ; /* Insert another row in the table using bind variables. */ int itemid = 1001 ; String itemname = "Left-handed hammer" ; double totalcost = ; Integer salesrepid = new Integer(358) ; String salesrepname = "Jouni Seppanen" ; Date datesold = new Date(97,11,6) ; #sql { INSERT INTO SALES VALUES( :itemid, :itemname, :datesold, :totalco :salesrepid, :salesrepname) } ; c M. Mathieu 163

164 in /* Instantiate and initialize the iterator. ** ** The iterator object is initialized using the result of a query. ** The query creates a new instance of the iterator and stores it ** the variable sales of type SalesRecs. SQLJ translator has ** automatically declared the iterator so that it has methods for ** accessing the rows and columns of the result set. */ SalesRecs sales ; #sql sales = { SELECT item number,item name,sales date,cost, sales rep number,sales rep name FROM sales } ; the /* Print the result using the iterator. ** ** Note how the next row is accessed using method next(), and how ** the columns can be accessed with methods that are named after ** actual database column names. */ c M. Mathieu 164

165 ) ; ) ; } while( sales.next() ) { System.out.println( "ITEM ID : " + sales.item number() ) ; System.out.println( "ITEM NAME : " + sales.item name() ) ; System.out.println( "COST : " + sales.cost() ) ; System.out.println( "SALES DATE : " + sales.sales date() ) ; System.out.println( "SALES REP ID : " + sales.sales rep number() System.out.println( "SALES REP NAME : " + sales.sales rep name() System.out.println(); } /* Close the iterator. ** ** Iterators should be closed when you no longer need them. */ sales.close() ; c M. Mathieu 165

166 Fonctions stockées Java Les fonctions Java se compilent d abord afin d obtenir des classes, ensuite ces classes sont chargées dans la base avec : loadjava -user nom/mot de passe@lien connexion nom classe.class Une définition de type CREATE FUNCTION est nécessaire en indiquant qu il s agit du code Java. L appel se fait indiquant le nom et les paramètres. Exemple 1 : soit la fonction très simple : public class Test { public static String Message(){return "Bonjour!" ;} } Elle est compilée et chargée : > javac Test.java > loadjava -user mihaela/[email protected] java.class c M. Mathieu 166

167 Sous SQL*Plus on définit la fonction et on l appelle : SQL> CREATE FUNCTION TESTJAVA RETURN VARCHAR2 2 AS LANGUAGE JAVA 3 NAME Test.Message() return java.lang.string ; 4 / Fonction créée. SQL> CALL TESTJAVA() INTO :R ; Appel terminé. SQL> PRINT :R ; R Bonjour! SQL> SELECT TESTJAVA() FROM DUAL ; TESTJAVA() Bonjour! c M. Mathieu 167

168 Exemple 2 : Soit la code java suivant : public class Fibonacci { public static int fib (int n) { if (n==1 n==2) return 1 ; else return fib(n-1) + fib(n - 2) ; } } qui est compilé et chargé dans la base avec loadjava. Au niveau de SQL*Plus : SQL> SQL> CREATE OR REPLACE FUNCTION fib (n NUMBER) RETURN NUMBER 2 AS LANGUAGE JAVA 3 NAME Fibonacci.fib(int) return int ; 4 / Fonction créée. c M. Mathieu 168

169 Son appel est préparé et effectué : SQL> VARIABLE n NUMBER SQL> VARIABLE f NUMBER SQL> EXECUTE :n := 7 ; Procédure PL/SQL terminée avec succès. SQL> CALL fib( :n) INTO :f ; Appel terminé. SQL> PRINT :f ; F c M. Mathieu 169

170 Chapitre 7 : Programmation C et Oracle c M. Mathieu 170

171 Oracle offre la possibilité d écrire des programmes en langages de haut niveau (FORTRAN, COBOL, C/C++) qui englobent des facilités pour le travail avec les bases de données. Pro*C/C++ est le précompilateur pour C/C++. Il permet de : écrire des programmes en C et C++ exécuter à l intérieur du programme n importe quel type d ordre SQL standard : création dynamique des tables : CREATE, ALTER, DROP manipulation des données : SELECT, INSERT, DELETE, UPDATE transactions : COMMIT, ROLLBACK c M. Mathieu 171

172 inclure des blocs PL/SQL traiter les erreurs convertir les types internes de données Oracle en types de données C utiliser des accès concurents précompiler dynamiquement créer et exécuter dynamiquement des ordres SQL travailler avec les objets de l utilisateur (fonction, procédures, triggers, vue, etc) travailler avec des objets de grande taille c M. Mathieu 172

173 Le schéma de construction de l exécutable : c M. Mathieu 173

174 Le précompilateur se trouve dans $ORACLE HOME/bin et transforme un programme avec extension.pc en programme.c ou.cpp. Tout source.pc doit contenir au moins : # include <sqlca.h> Cette librairie se trouve dans le répertoire $ORACLE HOME/precomp/public/. Attention!! les options de précompilation, compilation et édition des liens sont nombreuses et parfois indispensables. c M. Mathieu 174

175 c M. Mathieu 175

176 La connexion doit se faire avant tout acces à la base. La syntaxe est : EXEC SQL CONNECT { :user IDENTIFIED BY :oldpswd :usr psw } [[ AT { dbname :host variable }] USING :connect string ] [ {ALTER AUTHORIZATION :newpswd IN { SYSDBA SYSOPER } MODE} ] ; Une forme simple : EXEC SQL CONNECT :username IDENTIFIED BY :password ; ou username and password sont des variables hôte de type CHAR or VARCHAR. On utilise aussi : EXEC SQL CONNECT :usr pwd ; ou usr pwd contient toute la chaîne de connexion, le mot de passe étant séparé avec un /. c M. Mathieu 176

177 Exemple : char *username = "[email protected]"; char *password = "TIGER" ;... EXEC SQL WHENEVER SQLERROR... EXEC SQL CONNECT :username IDENTIFIED BY :password ; Plusieurs connexion simultanées à des bases de données sont possibles. c M. Mathieu 177

178 Les ordres SQL embarqués sont sous forme : EXEC SQL <ordre SQL standard> ; (une clause INTO peut apparaître pour SELECT ou FETCH). Un bloc PL/SQL embarqué est défini avec : EXEC SQL EXECUTE <bloc PL/SQL> c M. Mathieu 178

179 Les variables hôte : sont déclarées en début de programme dans un bloc compris entre : BEGIN DECLARE SECTION... END DECLARE SECTION sont utilisées pour manipuler les données sont utilisables comme des variables C. Exemple : EXEC SQL BEGIN DECLARE SECTION ; VARCHAR nom[50] ; int sal, emp no ; EXEC SQL END DECLARE SECTION ; Usage : emp no = 2000 ; EXEC SQL SELECT anom, salaire INTO :nom, :sal FROM agent WHERE id agent = :emp no ; c M. Mathieu 179

180 Usage illégal : emp no = 2000 ; strcpy(ma table, agent ) ; EXEC SQL SELECT anom, salaire INTO :nom, :sal FROM :ma table WHERE id agent = :emp no ; Dans des ordres SQL le nom des objets doit être explicite! c M. Mathieu 180

181 Un curseur identifie une ligne retournée d une table dans une requête. Les instructions : DECLARE CURSOR OPEN FETCH CLOSE permettent de déclarer, ouvrir, utiliser et fermer un curseur. Un curseur doit avoir un nom unique et être déclaré une seule fois. c M. Mathieu 181

182 Exemple : /* Declare the cursor. All static SQL explicit cursors * contain SELECT commands. salespeople is a SQL identifier, * not a (C) host variable. */ EXEC SQL DECLARE salespeople CURSOR FOR SELECT ENAME, SAL, COMM FROM EMP WHERE JOB LIKE SALES% ; /* Open the cursor. */ EXEC SQL OPEN salespeople ; /* Get ready to print results. */ printf("\n\nthe company s salespeople are--\n\n") ; printf("salesperson Salary Commission\n") ; printf(" \n") ; c M. Mathieu 182

183 /* Loop, fetching all salesperson s statistics. * Cause the program to break the loop when no more * data can be retrieved on the cursor. */ EXEC SQL WHENEVER NOT FOUND DO break ; for ( ; ;) { EXEC SQL FETCH salespeople INTO :emp rec ptr ; printf("%s %9.2f %12.2f\n", emp rec ptr->emp name, emp rec ptr->salary, emp rec ptr->commission); } /* Close the cursor. */ EXEC SQL CLOSE salespeople ; c M. Mathieu 183

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

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

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

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI [email protected]

Plus en détail

TP Contraintes - Triggers

TP Contraintes - Triggers TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution

Plus en détail

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

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

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

Bases de Données relationnelles et leurs systèmes de Gestion III.1- Définition de schémas Bases de Données relationnelles et leurs systèmes de Gestion RAPPELS Contraintes d intégrité sous Oracle Notion de vue Typage des attributs Contrainte d intégrité Intra-relation

Plus en détail

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

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

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

Le langage SQL pour Oracle - partie 1 : SQL comme LDD Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger

Plus en détail

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

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 ORACLE 10G DISTRIBUTION ET REPLICATION Distribution de données avec Oracle G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 1 Plan 12. Distribution de données 12.1 Génération des architectures C/S et Oracle

Plus en détail

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

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Bases de Données Avancées PL/SQL

Bases de Données Avancées PL/SQL 1/170 Bases de Données Avancées Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin, F-93017

Plus en détail

Devoir Data WareHouse

Devoir Data WareHouse Université Paris XIII Institut Galilée Master 2-EID BENSI Ahmed CHARIFOU Evelyne Devoir Data WareHouse Optimisation, Transformation et Mise à jour utilisées par un ETL Mr R. NEFOUSSI Année 2007-2008 FICHE

Plus en détail

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes. Les Triggers SQL Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes [email protected] 1 Sommaire Motivations Trigger Ordre Trigger Ligne Condition Trigger

Plus en détail

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

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles) SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients

Plus en détail

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

Notes de cours : bases de données distribuées et repliquées Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées

Plus en détail

Auto-évaluation Oracle: cours de base

Auto-évaluation Oracle: cours de base Auto-évaluation Oracle: cours de base Document: F0475Test.fm 14/01/2008 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION ORACLE: COURS DE

Plus en détail

Bases de données avancées

Bases de données avancées Bases de données avancées Jean-Yves Antoine LI - Université François Rabelais de Tours [email protected] UFR Sciences et Techniques IUP SIR Blois Master 1 Bases de Données avancées IUP Blois,

Plus en détail

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

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours Bilan : Des vues à PL/SQL corrigé Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Cas exemple 2 Les tables... 3 Vues et index 4 Privilèges 5 Fonctions

Plus en détail

Olivier Mondet http://unidentified-one.net

Olivier Mondet http://unidentified-one.net T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

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

Introduction au Système de Gestion de Base de Données et aux Base de Données Introduction au Système de Gestion de Base de Données et aux Base de Données Formation «Gestion des données scientifiques : stockage et consultation en utilisant des bases de données» 24 au 27 /06/08 Dernière

Plus en détail

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

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry Cours 3 Développement d une application BD 1 Plan du cours Gestion de la sécurité des données Optimisation des schémas de bases via la dénormalisation Utilisation de vues Placement du code applicatif dans

Plus en détail

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

Le langage SQL Rappels

Le langage SQL Rappels Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,

Plus en détail

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données II Objets avancés dans les bases de données OBJECTIFS 2.1. NOTIONS 2.1.1.

Plus en détail

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

Le langage SQL (première partie) c Olivier Caron Le langage SQL (première partie) 1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes 2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)

Plus en détail

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Cours Base de données relationnelles. M. Boughanem, IUP STRI Cours Base de données relationnelles 1 Plan 1. Notions de base 2. Modèle relationnel 3. SQL 2 Notions de base (1) Définition intuitive : une base de données est un ensemble d informations, (fichiers),

Plus en détail

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Partie 0 : Gestion des tablespace et des utilisateurs... 3 Sommaire Partie 0 : Gestion des tablespace et des utilisateurs... 3 1- Créer deux TableSpaces votre_nom-tbs et Votre_nom-TempTBS :... 3 2. Créer un utilisateur qui porte votre nom :... 3 3. Attribuer à

Plus en détail

Bases de données et sites WEB

Bases de données et sites WEB Bases de données et sites WEB Cours2 : Sécurité et contrôles d accès Anne Doucet 1 Authentification Autorisation Privilèges Rôles Profils Limitations de ressources Plan Audit Contrôle d accès via les vues

Plus en détail

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

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation Base de données S. Lèbre [email protected] Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :

Plus en détail

Gestion des utilisateurs et de leurs droits

Gestion des utilisateurs et de leurs droits Gestion des utilisateurs et de leurs droits Chap. 12, page 323 à 360 Lors de la création d'un utilisateur vous devez indiquer son nom, ses attributs, son profil, la méthode d'authentification (par le SE

Plus en détail

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste Christian Soutou Avec la participation d Olivier Teste SQL pour Oracle 4 e édition Groupe eyrolles, 2004, 2005, 2008, 2010, is BN : 978-2-212-12794-2 Partie III SQL avancé La table suivante organisée en

Plus en détail

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

//////////////////////////////////////////////////////////////////// Administration bases de données ////////////////////// Administration bases de données / INTRODUCTION Système d informations Un système d'information (SI) est un ensemble organisé de ressources (matériels, logiciels, personnel, données

Plus en détail

SQL Historique 1982 1986 1992

SQL Historique 1982 1986 1992 SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse

Plus en détail

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES Dossier G11 - Interroger une base de données La base de données Facturation contient tout un ensemble d'informations concernant la facturation de la SAFPB (société anonyme de fabrication de produits de

Plus en détail

Cours Bases de données

Cours Bases de données Informations sur le cours Cours Bases de données 9 (10) séances de 3h Polycopié (Cours + TD/TP) 3 année (MISI) Antoine Cornuéjols www.lri.fr/~antoine [email protected] Transparents Disponibles

Plus en détail

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

Présentation du module Base de données spatio-temporelles Présentation du module Base de données spatio-temporelles S. Lèbre [email protected] Université de Strasbourg, département d informatique. Partie 1 : Notion de bases de données (12,5h ) Enjeux et principes

Plus en détail

Intégrité des données

Intégrité des données . Contraintes d intégrité : Définition et objectif Intégrité des données Définition des contraintes Vérification des contraintes Contrainte d'intégrité : propriété sémantique que doivent respecter les

Plus en détail

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

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 Plan Bases de Données L3 Info Céline Rouveirol 2010-2011 Bases de Données 1 / 77 Sources des transparents Bases de Données 2 / 77 Bases de SQL - M.P. Dorville/F. Goasdoué, LRI, Université Paris Sud - V.

Plus en détail

Optimisation SQL. Quelques règles de bases

Optimisation SQL. Quelques règles de bases Optimisation SQL Quelques règles de bases Optimisation des ordres SQL Page 2 1. QUELQUES RÈGLES DE BASE POUR DES ORDRES SQL OPTIMISÉS...3 1.1 INTRODUCTION...3 1.2 L OPTIMISEUR ORACLE...3 1.3 OPTIMISEUR

Plus en détail

16H Cours / 18H TD / 20H TP

16H Cours / 18H TD / 20H TP INTRODUCTION AUX BASES DE DONNEES 16H Cours / 18H TD / 20H TP 1. INTRODUCTION Des Fichiers aux Bases de Données 2. SYSTEME DE GESTION DE BASE DE DONNEES 2.1. INTRODUCTION AUX SYSTEMES DE GESTION DE BASES

Plus en détail

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

Pour les débutants. langage de définition des données Pour les débutants SQL : langage de définition des données Les bases de données sont très utilisées dans les applications Web. La création, l interrogation et la manipulation des données de la base sont

Plus en détail

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

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

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

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ; RÈGLES A SUIVRE POUR OPTIMISER LES REQUÊTES SQL Le but de ce rapport est d énumérer quelques règles pratiques à appliquer dans l élaboration des requêtes. Il permettra de comprendre pourquoi certaines

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K. Université des sciences et de la Technologie Houari Boumediene USTHB Alger Département d Informatique CHAPITRE 4 ADMINISTRATION ET TUNING DE BASES DE DONNÉES RESPONSABLE DR K. BOUKHALFA POLITIQUES DE CONTRÔLES

Plus en détail

CHAPITRE 1 ARCHITECTURE

CHAPITRE 1 ARCHITECTURE 07/04/2014 Université des sciences et de la Technologie Houari Boumediene USTHB Alger Département d Informatique ADMINISTRATION ET TUNING DE BASES DE DONNÉES CHAPITRE 1 ARCHITECTURE RESPONSABLE DR K. BOUKHALFA

Plus en détail

Les bases de données

Les bases de données Les bases de données Introduction aux fonctions de tableur et logiciels ou langages spécialisés (MS-Access, Base, SQL ) Yves Roggeman Boulevard du Triomphe CP 212 B-1050 Bruxelles (Belgium) Idée intuitive

Plus en détail

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

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW Groupe : 322 Exploitation des Banques de données 420-PK6-SL (1-2-1) Étape : 3 Professeur Nom: Marcel Aubin Courriel : [email protected]

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

Structure fonctionnelle d un SGBD

Structure fonctionnelle d un SGBD Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert

Plus en détail

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

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées ANNEE 2014 / 2015 Désignation de l enseignement : Bases de données Nom du document : TP SQL sous PostgreSQL Rédacteur :

Plus en détail

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

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble. Gaëlle PERRIN SID2 Grenoble Le 10/04/2014 Base de Données (BD) : une grande quantité de données, centralisées ou non, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables

Plus en détail

MySQL / SQL EXEMPLES

MySQL / SQL EXEMPLES MySQL_exemples_janv04_mpT EXEMPLES 1 MySQL / SQL EXEMPLES Typologie du langage Il est possible d'inclure des requêtes SQL dans un programme écrit dans un autre langage (en langage C par exemple), ainsi

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans [email protected] A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

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

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

Bases de données et sites WEB Licence d informatique LI345

Bases de données et sites WEB Licence d informatique LI345 Bases de données et sites WEB Licence d informatique LI345 Anne Doucet [email protected] http://www-bd.lip6.fr/ens/li345-2013/index.php/lescours 1 Contenu Transactions en pratique Modèle relationnel-objet

Plus en détail

Présentation du PL/SQL

Présentation du PL/SQL I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur

Plus en détail

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

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

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

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 Exemple accessible via une interface Web Une base de données consultable en ligne : Bases de données et systèmes de gestion de bases de données The Trans-atlantic slave trade database: http://www.slavevoyages.org/tast/index.faces

Plus en détail

Introduction aux SGBDR

Introduction aux SGBDR 1 Introduction aux SGBDR Pour optimiser une base Oracle, il est important d avoir une idée de la manière dont elle fonctionne. La connaissance des éléments sous-jacents à son fonctionnement permet de mieux

Plus en détail

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007 Bases de Données Réparties Concepts et Techniques Matthieu Exbrayat ULP Strasbourg - Décembre 2007 1 Définition Une base de données répartie (distribuée) est une base de données logique dont les données

Plus en détail

Master Exploration Informatique des données DataWareHouse

Master Exploration Informatique des données DataWareHouse Master Exploration Informatique des données DataWareHouse Binôme Ahmed BENSI Enseignant tahar ARIB SOMMAIRE I. Conception...1 1. Contexte des contrats...1 2. Contexte des factures...1 II. Modèle physique...2

Plus en détail

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

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 12 : Concurrence d accès Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Accès concurrents Définitions Verrous Collisions Niveaux de cohérence Blocage

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans [email protected] A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

TP11 - Administration/Tuning

TP11 - Administration/Tuning TP11 - Administration/Tuning MIAGE #3-2006/2007 January 9, 2007 1 Architecture physique d une base Oracle 1.1 La structure physique Une base de données Oracle est composé de fichiers (au sens du système

Plus en détail

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications P.-A. Sunier, HEG-Arc Neuchâtel avec le concours de J. Greub [email protected] http://lgl.isnetne.ch/

Plus en détail

1/ Présentation de SQL Server :

1/ Présentation de SQL Server : Chapitre II I Vue d ensemble de Microsoft SQL Server Chapitre I : Vue d ensemble de Microsoft SQL Server Module: SQL server Semestre 3 Année: 2010/2011 Sommaire 1/ Présentation de SQL Server 2/ Architerture

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL

ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL Jean-Marie Pécatte [email protected] 16 novembre 2006 ISIS - Jean-Marie PECATTE 1 Valeur de clé

Plus en détail

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Un modèle de données définit un mode de représentation de l information selon trois composantes : 1. Des structures de données. 2. Des contraintes qui permettent

Plus en détail

Du 10 Fév. au 14 Mars 2014

Du 10 Fév. au 14 Mars 2014 Interconnexion des Sites - Design et Implémentation des Réseaux informatiques - Sécurité et Audit des systèmes - IT CATALOGUE DE FORMATION SIS 2014 1 FORMATION ORACLE 10G 11G 10 FEV 2014 DOUALA CAMEROUN

Plus en détail

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN Département Informatique Laboratoires de bases de données Laboratoire n 6 Programmation SQL par Danièle BAYERS et Louis SWINNEN Ce document est disponible sous licence Creative Commons indiquant qu il

Plus en détail

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

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 13 : Organisation d une base de données, ou comment soulever (un peu) le voile Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Les clusters de table

Plus en détail

Quelques aspects du Relationnel-Objet du SGBD Oracle

Quelques aspects du Relationnel-Objet du SGBD Oracle Département informatique de l IUT (de l université) de Bordeaux Cours de Bases de Données : présentation partielle d un SGBD RO 12 août 2015 Olivier Guibert Quelques aspects du Relationnel-Objet du SGBD

Plus en détail

Vincent Augusto 2010-2011

Vincent Augusto 2010-2011 le des Systèmes Vincent Augusto École Nationale Supérieure des Mines de Saint-Étienne 2010-2011 Un 1/73 le des Un 2/73 1 2 3 4 le 5 6 7 8 Un le des Un 3/73 Contenu du cours : Techniques pour l analyse

Plus en détail

Bases de données cours 1

Bases de données cours 1 Bases de données cours 1 Introduction Catalin Dima Objectifs du cours Modèle relationnel et logique des bases de données. Langage SQL. Conception de bases de données. SQL et PHP. Cours essentiel pour votre

Plus en détail

SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0

SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0 2013 SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0 Table des matières Signalétique... 2 1 Les bases du SQL... 3 2 SQL server... 6 2 Références des exercices...21 DEHECQ Olivier

Plus en détail

Partie II Cours 3 (suite) : Sécurité de bases de données

Partie II Cours 3 (suite) : Sécurité de bases de données Partie II Cours 3 (suite) : Sécurité de bases de données ESIL Université de la méditerranée [email protected] http://odile.papini.perso.esil.univmed.fr/sources/ssi.html Plan du cours 1 Introduction

Plus en détail

Bases de Données Avancées

Bases de Données Avancées 1/62 Bases de Données Avancées Introduction & Rappel Conception et Modélisation Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR

Plus en détail

Corrigés détaillés des exercices

Corrigés détaillés des exercices Corrigés détaillés des exercices Diagramme des tables objet La figure suivante vous aidera dans la compréhension des manipulations des objets de la base. Client_type Client num nom adresse {telephone_vry}

Plus en détail

Bases de Données Réparties

Bases de Données Réparties Bases de Données Réparties Architecture Mise en œuvre Duplication et Réplication Michel Tuffery BDR : Définition Ensemble de bases de données gérées par des sites différents et apparaissant à l utilisateur

Plus en détail

Gestion de base de données

Gestion de base de données Université Libre de Bruxelles Faculté de Philosophie et Lettres Département des Sciences de l Information et de la Communication Gestion de base de données Projet : Take Off ASBL Cours de M. A. Clève STIC-B-505

Plus en détail

Bases de données élémentaires Maude Manouvrier

Bases de données élémentaires Maude Manouvrier Licence MI2E- 1ère année Outils en Informatique Bases de données élémentaires Maude Manouvrier Définitions générales et positionnement du cours dans la formation Vocabulaire relatif aux bases de données

Plus en détail

LE LANGAGE SQL2 1. INTRODUCTION

LE LANGAGE SQL2 1. INTRODUCTION LE LANGAGE SQL2 1. INTRODUCTION Les serveurs de données relationnels présentent aujourd hui une interface externe sous forme d un langage de recherche et mise à jour, permettant de spécifier les ensembles

Plus en détail

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

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013 NFA 008 Introduction à NoSQL et MongoDB 25/05/2013 1 NoSQL, c'est à dire? Les bases de données NoSQL restent des bases de données mais on met l'accent sur L'aspect NON-relationnel L'architecture distribuée

Plus en détail

TP Bases de données réparties

TP Bases de données réparties page 1 TP Bases de données réparties requêtes réparties Version corrigée Auteur : Hubert Naacke, révision 5 mars 2003 Mots-clés: bases de données réparties, fragmentation, schéma de placement, lien, jointure

Plus en détail

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing Présentation d Oracle 10g Chapitre VII Présentation d ORACLE 10g 7.1 Nouvelles fonctionnalités 7.2 Architecture d Oracle 10g 7.3 Outils annexes 7.4 Conclusions 7.1 Nouvelles fonctionnalités Gestion des

Plus en détail

Introduction aux Bases de Données 2004/2005

Introduction aux Bases de Données 2004/2005 Introduction aux Bases de Données 2004/2005 Chapitre 6: Le langage SQL Ecole Nationale Supérieur de Physique de Strasbourg Christian Wolf [email protected] 6.1 Stockage physique Film numfil

Plus en détail

Les bases de données Page 1 / 8

Les bases de données Page 1 / 8 Les bases de données Page 1 / 8 Sommaire 1 Définitions... 1 2 Historique... 2 2.1 L'organisation en fichier... 2 2.2 L'apparition des SGBD... 2 2.3 Les SGBD relationnels... 3 2.4 Les bases de données objet...

Plus en détail

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

Intégrité sémantique dans les bases de données relationnelles Intégrité sémantique dans les bases de données relationnelles 1 - Intégrité sémantique Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU Ecole Polytechnique Universitaire de Marseille Fev. 2013

Plus en détail

Information utiles. [email protected]. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/ Systèmes de gestion de bases de données Introduction Université d Evry Val d Essonne, IBISC utiles email : [email protected] webpage : http://www.ibisc.univ-evry.fr/ digiusto/ Google+ : https://plus.google.com/u/0/b/103572780965897723237/

Plus en détail

Configurer la supervision pour une base MS SQL Server Viadéis Services

Configurer la supervision pour une base MS SQL Server Viadéis Services Configurer la supervision pour une base MS SQL Server Référence : 11588 Version N : 2.2 : Créé par : Téléphone : 0811 656 002 Sommaire 1. Création utilisateur MS SQL Server... 3 2. Configuration de l accès

Plus en détail

TP3 : Creation de tables 1 seance

TP3 : Creation de tables 1 seance Universite de Versailles IUT de Velizy - Algorithmique 2005/2006 TP3 : Creation de tables 1 seance Objectif : Creation et modication de tables dans une base de donnees. Avant de commencer ce TP, terminer

Plus en détail

I. MySQL : Serveur et SGBD

I. MySQL : Serveur et SGBD Le Système de Gestion de Base de Données MySQL I. MySQL : Serveur et SGBD Menu I. MySQL : Serveur et SGBG II. Création d'une base de données avec MySQL MySQL est un système de gestion et conception de

Plus en détail