Vous êtes sur la page 1sur 177

Systme de gestion de bases de donnes

Premire partie : SQL de base

Manipuler une base de donnes en utilisant le langage SQL.

ESSARRAJ Fouad essarraj.fouad@gmail.com


1

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

SQL, une norme, un succs


Le succs que connaissent les grands diteurs de SGBD relationnels (IBM, Oracle, Microsoft, Sybase et Computer Associates) a plusieurs origines et repose notamment sur SQL : Le langage est une norme depuis 1986 qui senrichit au fil du temps. SQL peut sinterfacer avec des langages de troisime gnration comme C ou Cobol, mais aussi avec des langages plus volus comme C++ et Java. Les SGBD rendent indpendants programmes et donnes Ces systmes sont bien adapts aux grandes applications informatiques de gestion (architectures type client-serveur et Internet) Ils offrent la possibilit de stocker des informations non structures (comme le texte, limage, etc.) dans des champs appels LOB (Large Object Binary). Les principaux SGBD Open Source (MySQL, Firebird, Berkeley DB, PostgreSQL) ont adopts depuis longtemps SQL pour ne pas rester en marge.
5

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

Les points cls d une BD


Indpendance physique: un SGBD permet de manipuler des donnes sans se soucier de la faon dont sont stockes physiquement ces donnes Indpendance logique: un SGBD permet de prsenter sous diffrentes vues les mmes donnes (groupes de travail htrognes) Manipulation par des non-informaticiens: un SGBD permet de dcrire ce que lon souhaite sans dcrire comment lobtenir(recherche dclarative)

12

Les points cls d une BD


Efficacit des accs aux donnes: un SGDB repose sur des algorithmes (transparents pour lutilisateur) performants qui optimisent laccs aux donnes Centralisation des informations: un SGDB permet de centraliser les informations relatives un domaine, ce qui :

garantie la non-redondance minimise la perte de place facilite les mises jour des donnes

13

Les points cls d une BD


Cohrence des donnes: un SGBD permet de la vrification de contraintes dintgrit

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 :

Systmes de recherche documentaire (textes,sons, graphiques, )

17

Modlisation des donnes


Modle de donnes :

Modles BD

Ensemble de concepts pour dcrire :


Les donnes Les liens entre les donnes La smantique des donnes

En gnral, un ensemble doprations est associ pour manipuler les donnes


Formalisme de description :

Textuel Graphique Mathmatique


Exemples de modles :

Entit/association Hirarchique/rseau Relationnel Objet, relationnel-objet

18

Modle Entit/Association

Modles BD

0,1

Emprunter UV code coord


1,n

Sinscrire note

3,n

Eleve num nom age adresse

Livre cote titre

0,n

datePret

0,1

Louer Chambre no prix

1,1

19

Critique du modle Entit/Association


Avantages

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

Modle hirarchique (suite)


Schma BD
Structure arborescente (fort)

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

Modle rseau (suite)


Schma BD

Modles BD

Structure de graphe orient acyclique


BD

Collection denregistrements relis par des pointeurs


Langage de manipulation

Navigationnel et procdural Utilisation de pointeurs Standard CODASYL 71, 78


Systmes

IDS2 dHoneywell (1975), Total de Cincom (1974), Adabas de Soft. Ag (1978)


Problmes

Pas dindpendance logique/physique

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

Modle relationnel (2) MLD Ecole

Modles BD

LIVRE COTE NUM TITRE DATEPRET

ELEVE UV CODE NBH COORD INSCRIT CODE NUM NOTE NUM NO NOM AGE ADRESSE

CHAMBRE NO NUM PRIX

26

Modle relationnel (3)


Schma BD

Modles BD

Structure de relation
BD

Ensemble denregistrements relis par des valeurs


Langage de manipulation

Ensembliste Dclaratif Standard international [ SQL 86, 89, 92 ou SQL2]


Prototypes de recherche

System/R chez IBM (1976), Ingres Berkeley (1976)


Systmes commerciaux

SQL/DS et DB2 dIBM (1982), Oracle (1983), Ingres (1983), Informix (1981), Sybase (1984), SqlServer (1998) MySQL (1995) Access

27

Modle relationnel (suite)


Avantages

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

Exemples de SGBD Relationnels : Oracle, MySQL, 4D, Access, etc.


BD Dductives: organisation des donnes sous forme de table et exploitation laide dun langage logique BD Objets: organisation des donnes sous forme dinstances de classes hirarchises (qui possdent leur propres mthodes dexploitation)

Exemple de SGBD Objets : O2

29

SGBD : But et moyens


But :

Quest-ce quun SGBD ?

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

Quest-ce quun SGBD ?

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

SGBD : Architecture dun SGBD


Administrateur Programmeur dapplication

Quest-ce quun SGBD ?

Utilisateur terminal

Dfinition des schmas de la BD

Manipulation de la BD

Traducteur LDD Noyau SGBD

Traducteur LMD

Mtabase

BD

32

Les 3 couches d un SGBD


Un SGBD est compos de 3 couches :

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

Dfinition physique des donnes


Schma physique des donnes Mthodes de placements et daccs

Contrle des donnes


Contraintes dintgrit Droits daccs

34

SGBD : LMD
Objectif Style procdural

Quest-ce quun SGBD ?

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

Les utilisateurs dun SGBD


Le concepteur

Quest-ce quun SGBD ?

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

Les utilisateurs dun SGBD (suite)


Dveloppeur dapplications

Quest-ce quun SGBD ?

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

Dmarche de conception d une BD


Analyse du problme et modlisation de la BD

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

Simple: prix, nom, date Complexe: personne, document, image


Une smantique

Le solde dun compte courant


Un propritaire

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

Accorde des droits dutilisation

40

Terminologie BD : Modle de donnes


Ensemble de concepts pour dcrire :

Terminologie BD

Les donnes du monde rel Les liens entre les donnes La smantique des donnes

41

Terminologie BD : Schma et instance dune BD


Schma (intention) :
Description des donnes de la base, conformment un modle Schma rseau, schma relationnel, ... Statique en gnral.

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

Cration dune table (CREATE TABLE)


CREATE TABLE [schma.]nomTable ( colonne1 type1 [DEFAULT valeur1] [NOT NULL] [, colonne2 type2 [DEFAULT valeur2] [NOT NULL] ] [CONSTRAINT nomContrainte1 typeContrainte1]) ;

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

Cration dune table


il est prfrable dutiliser les conventions suivantes :
tous les mots-cls de SQL sont nots en MAJUSCULES ; les noms de tables sont nots en Minuscules (except la premire lettre) ; les noms de colonnes et de contraintes en minuscules. Ladoption de ces conventions rendra vos requtes, scripts et programmes plus lisibles (un peu la mode Java).

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

Types des colonnes : Caractres


Les types CHAR et NCHAR permettent de stocker des chanes de caractres de taille fixe. Les types VARCHAR2 et NVARCHAR2 permettent de stocker des chanes de caractres de taille variable (VARCHAR est maintenant remplac par VARCHAR2). Les types NCHAR et NVARCHAR2 permettent de stocker des chanes de caractres Unicode . Les types CLOB et NCLOB permettent de stocker des flots de caractres (exemple : du texte).

52

Types des colonnes : Caractres

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

Types des colonnes : Date/heure


Le type DATE permet de stocker des moments ponctuels, la prcision est compose du sicle, de lanne, du mois, du jour, de lheure, des minutes et des secondes. Le type TIMESTAMP est plus prcis dans la dfinition dun moment (fraction de seconde). Le type TIMESTAMP WITH TIME ZONE prend en compte les fuseaux horaires. Le type TIMESTAMP WITH LOCAL TIME ZONE permet de faire la dichotomie entre une heure ct serveur et une heure ct client. Le type INTERVAL YEAR TO MONTH permet dextraire une diffrence entre deux moments avec une prcision mois/anne. Le type INTERVAL DAY TO SECOND permet dextraire une diffrence plus prcise entre deux moments (prcision de lordre de la fraction de seconde).
55

Types des colonnes : Date/heure

56

Types des colonnes : Donnes binaires


Les types BLOB et BFILE permettent de stocker des donnes non structures (structure opaque pour Oracle) comme le multimdia (images, sons, vido, etc.).

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

Intgrit rfrentielle : Cohrences


Deux types de problmes sont automatiquement rsolus par Oracle pour assurer lintgrit rfrentielle : La cohrence du fils vers le pre : on ne doit pas pouvoir insrer un enregistrement fils (ou modifier sa cl trangre) rattach un enregistrement pre inexistant. Il est cependant possible dinsrer un fils (ou de modifier sa cl trangre) sans rattacher denregistrement pre la condition quil nexiste pas de contrainte NOT NULL au niveau de la cl trangre. La cohrence du pre vers le fils : on ne doit pas pouvoir supprimer un enregistrement pre (ou modifier sa cl primaire) si un enregistrement fils y est encore rattach. Il est possible de supprimer les fils associs (DELETE CASCADE) ou daffecter la valeur nulle aux cls trangres des fils associs (DELETE SET NULL).

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

Cls composites et nulles


Les cls trangres ou primaires peuvent tre dfinies sur trente-deux colonnes au maximum (composite keys). Les cls trangres peuvent tre nulles si aucune contrainte NOT NULL nest dclare.

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

Destruction dun schma


DROP TABLE [schma.]nomTable [CASCADE CONSTRAINTS];

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

Exemple : DROP TABLE

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

Renommer une table (RENAME)


RENAME ancienNom TO nouveauNom; Linstruction RENAME renomme une table. Cette commande convient aussi aux squences, synonymes et vues. Les contraintes dintgrit, index et prrogatives associs lancienne table sont automatiquement transfrs sur la nouvelle. En revanche, les vues, synonymes et procdures catalogus sont invalids et doivent tre recrs. Il est aussi possible dutiliser la directive RENAME TO de linstruction ALTER TABLE pour renommer une table existante

84

Modifications structurelles (ALTER TABLE)


Considrons la table suivante que nous allons faire voluer :

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).

Table aprs lajout de colonnes 86

Renommer des colonnes

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

Modifier le type des colonnes


Il est possible daugmenter la taille dune colonne numrique (largeur ou prcision) ou dune chane de caractres (CHAR et VARCHAR2) ou de la diminuer si toutes les donnes prsentes dans la colonne peuvent sadapter la nouvelle taille. Les contraintes en ligne peuvent tre aussi modifies par cette instruction (DEFAULT, NOT NULL, UNIQUE, PRIMARY KEY et FOREIGN KEY). Une fois la colonne change, les nouvelles contraintes sappliqueront aux mises jour ultrieures de la base.

88

Supprimer des colonnes

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.

Schma faire voluer 90

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

Insertions denregistrements (INSERT)


Syntaxe
INSERT INTO [schma.] { nomTable | nomVue | requteSELECT } [(colonne1, colonne2)] VALUES (valeur1 | DEFAULT, valeur2 | DEFAULT);

Exemple 1 : Renseigner toutes les colonnes

96

Insertions denregistrements (INSERT)


Exemple 2 : Renseigner certaines colonnes

La table Compagnie contient prsent les lignes suivantes :

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

Ne pas respecter des contraintes

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';

La table Compagnie contient prsent les lignes suivantes.

106

Modification dune heure


On modifie une date en prcisant une heure via la fonction TO_DATE.
UPDATE Pilote SET dateNaiss = TO_DATE('25-03-1967 12:35:00', 'DD:MM:YYYY HH24:MI:SS') WHERE brevet = 'PL-1';

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

Extraction de toutes les colonnes


Extraction de toutes les colonnes

114

Extraction de certaines colonnes

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

Expressions et valeurs nulles


Il est possible dvaluer et dafficher simultanment des expressions dans la clause SELECT (types NUMBER, DATE et INTERVAL). Les oprateurs arithmtiques sont valus par ordre de priorit (*, /, + et ). Le rsultat dune expression comportant une valeur NULL est valu NULL.

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

Exemples de fonctions de groupe

129

Exemples de fonctions de groupe

130

tude du GROUP BY et HAVING


SELECT col1[, col2], fonction1Groupe()[,fonction2Groupe()] FROM nomTable [ WHERE condition ] GROUP BY col1[, col2]) [ HAVING condition ] [ ORDER BY ] ;

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

tude du GROUP BY et HAVING


Dans lexemple suivant, en groupant sur la colonne compa, trois ensembles de lignes (groupements) sont composs. Il est alors possible dappliquer des fonctions de groupe chacun de ces ensembles (dont le nombre nest pas prcis dans la requte ni limit par le systme qui parcourt toute la table).

132

tude du GROUP BY et HAVING


Il est aussi possible de grouper sur plusieurs colonnes (par exemple ici sur les colonnes compa et typeAvion pour classifier les pilotes selon ces deux critres). Avec GROUP BY, les fonctions sappliquent dsormais chaque regroupement comme le montrent les exemples suivants :

133

tude du GROUP BY et HAVING

134

tude du GROUP BY et HAVING

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

Oprateurs UNION et UNION ALL


Les oprateurs UNION et UNION ALL sont commutatifs. Loprateur UNION permet dviter les duplicatas (comme DISTINCT ou UNIQUE dans un SELECT). UNION ALL ne les limine pas.

ESSARRAJ Fouad

143

Oprateurs UNION et UNION ALL

ESSARRAJ Fouad

144

Oprateur MINUS

ESSARRAJ Fouad

145

Ordonner les rsultats

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

Produit cartsien : Exemple

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

Jointures externes : Jointures unilatrales


En considrant les tables suivantes, une jointure externe unilatrale permet dextraire la liste des compagnies et leurs pilotes, mme les compagnies nayant pas de pilote (requte R7). Sans une jointure externe, la compagnie 'CAST' ne peut tre extraite ;

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