Module : SGBD1
Description
Ce module de comptence ncessite comme pr requis l'enseignement du module "Conception et modlisation d'un systme d'information", et constitue un pralable pour l'enseignement des modules : "Systme de gestion de bases de donnes II", "Programmation Client/Serveur ", "Programmation de sites web dynamiques". Permet au stagiaire de manipuler une base de donnes en utilisant le langage SQL.
ESSARRAJ Fouad
Plan
Introduction
Chapitre 1 : Langage de requte SQL. Chapitre 2 : SGBDR. Chapitre 3 : Commandes de description de donnes . Chapitre 4 : Commandes de manipulation des donnes . Chapitre 5 : Transactions. Chapitre 6 : Squences, vues et indexes. Chapitre 7 : Scurit des donnes. Chapitre 8 : Dictionnaire de donnes.
ESSARRAJ Fouad
0
Introduction
ESSARRAJ Fouad
Modle de donnes
Le modle de donnes relationnel repose sur une thorie rigoureuse bien quadoptant des principes simples.
La table relationnelle (relational table) est la structure de donnes de base qui contient des enregistrements, galement appels lignes (rows). Une table est compose de colonnes (columns) qui dcrivent les enregistrements.
Les cls
La cl primaire (primary key) dune table est lensemble minimal de colonnes qui permet didentifier de manire unique chaque enregistrement.
Une cl est dite candidate (candidate key) si elle peut se substituer la cl primaire tout instant. Une table peut contenir plusieurs cls candidates ou aucune. Une cl trangre (foreign key) rfrence dans la majorit des cas une cl primaire dune autre table (sinon une cl candidate sur laquelle un index unique aura t dfini). Une cl trangre est compose dune ou plusieurs colonnes. Une table peut contenir plusieurs cls trangres ou aucune.
ESSARRAJ Fouad
Notion de schma
Un schma est un ensemble comprenant des structures de donnes et des donnes. Il appartient un utilisateur de la base et porte le nom de ce dernier. Chaque utilisateur possde ainsi son propre schma. Leurs lments (objects) sont crs et modifis par des ordres SQL.
La figure illustre deux utilisateurs travaillant sur leur schma (stock dans un espace de la base) par une interface qui peut tre SQL*Plus ou un langage de programmation.
1
SGBDR
Exploiter lenvironnement du SGBDR pour interroger une base de donnes.
ESSARRAJ Fouad
Dfinition
- Stockage persistant sur disque - Trs gros volumes de donnes - Langage de requtes et langages de programmation SGBD - Contexte multi-utilisateurs
Une Base de Donnes (BD) est un ensemble de donnes mmorises sur des supports accessibles par un ordinateur pour satisfaire simultanment plusieurs utilisateurs de faon slective et en un temps trs court.
10
SGBD
Outil dexploitation dune BD : SGBD (Systme de Gestion de Base de Donnes) Grer linsertion, la modification et la recherche efficace de donnes dans une grande masse dinformations Grer linterface entre les utilisateurs et le support sur lequel est stocke la BD (chacun doit avoir lillusion quil est le seul exploiter la BD)
11
12
garantie la non-redondance minimise la perte de place facilite les mises jour des donnes
13
un salaire doit tre compris entre 4000 et 10 000 DH lemprunteur dun livre doit tre un abonn de la bibliothque
Partageabilit des donnes: un SGBD permet plusieurs personnes daccder simultanment aux donnes tout en offrant lillusion dtre seul exploitant Scurit des donnes: un SGBD permet de grer diffrents niveaux daccessibilit aux donnes en fonction de profils dutilisateurs
14
Indpendance physique
Indpendance entre les structures de stockage et les structures de donnes Pouvoir modifier l'organisation physique sans modifier les programmes dapplication Exemple: ajouter un index
15
Indpendance logique
Pouvoir modifier le schma conceptuel sans modifier les programmes dapplication Exemple : ajouter un attribut
16
Domaines dapplication
Comme lment central :
Banques de donnes (professionnelles, grand public) Systmes transactionnels (banques, assurances,) Systmes daide la dcision (tableaux de bord, analyse statistique,)
Comme lment essentiel :
Systmes dinformation et de communication (entreprise, administration,) Systmes de surveillance et de contrle (tlcoms, production,)
Comme lment auxiliaire :
17
Modles BD
18
Modle Entit/Association
Modles BD
0,1
Sinscrire note
3,n
0,n
datePret
0,1
1,1
19
Modles BD
Inconvnients Smantique riche Uniquement un modle Extension aux concepts objets (hritage, ...) de description de Aspect visuel donnes Modle de conception de BD Pas de langage de manipulation associ Pas de SGBD E/A Pas un modle dimplantation de BD
20
Modle hirarchique
Modles BD
Systme IMS dIBM conu la fin des annes 60 pour le programme Appolo (NASA) Exemple
lve
UV
Livre
UV
Chambre
Elve
21
Modles BD
BD
Collection denregistrements relis par des pointeurs
Langage de manipulation
Navigationnel et procdural Utilisation de pointeurs (Exemple du langage DL/1 du systme IMS)
Problmes :
Pas dindpendance logique/physique Redondance des donnes, risques dincohrence
22
Modle rseau
Modles BD
Modle dfini par le groupe DBTG du comit CODASYL en 1971 (revu en 1978) Exemple
lve
UV
Livre
Chambre
Inscrit
23
Modles BD
24
Modle relationnel
[CODD 70] A Relational Model for Large Shared Data Banks Exemple
Modles BD
lve(num, nom, adresse, age) UV(code, nbH, coord) Inscrit(numElve, codeUV, note) Livre(cte, titre, numElve, datePrt) Chambre(no, prix, numElve)
25
Modles BD
ELEVE UV CODE NBH COORD INSCRIT CODE NUM NOTE NUM NO NOM AGE ADRESSE
26
Modles BD
Structure de relation
BD
SQL/DS et DB2 dIBM (1982), Oracle (1983), Ingres (1983), Informix (1981), Sybase (1984), SqlServer (1998) MySQL (1995) Access
27
Modles BD
Indpendance logique/physique Langage de manipulation simple Bas sur une thorie mathmatique solide Standard
28
Les 4 types de BD
BD Hirarchiques: les plus anciennes fondes sur une modlisation arborescente des donnes BD Relationnelles: organisation des donnes sous forme de table et exploitation laide dun langage dclaratif
29
Simplifier et faciliter laccs aux donnes de la base Assurer une grande scurit du systme d'information
Moyens :
En offrant une vision de haut niveau des donnes, via un modle logique des donnes En se chargeant de faire la correspondance avec la vision de bas niveau des donnes (structures de stockage et mthodes daccs)
30
SGBD : Fonctionnalits
Langage de dfinition et de manipulation des donnes (LDD + LMD) Gestion de lintgrit dfinition des CI, Trigger Gestion de la persistance Structures de stockage et mthodes daccs cluster, index Gestion de la concurrence (transaction, verrouillage) Gestion de la scurit de fonctionnement transaction, journaux, mcanisme de reprise sur panne Gestion des droits identification, attribution de droits Optimisation algorithme, statistiques Interface avec les langages de programmation
Gestion de versions Gestion de la rpartition Gestion dobjets complexes (image, document, ...) Gestion de connaissances, rgles de dduction Environnement de dveloppement (AGL)
31
Utilisateur terminal
Manipulation de la BD
Traducteur LMD
Mtabase
BD
32
Systme de gestion de fichiers: gestion du stockage physique de linformation (couche dpendante du matriel) SGBD interne: gestion logique des donnes (assemblage, placement, liens et accs) SGBD externe: gestion de linterface avec lutilisateur et le concepteur (langage de requtes, outils de prsentation)
33
SGBD : LDD
Dfinition logique des donnes
Schma conceptuel global Schmas des vues utilisateur Structure des donnes et liens entre les donnes
34
SGBD : LMD
Objectif Style procdural
Interroger et mettre jour les donnes (extraire, ajouter, supprimer, modifier ) Exprimer la squence des oprations daccs aux donnes pour obtenir le rsultat Modle hirarchique et rseau Langage navigationnel Norme CODASYL 71, 78 pour modle rseau Dpendant du niveau physique Intgration dans un LPG (Cobol pour modle rseau) Exprimer linformation souhaite sans dire la faon dont on accde linformation Modle relationnel Langage ensembliste Indpendant du niveau physique Norme SQL 86, 89, 92 SQL seul et SQL intgr dans un LPG classique
Style dclaratif
35
Contexte de travail : niveau conceptuel Construction du schma conceptuel avec un modle de donnes
Administrateur BD
Contexte de travail : les 3 niveaux. Dfinit et mj les schmas logiques Dfinit les CI + Vues + droits daccs Dfinit les schmas physiques (structures de stockage + stratgies daccs) Utilise le LDD et DD
36
Contexte de travail : niveau externe et conceptuel Utilise le LMD + LPG crit des programmes pour interroger, mettre jour et traiter les donnes Connat les schmas logiques et physiques
Utilisateur terminal
Contexte de travail : niveau externe Averti : interroge la BD en utilisant un LMD Naf : utilise les programmes dapplication
37
Reprsentation informationnelle de lorganisation tudie Phase supporte par des mthodes danalyse: AXIAL, OMT ou MERISE (la plus connue qui spare les donnes des traitements)
Implantation logique de la BD
Transformation du modle conceptuel des donnes en objets propres au type de SGBD utilis
Implantation physique de la BD: phase totalement prise en charge par le SGBD adopt
38
Terminologie BD
Donnes Modle de donnes Schma dune BD Instance dune BD Contraintes dintgrit Mtabase
Terminologie BD
39
Terminologie BD : Donnes
Une structure
Terminologie BD
Responsable de la cration dune donne Dfinit les rgles pour son identification et son intgrit:
La temprature de lair est comprise entre -30 et +40C Le salaire de lanne n est suprieur au salaire de lanne n-1
40
Terminologie BD
Les donnes du monde rel Les liens entre les donnes La smantique des donnes
41
Instance (extension) :
Collection de donnes de la base crite selon un certain modle Instance du schma Dynamique
42
A
Construction d'une base de donnes
ESSARRAJ Fouad
43
B
criture et excution des requtes SQL.
ESSARRAJ Fouad
44
C
Correction des erreurs.
ESSARRAJ Fouad
45
2
Dfinition des donnes
Ce chapitre dcrit les instructions SQL qui constituent laspect LDD (langage de dfinition des donnes) de SQL. cet effet, nous verrons notamment comment dclarer une table, ses ventuels contraintes et index.
ESSARRAJ Fouad
46
A
Formalisme dune requte de description de donnes pour utiliser CREATE TABLE
ESSARRAJ Fouad
47
Premier exemple
Instruction SQL
CREATE TABLE fouad.Compagnie( comp CHAR(4), nrue NUMBER(3), rue CHAR(20), ville CHAR(15) DEFAULT Tanger', nomComp CHAR(15) NOT NULL);
La table contient cinq colonnes (quatre chanes de caractres et une valeur numrique de trois chiffres). La table inclut en plus deux contraintes : DEFAULT qui fixe Tanger comme valeur par dfaut de la colonne ville ; NOT NULL qui impose une valeur non nulle dans la colonne nomComp.
ESSARRAJ Fouad
48
Schma : il sera assimil au nom de lutilisateur connect. NomTable : peut comporter des lettres majuscules ou minuscules (accentues ou pas), des chiffres et les symboles, par exemple : _, $ et #. Oracle est insensible la casse et convertira au niveau du dictionnaire de donnes les noms de tables et de colonnes en majuscules. La directive DEFAULT fixe une valeur par dfaut. La directive NOT NULL interdit que la valeur de la colonne soit nulle. Le ; : symbole qui termine une instruction SQL dOracle
ESSARRAJ Fouad
49
NULL reprsente une valeur quon peut considrer comme non disponible, non affecte, inconnue ou inapplicable. Elle est diffrente dun espace pour un caractre ou dun zro pour un nombre.
ESSARRAJ Fouad
50
Casse et commentaires
il est possible dinclure des commentaires (sur une ligne prcde de deux tirets --, sur plusieurs lignes entre /* et */). la casse na pas dimportance au niveau des mots-cls de SQL, des noms de tables, colonnes, index, etc.
ESSARRAJ Fouad
51
52
53
Valeurs numriques
Le type NUMBER sert stocker des entiers positifs ou ngatifs, des rels virgule fixe ou flottante. La plage de valeurs possibles va de
54
56
57
B
Formalisme dune requte de description de donnes pour dfinir des contraintes dintgrit au niveau colonne et table :
- Cl primaire, - Unique, - Contrainte dintgrit rfrentielle, - Contrainte de domaine (CHECK) ;
ESSARRAJ Fouad
58
Contraintes
Les contraintes ont pour but de programmer des rgles de gestion au niveau des colonnes des tables. Ils peuvent tre dclares de deux manires : - En mme temps que la colonne (valable pour les contraintes mono colonnes), ces contraintes sont dites en ligne (inline constraints). - Contraintes nommes : Une fois la colonne dclare, ces contraintes ne sont pas limites une colonne et peuvent tre personnalises par un nom (out-of-line constraints). Oracle recommande de dclarer les contraintes NOT NULL en ligne, les autres peuvent tre dclares soit en ligne, soit nommes.
59
Contraintes
Quatre types de contraintes sont possibles :
CONSTRAINT nomContrainte UNIQUE (colonne1 [,colonne2]) PRIMARY KEY (colonne1 [,colonne2]) FOREIGN KEY (colonne1 [,colonne2]) REFERENCES [schma.]nomTablePere (colonne1 [,colonne2]) [ON DELETE { CASCADE | SET NULL }] CHECK (condition)
Il nest pas recommand de dfinir des contraintes sans les nommer (bien que cela soit possible), car il sera difficile de faire voluer les contraintes dclares (dsactivation, ractivation, suppression) et la lisibilit des programmes en sera affecte. Si vous ne nommez pas une contrainte, un nom est automatiquement gnr sous la forme suivante : SYS_Cnnnnnn (n entier).
60
UNIQUE
La contrainte UNIQUE impose une valeur distincte au niveau de la table (les valeurs nulles font exception moins que NOT NULL soit aussi applique sur les colonnes).
61
PRIMARY KEY
La contrainte PRIMARY KEY dclare la cl primaire de la table. Un index est gnr automatiquement sur la ou les colonnes concernes. Les colonnes cls primaires ne peuvent tre ni nulles ni identiques (en totalit si elles sont composes de plusieurs colonnes).
62
FOREIGN KEY
La contrainte FOREIGN KEY dclare une cl trangre entre une table enfant (child) et une table pre (parent). Ces contraintes dfinissent lintgrit rfrentielle que nous aborderons La directive ON DELETE dispose de deux options : CASCADE propagera la suppression de tous les enregistrements fils rattachs lenregistrement pre supprim, SET NULL positionnera seulement leur cl trangre NULL.
63
CHECK
La contrainte CHECK impose un domaine de valeurs ou une condition simple ou complexe entre colonnes exemple : CHECK (note BETWEEN 0 AND 20), CHECK (grade='Copilote' OR grade='Commandant')).
64
Conventions recommandes
Adoptez les conventions dcriture suivantes pour vos contraintes : Prfixez par pk_ le nom dune contrainte cl primaire, fk_ une cl trangre, ck_ une vrification,un_ une unicit. Pour une contrainte cl primaire, suffixez du nom de la table la contrainte (exemple pk_Pilote). Pour une contrainte cl trangre, renseignez (ou abrgez) les noms de la table source, de la cl, et de la table cible (exemple fk_Pil_compa_Comp).
65
Exemple
CREATE TABLE Pilote( brevet CHAR(6), nom CHAR(15), nbHVol NUMBER(7,2), compa CHAR(4), CONSTRAINT pk_Pilote PRIMARY KEY(brevet), CONSTRAINT nn_nom CHECK (nom IS NOT NULL), CONSTRAINT ck_nbHVol CHECK (nbHVol BETWEEN 0 AND 20000), CONSTRAINT un_nom UNIQUE (nom), CONSTRAINT fk_Pil_compa_Comp FOREIGN KEY (compa) REFERENCES Compagnie(comp) ); CREATE TABLE Compagnie( comp CHAR(4), nrue NUMBER(3), rue CHAR(20), ville CHAR(15) DEFAULT Tanger', nomComp CHAR(15) NOT NULL, CONSTRAINT pk_Compagnie PRIMARY KEY(comp) );
66
Remarques
- Lordre nest pas important dans la dclaration des contraintes nommes. - Une contrainte NOT NULL doit tre dclare dans un CHECK si elle est nomme. - PRIMARY KEY quivaut : UNIQUE + NOT NULL + index. - Lordre de cration des tables est important quand on dfinit les contraintes en mme temps que les tables - Il faut crer dabord les tables pres puis les tables fils . Le script de destruction des tables suit le raisonnement inverse.
67
Intgrit rfrentielle
La contrainte rfrentielle concerne toujours deux tables une table pre aussi dite matre (parent/referenced) et une table fils (child/dependent) possdant une ou plusieurs colonnes en commun. Pour la table pre , ces colonnes composent la cl primaire (ou candidate avec un index unique). Pour la table fils , ces colonnes composent une cl trangre.
68
69
Intgrit rfrentielle
70
Contraintes ct pre
La table pre contient soit une contrainte de cl primaire soit une contrainte de cl candidate qui sexprime par un index unique. Le tableau suivant illustre ces deux possibilits dans le cas de la table Compagnie. Notons que la table possdant une cl candidate aurait pu aussi contenir une cl primaire.
71
Contraintes ct fils
Indpendamment de lcriture de la table pre , deux critures sont possibles au niveau de la table fils . La premire dfinit la contrainte en mme temps que la colonne. Ainsi elle ne convient quaux cls composes dune seule colonne. La deuxime criture dtermine la contrainte aprs la dfinition de la colonne. Cette criture est prfrable car elle convient aussi aux cls composes de plusieurs colonnes de par sa lisibilit.
72
73
Exercice 1
Une entreprise dsire grer son parc informatique laide dune base de donnes. Le btiment est compos de trois tages. Chaque tage possde son rseau (ou segment distinct) Ethernet. Ces rseaux traversent des salles quipes de postes de travail. Un poste de travail est une machine sur laquelle sont installs certains logiciels. Quatre catgories de postes de travail sont recenses (stations Unix, terminaux X, PC Windows et PC NT). La base de donnes devra aussi dcrire les installations de logiciels.
74
Exercice 1
75
Exercice 1
76
Exercice 1
crivez puis excutez le script SQL (que vous appellerez creParc.sql) de cration des tables avec leur cl primaire (en gras dans le schma suivant) et les contraintes suivantes : Les noms des segments, des salles et des postes sont non nuls. Le domaine de valeurs de la colonne ad stend de 0 255. La colonne prix est suprieure ou gale 0. La colonne dateIns est gale la date du jour par dfaut.
77
Exercice 2
crivez puis excutez le script SQL (que vous appellerez descParc.sql) qui affiche la description de toutes ces tables (en utilisant des commandes DESC). Comparer avec le schma.
78
C
Formalisme dune requte de description de donnes pour utiliser DROP TABLE
ESSARRAJ Fouad
79
CASCADE CONSTRAINTS permet de saffranchir des cls trangres actives contenues dans dautres tables et qui rfrencent la table supprimer. Cette option dtruit les contraintes des tables fils associes sans rien modifier aux donnes qui y sont stockes
Nous avons vu quil fallait crer dabord les tables pres puis les tables fils (si des contraintes sont dfinies en mme temps que les tables). Lordre de destruction des tables, pour des raisons de cohrence, est inverse (il faut dtruire les tables fils puis les tables pres ). Dans notre exemple, il serait malvenu de supprimer la table Compagnie avant la table Pilote. En effet la cl trangre compa naurait plus de sens.
80
81
Exercice 3
crivez puis excutez le script SQL de destruction des tables (que vous appellerez dropParc.sql). Lancer ce script puis nouveau celui de la cration des tables.
82
D
Formalisme dune requte de description de donnes pour utiliser ALTER TABLE
Lvolution dun schma est un aspect trs important prendre en compte, car il rpond aux besoins de maintenance des applicatifs qui utilisent la base de donnes. Nous verrons quil est possible de modifier une base de donnes dun point de vue structurel (colonnes et index) mais aussi comportemental (contraintes). Linstruction principalement utilise permet dajouter, de renommer, de table. Elle permet aussi dajouter, de des contraintes. Avant de dtailler permet de renommer une table. est ALTER TABLE (commande du LDD) qui modifier et de supprimer des colonnes dune supprimer, dactiver, de dsactiver et de diffrer ces mcanismes, tudions la commande qui
ESSARRAJ Fouad
83
84
85
Ajout de colonnes
La directive ADD de linstruction ALTER TABLE permet dajouter une nouvelle colonne une table. Cette colonne est initialise NULL pour tous les enregistrements ( moins de spcifier une contrainte DEFAULT, auquel cas tous les enregistrements de la table sont mis jour avec une valeur non nulle). Il est possible dajouter une colonne en ligne NOT NULL seulement si la table est vide ou si une contrainte DEFAULT est dfinie sur la nouvelle colonne (dans le cas inverse, il faudra utiliser MODIFY la place de ADD).
Il faut utiliser la directive RENAME COLUMN de linstruction ALTER TABLE pour renommer une colonne existante. Le nom de la nouvelle colonne ne doit pas tre dj utilis par une colonne de la table.
87
88
Il nest pas possible de supprimer avec cette instruction : des cls primaires (ou candidates par UNIQUE) rfrences par des cls trangres ; des colonnes partir desquelles un index a t construit ; des pseudo-colonnes (ROWID et LEVEL) ou des colonnes de tables objets ; toutes les colonnes dune table.
89
Modifications comportementales
Nous tudions dans cette section les mcanismes dajout, de suppression, dactivation et de dsactivation des contraintes. Faisons voluer le schma suivant. Les cls primaires sont nommes pk_Compagnie pour la table Compagnie et pk_Avion pour la table Avion.
Ajout de contraintes
Comme pour linstruction CREATE TABLE, quatre types de contraintes sont possibles : - UNIQUE (colonne1 [,colonne2]) - PRIMARY KEY (colonne1 [,colonne2]) - FOREIGN KEY (colonne1 [,colonne2]) REFERENCES [schma.]nomTablePre (colonne1 [,colonne2]) [ON DELETE { CASCADE | SET NULL }] - CHECK (condition)
91
Ajout de contraintes
Cl trangre
Cl primaire
92
Suppression de contraintes
La directive DROP CONSTRAINT de linstruction ALTER TABLE permet denlever unecontrainte dune table La directive CASCADE supprime les contraintes rfrentielles des tables pres . On comprend mieux maintenant pourquoi il est si intressant de nommer les contraintes plutt que dutiliser les noms automatiquement gnrs.
Cl trangre Supprimons la cl trangre de la colonne proprio. Il nest pas besoin de spcifier CASCADE, car il sagit dune table fils pour cette contrainte dintgrit rfrentielle.
93
Suppression de contraintes
Cl primaire (ou candidate)
Supprimons la cl primaire de la table Avion. Il faut prciser CASCADE, car cette table est rfrence par une cl trangre dans la table Affreter. Cette commande supprime la fois la cl primaire de la table Avion mais aussi les contraintes cls trangres des tables dpendantes (ici seule la cl trangre de la table Affreter est supprime).
Si loption CASCADE navait pas t spcifie, Oracle aurait renvoy lerreur ORA-02273: cette cl unique/primaire est rfrence par des cls trangres .
94
A
Formalisme dune requte de manipulation de donnes pour insrer des donnes dans les tables existantes
ESSARRAJ Fouad
95
96
97
Dates/heures
Dclarons la table Pilote qui contient deux colonnes de type DATE.
CREATE TABLE Pilote ( brevet VARCHAR(6), nom VARCHAR(20), dateNaiss DATE, nbHVol NUMBER(7,2), dateEmbauche DATE, compa VARCHAR(4), CONSTRAINT pk_Pilote PRIMARY KEY(brevet) ); INSERT INTO Pilote VALUES ('PL-10', karim', '05-02-1983', 900, SYSDATE,'AF'); Linsertion du pilote initialise la date de naissance au 5 fvrier 1983 ( zro heure, zro minute et zro seconde), ainsi que la date dembauche la date (heures, minutes, secondes) du moment par la fonction SYSDATE.
98
Types TIMESTAMP
CREATE TABLE Evnements( arriv TIMESTAMP, arrivLocalement TIMESTAMP WITH TIME ZONE ); INSERT INTO Evnements VALUES (TIMESTAMP '1965-02-05 09:30:02.123', TIMESTAMP '1965-01-16 12:30:05.98 +4:30'); Linsertion initialise -la colonne arriv au 5 fvrier 1965 9 heures, 30 minutes, 2 secondes et 123 centimes dans le fuseau dfini au niveau de la base ; - la colonne arrivLocalement au 16 janvier 1965 12 heures, 30 minutes, 5 secondes et 98 centimes dans le fuseau dcal vers lest de 4h30 par rapport au mridien de Greenwich. 99 La table Evnements contient la colonne arriv (TIMESTAMP) pour stocker des fractions de secondes et la colonne arrivLocalement (TIMESTAMP WITH TIME ZONE) pour considrer aussi le fuseau horaire.
Types INTERVAL
CREATE TABLE Dures ( dureAnnesMois INTERVAL YEAR TO MONTH, dureJourSecondes INTERVAL DAY TO SECOND ); La table Dures contient la colonne dureAnnesMois (INTERVAL YEAR TO MONTH) pour stocker des intervalles en annes et en jours, et la colonne dureJourSecondes (INTERVAL DAY TO SECOND) pour stocker des intervalles en jours, heures, minutes, secondes et fractions de secondes. INSERT INTO Dures VALUES ('1-7', '5 15:13:56.97'); Linsertion initialise : - la colonne dureAnnesMois la valeur d1 an et 7 mois ; - la colonne dureJourSecondes la valeur de 5 jours, 15 heures, 13 minutes, 56 secondes et 97 centimes.
100
Variables utiles
Les variables suivantes permettent de retrouver le moment de la session et le fuseau du serveur (si tant est quil soit dport par rapport au client). -CURRENT_DATE : date et heure de la session (format DATE) ; -LOCALTIMESTAMP : date et heure de la session (format TIMESTAMP) ; -SYSTIMESTAMP : date et heure du serveur (format TIMESTAMP WITH TIME ZONE) ; - DBTIMEZONE : fuseau horaire du serveur (format VARCHAR2) ; - SESSIONTIMEZONE : fuseau horaire de la session client (format VARCHAR2).
101
B
Formalisme dune requte de manipulation de donnes pour insrer les donnes en utilisant un SELECT
ESSARRAJ Fouad
102
C
Formalisme dune requte de manipulation de donnes pour respecter les contraintes au moment de linsertion
ESSARRAJ Fouad
103
104
D
Formalisme dune requte de manipulation de donnes pour modifier les donnes en utilisant UPDATE
ESSARRAJ Fouad
105
Modifications de colonnes
Syntaxe UPDATE [schma.] nomTable SET colonne1 = expression | (requte_SELECT) | DEFAULT (colonne1, colonne2) = (requte_SELECT) [WHERE (codition)] ; Modification dune colonne UPDATE Compagnie SET nrue = 50 WHERE comp = 'AN1'; Modification de plusieurs colonnes UPDATE Compagnie SET nrue = 14, ville = DEFAULT WHERE comp = 'AN2';
106
107
E
Formalisme dune requte de manipulation de donnes pour supprimer les donnes en utilisant DELETE
ESSARRAJ Fouad
108
Suppressions denregistrements
Syntaxe DELETE [FROM] [schma.]nomTable [WHERE (condition)] ; Exemple DELETE FROM Pilote WHERE compa = 'AF'; DELETE Compagnie WHERE comp = 'AF';
La condition slectionne les lignes supprimer dans la table. Si aucune condition nest prcise, toutes les lignes seront supprimes. Si la condition ne slectionne aucune ligne, aucun enregistrement ne sera supprim.
109
Intgrit rfrentielle
110
1
Interrogation des donnes
Ce chapitre traite de laspect le plus connu du langage SQL savoir lextraction des donnes par requtes (nom donn aux instructions SELECT). Une requte permet de rechercher des donnes dans une ou plusieurs tables ou vues partir de critres simples ou complexes.
ESSARRAJ Fouad
111
Gnralits
Linstruction SELECT est une commande dclarative (dcrit ce que lon cherche sans dcrire le moyen de le raliser). linverse, une instruction procdurale (comme un programme) dvelopperait le moyen de raliser lextraction de donnes (comme le chemin emprunter entre tables ou une itration pour parcourir un ensemble denregistrements).
112
Syntaxe (SELECT)
SELECT [ { DISTINCT | UNIQUE } | ALL ] listeColonnes FROM nomTable1 [,nomTable2] [ WHERE condition ] [ clauseHirarchique ] [ clauseRegroupement ] [ HAVING condition ] [ { UNION | UNION ALL | INTERSECT | MINUS } ( sousRequte )] [ clauseOrdonnancement ] ;
113
114
115
Alias
Les alias permettent de renommer des colonnes laffichage ou des tables dans la requte. Les alias de colonnes sont utiles pour les calculs. Oracle traduit les noms des alias en majuscules (valable aussi pour les expressions, colonnes, vues, tables, etc.) ; - Lutilisation de la directive AS est facultative (pour se rendre conforme SQL2) ; - Il faut prfixer les colonnes par lalias de la table lorsquil existe.
116
Duplicatas
Les directives DISTINCT ou UNIQUE liminent les ventuels duplicatas. Pour la deuxime requte, les critures DISTINCT compa, UNIQUE(compa) et UNIQUE compa sont quivalentes. La notation entre parenthses est ncessaire lorsque lon dsire liminer des duplicataspar paires, triplets, etc.
117
118
Ordonnancement
Pour trier le rsultat dune requte, il faut spcifier la clause dordonnancement par ORDER BY de la manire suivante :
Exemple
119
Ordonnancement
Syntax ORDER [SIBLINGS] BY { expression1 | position1 | alias1 } [ASC | DESC] [ NULLS FIRST | NULLS LAST ] [,{expression2 | position2 | alias2} [ASC | DESC] [NULLS FIRST | NULLS LAST]] SIBLINGS : relatif aux requtes hirarchiques, coupl au CONNECT BY expression : nom de colonne, fonction, constante, calcul. position : entier qui dsigne lexpression (au lieu de la nommer) dans son ordre dapparition dans la clause SELECT. ASC ou DESC : tri ascendant ou descendant (par dfaut ASC). NULLS FIRST ou NULLS LAST : position des valeurs nulles (au dbut ou la fin du rsultat). NULLS LAST par dfaut pour loption ASC, NULLS FIRST par dfaut pour loption DESC.
120
Concatnation
Loprateur de concatnation scrit avec deux barres verticales (||). Il permet de concatner des expressions (colonnes, calculs, fonctions ou constantes). La colonne rsultante est considre comme une chane de caractres.
121
Restriction (WHERE)
Les lments de la clause WHERE dune requte permettent de programmer loprateur de restriction. Cette clause limite la recherche aux enregistrements qui respectent une condition simple ou complexe.
SELECT [ { DISTINCT | UNIQUE } | ALL ] listeColonnes FROM nomTable [aliasTable] [ WHERE condition ] ; condition : est compose de colonnes, dexpressions, de constantes lies deux deux entre des oprateurs : de comparaison (>, =, <, >=, <=, <>) ; logiques (NOT, AND ou OR) ; intgrs (BETWEEN, IN, LIKE, IS NULL).
122
Oprateurs de comparaison
Les critures prime=500 et (prime=500) sont quivalentes. Les critures prime<>500 et NOT (prime=500) sont quivalentes. Les parenthses sont utiles pour composer des conditions.
123
Oprateurs logiques
- Lordre de priorit des oprateurs logiques est NOT, AND et OR. - Les oprateurs de comparaison (>, =, <, >=, <=, <>) sont prioritaires par rapport NOT. - Les parenthses permettent de modifier les rgles de priorit.
124
Oprateurs intgrs
Les oprateurs intgrs sont BETWEEN, IN, LIKE et IS NULL.
125
Oprateurs intgrs
126
Regroupements
SELECT [ { DISTINCT | UNIQUE } | ALL ] listeColonnes FROM nomTable [ WHERE condition ] [ clauseRegroupement ] [ HAVING condition ] [ clauseOrdonnancement ] ;
listeColonnes : peut inclure des expressions (prsentes dans la clause de regroupement) ou des fonctions de groupe. clauseRegroupement : GROUP BY (expression1[,expression2]) permet de regrouper des lignes selon la valeur des expressions (colonnes, fonction, constante, calcul). HAVING condition : pour inclure ou exclure des lignes aux groupes (la condition ne peut faire intervenir que des expressions du GROUP BY).
127
Fonctions de groupe
128
129
130
la clause WHERE de la requte permet dexclure des lignes pour chaque groupement, ou de rejeter des groupements entiers. Elle sapplique donc la totalit de la table ; la clause GROUP BY liste les colonnes du groupement ; la clause HAVING permet de poser des conditions sur chaque groupement.
Les colonnes prsentes dans le SELECT doivent apparatre dans le GROUP BY. Seules des fonctions ou expressions peuvent exister en plus dans le SELECT. Les alias de colonnes ne peuvent pas tre utiliss dans la clause GROUP BY. 131
132
133
134
135
Exercice
Vrifier : SELECT * FROM Softs; SELECT * FROM PCSeuls; crivez le script requtes.sql, permettant dextraire, laide dinstructions SELECT, les donnes suivantes :
1 )Type du poste 'p8'. 2) Noms des logiciels Unix. 3 )Nom, adresse IP, numro de salle des postes de type 'Unix' ou 'PCWS'. 4) Mme requte pour les postes du segment '130.120.80' tris par numros de salles dcroissants. 5) Numros des logiciels installs sur le poste 'p6'.
136
A
Dfinition du formalisme dune requte de consultation de donnes, ordre Select.
ESSARRAJ Fouad
137
B
Expressions et fonctions du SGBD.
ESSARRAJ Fouad
138
C
Oprateurs de Projection, Restriction, union, intersection.
ESSARRAJ Fouad
139
Oprateurs ensemblistes
Une des forces du modle relationnel repose sur le fait quil est fond sur une base mathmatique (thorie des ensembles). Le langage SQL programme les oprations binaires (entre deux tables) suivantes : - intersection par loprateur INTERSECT qui extrait des donnes prsentes simultanment dans les deux tables ; - union par les oprateurs UNION et UNION ALL qui fusionnent des donnes des deux tables ; - diffrence par loprateur MINUS qui extrait des donnes prsentes dans une table sans tre prsentes dans la deuxime table ; - produit cartsien par le fait de disposer de deux tables dans la clause FROM, ce qui permet de composer des combinaisons partir des donnes des deux tables.
140
Oprateur INTERSECT
Exemple
141
Oprateur INTERSECT
Loprateur INTERSECT est commutatif (requte1 INTERSECT requte2 est identique requte2 INTERSECT requte1). Cet oprateur limine les duplicatas entre les deux tables avant doprer lintersection. Notez qu laffichage, le nom des colonnes est donn par la premire requte.
ESSARRAJ Fouad
142
ESSARRAJ Fouad
143
ESSARRAJ Fouad
144
Oprateur MINUS
ESSARRAJ Fouad
145
La clause ORDER BY nest utilisable quune fois en fin dune requte incluant des oprateurs ensemblistes. Cette clause accepte le nom des colonnes de la premire requte ou la position de ces colonnes.
ESSARRAJ Fouad
146
Exemple Union
Supposons que nous dsirions faire la liste des avions avec leur prix dachat augment de 20 %, liste trie en fonction de cette dernire hausse. Le problme est que la table AvionsdeAF ne possde pas une telle colonne. Ajoutons donc au SELECT de cette table, dans le tableau suivant, la valeur 0 pour rendre possible loprateur UNION.
ESSARRAJ Fouad
147
Produit cartsien
En mathmatiques, le produit cartsien de deux ensembles E et F est lensemble des couples (x, y) o x E et y F. En transposant au modle relationnel, le produit cartsien de deux tables T1 et T2 est lensemble des enregistrements (x, y) o x T1 et y T2. Le produit cartsien total entre deux tables T1 et T2 se programme sous SQL en positionnant les deux tables dans la clause FROM sans ajouter de conditions dans la clause WHERE. Si les conditions sont de la forme c1 oprateur c2 avec c1 T1 et c2 T2, on parlera de jointure. Si les conditions sont de la forme c1 oprateur valeur1 ou c2 oprateur valeur2 , on parlera de produit cartsien restreint.
148
Le nombre denregistrements rsultant dun produit cartsien est gal au produit du nombre denregistrements des deux tables mises en relation. Dans le cadre de notre exemple, le nombre denregistrements du produit cartsien sera de 2 pilotes 3 avions = 6 enregistrements
ESSARRAJ Fouad
149
D
Extraction de donnes en provenance de plusieurs tables : Jointure (equi-jointures, jointures externes, auto-jointures).
ESSARRAJ Fouad
150
Jointures
Une jointure met en relation deux tables sur la base dune clause de jointure (comparaison de colonnes). Gnralement, cette comparaison fait intervenir une cl trangre dune table avec une cl primaire dune autre table
151
Jointure relationnelle
La forme la plus courante de la jointure est la jointure dite relationnelle (aussi appele SQL89 [MAR 94]), caractrise par une seule clause FROM contenant les tables et alias mettre en jointure deux deux. La syntaxe gnrale suivante dcrit une jointure relationnelle : SELECT [alias1.]col1, [alias2.]col2 FROM nomTable1 [alias1], nomTable2 [alias2] WHERE (conditionsDeJointure);
152
quijointure
Une quijointure utilise loprateur dgalit dans la clause de jointure et compare gnralement des cls primaires avec des cls trangres.
153
Autojointure
Cas particulier de lquijointure, lautojointure relie une table elle-mme.
154
Inquijointure
Les requtes dinquijointures font intervenir tout type doprateur ( <>, >, <, >=, <=, BETWEEN, LIKE, IN). linverse des quijointures, la clause dune inquijointure nest pas base sur lgalit de cls primaires (ou candidates) et de cls trangres. les pilotes ayant plus dexprience que le pilote de numro de brevet 'PL-2' (requte R5).
155
Inquijointure
le titre de qualification des pilotes en raisonnant sur la comparaison des heures de vol avec un ensemble de rfrences, ici la table HeuresVol (requte R6). Dans notre exemple, il sagit par exemple de retrouver le fait que le premier pilote est dbutant.
156
Jointures externes
Les jointures externes permettent dextraire des enregistrements qui ne rpondent pas aux critres de jointure. Lorsque deux tables sont en jointure externe, une table est dominante par rapport lautre (qui est dite subordonne ). Ce sont les enregistrements de la table dominante qui sont retourns (mme sils ne satisfont pas aux conditions de jointure). Comme les jointures internes, les jointures externes sont gnralement bases sur les cls primaires et trangres. On distingue les jointures unilatrales qui considrent une table dominante et une table subordonne, et les jointures bilatrales pour lesquelles les tables jouent un rle symtrique (pas de dominant).
157
158
E
Statistiques sur les donnes en utilisant les fonctions de groupe.
ESSARRAJ Fouad
159
F
Sous interrogations et sous interrogations synchronises.
ESSARRAJ Fouad
160
G
Reprsentation des donnes de manire hirarchique.
ESSARRAJ Fouad
161
5
Transactions
Grer les transactions.
ESSARRAJ Fouad
162
A
Formalisme d'une requte de cration de transaction
ESSARRAJ Fouad
163
B
Verrouillage des donnes lors de lexcution des commandes INSERT UPDATE DELETE.
ESSARRAJ Fouad
164
C
Fin des transactions : Commit, RollBack.
ESSARRAJ Fouad
165
6
Squences, vues et indexes.
Utiliser les diffrents types dobjets sur une base de donnes.
ESSARRAJ Fouad
166
A
Cration de squences pour gnrer des valeurs de cls primaires.
ESSARRAJ Fouad
167
Cration de vues, et expliquer leur rle dans la scurit et la simplification de manipulation de donnes.
ESSARRAJ Fouad
168
C
Optimisation des accs aux donnes en crant des indexes.
ESSARRAJ Fouad
169
7
Scurit des donnes.
ESSARRAJ Fouad
170
A
Cration des utilisateurs et des rles.
ESSARRAJ Fouad
171
B
Dfinition des privilges systme et objet.
ESSARRAJ Fouad
172
C
Commandes de gestion des privilges GRANT et REVOKE.
ESSARRAJ Fouad
173
8
Dictionnaire de donnes.
ESSARRAJ Fouad
174
A
Exploitation des vues de dictionnaire.
ESSARRAJ Fouad
175
B
Vrification des objets et des privilges sur les objets.
ESSARRAJ Fouad
176
SGBD1
Fin de Cours
ESSARRAJ Fouad
177