Vous êtes sur la page 1sur 9

Universit Tunis El Manar Institut Suprieur dInformatique Matire : Systme de Gestion de Bases de Donnes

Anne Universitaire 2011-2012


me

Niveau : 2

anne SIL

Enseignants : R. ZAFRANI B. AYED

Fvrier 2012

Cours n2 : Les objets bases de donnes


1. Les tables
Les tables reprsentent le mcanisme de stockage des donnes dans une base Oracle. Ainsi, comme nous lavons vu, une table contient un ensemble fixe de colonnes. Chaque colonne possde un nom ainsi que des caractristiques spcifiques. * Les principaux types de donnes supports par Oracle : CHAR (n) : Champ de longueur fixe pouvant atteindre 2000 octets NCHAR (n) : Champ de longueur fixe pour les jeux de caractres multioctets pouvant atteindre 2000 caractres ou 2000 octets selon le jeu de caractres utilis. Sa taille par dfaut est de 1 octet. VARCHAR2(n) : Champ de longueur variable pouvant atteindre 4000 caractres NUMBER (n,[d]) : Champ de longueur variable de n chiffres dont d aprs la virgule, acceptant des nombres ngatifs. Le nombre doctets ncessaires pour stocker une valeur de ce type quivaut approximativement la moiti du nombre de chiffres significatifs qui constituent cette valeur. DATE : Champ de longueur fixe de 7 octets pour stocker nimporte quelle date, incluant lheure

* La dnomination des objets Le systme impose certaines limitations; la dnomination des objets doit respecter les rgles suivantes : - Chaque objet dun schma mme pour des types dobjets diffrents doit tre unique. - La longueur du nom ne peut excder 30 caractres. - Il doit commencer par un caractre alphabtique ou par _ ou $ ou #. - Ne doit pas tre un mot rserv SQL. - Il peut comporter des caractres minuscules ou majuscules. Oracle ne tient pas compte de la casse tant que les noms de tables ou de colonnes ne sont pas indiqus entre guillemets. * Cration dune table Syntaxe de base : CREATE TABLE [SCHEMA.]<nom-de-table> ( <nom-colonne> <Type> [DEFAULT expression] [NOT NULL], ...); - DEFAULT expression permet de dfinir une valeur par dfaut pour la colonne, qui sera prise en compte si aucune valeur nest spcifie dans une commande INSERT. Cette valeur pourrait tre une constante, USER ou SYSDATE. * Exemple de cration dune table SQL> CREATE TABLE UTILISATEUR ( 2 NO_UTILISATEUR NUMBER(6) NOT NULL, 3 NOM_PRENOM VARCHAR2(20) NOT NULL, 4 DATE_CREATION DATE DEFAULT SYSDATE NOT NULL, 5 UTILISATEUR VARCHAR2(20) DEFAULT USER NOT NULL, 6 DESCRIPTION VARCHAR2(100) ); Table cre. 1

SQL> DESC UTILISATEUR Nom NULL ? Type ------------------------------------ -------------- ---------------------------NO_UTILISATEUR NOT NULL NUMBER(6) NOM_PRENOM NOT NULL VARCHAR2(20) DATE_CREATION NOT NULL DATE UTILISATEUR NOT NULL VARCHAR2(20) DESCRIPTION VARCHAR2(100) SQL> INSERT INTO UTILISATEUR 2 (NO_UTILISATEUR, NOM_PRENOM, DATE_CREATION) 3 VALUES (1, Karim HMAM, DEFAULT); 1 ligne cre. SQL> COMMIT Validation effectue SQL> SELECT * FROM utilisateur; NO_UTILISATEUR NOM_PRENOM DATE_CREATION UTILISATEUR DESCRIPTION 1 Karim HMAM 07/02/05 ZAAFRANI * Transactions Une transaction est un ensemble de modifications de la base qui forment un tout indivisible : Il faut effectuer ces modifications ou pas du tout. Au cours dune transaction, lutilisateur travaille sur une copie prive des tables quil modifie; ainsi, il est le seul voir les modifications quil a effectues. Pour rendre ces modifications effectives pour lensemble des utilisateurs, il doit les valider. Aprs validation il est impossible dannuler les modifications. Il a aussi la possibilit de revenir tout moment ltat dans lequel taient les tables avant le dbut de mise jour. Les transactions devraient tre aussi petites que possible, avec toutes les oprations adaptes pour le changement simple des donnes. Afin quune srie doprations soit considre comme une transaction, elle doit prsenter les proprits : - Atomicit : Une transaction doit tre une unit atomique de travail; elle ne peut russir que si toutes ses oprations russissent. - Cohrence : Quand une transaction est termine, elle doit laisser les donnes dans un tat cohrent incluant toutes les rgles dintgrit des donnes. - Isolation : Les transactions doivent tre isoles des changements effectus par dautres transactions, soit avant que la transaction ne dmarre, soit avant le dmarrage de chaque opration dans la transaction. Ce niveau disolation est configurable dans lapplication. - Durabilit : Une transaction doit tre valide aussitt quelle est termine. Mme si un chec du systme se produit aprs la fin de la transaction, les effets de la transaction sont permanents dans le systme.

* Dbut et fin de transaction Une transaction dmarre par la connexion initiale ou la fin de la transaction prcdente. La fin dune transaction peut tre dfinie explicitement par lun des ordres COMMIT ou ROLLBACK : - COMMIT termine une transaction par la validation des donnes. Il rend dfinitives et accessibles aux autres utilisateurs toutes les modifications effectues pendant la transaction en les sauvegardant dans la base de donnes et annule tous les verrous positionnes pendant la transaction. - ROLLBACK termine une transaction en annulant toutes les modifications de donnes effectues et annule tous les verrous positionns pendant la transaction. SQL> SELECT COUNT(*) FROM COMMANDE WHERE NO_COMMANDE = 77; COUNT(*) 25 SQL> DELETE FROM COMMANDE WHERE NO_COMMANDE = 77; 25 ligne(s) supprime(s) SQL> COMMIT; Validation effectue. SQL> SELECT COUNT(*) FROM COMMANDEWHERE NO_COMMANDE = 77; COUNT(*) 0 SQL> SELECT COUNT(*) FROM COMMANDE WHERE NO_COMMANDE = 6; COUNT(*) 3 SQL> DELETE FROM COMMANDE WHERE NO_COMMANDE = 6; 3 ligne(s) supprime(s) SQL> ROLLBACK; Annulation (ROLLBACK) effectue. SQL> SELECT COUNT(*) FROM COMMANDEWHERE NO_COMMANDE = 6; COUNT(*) 3 La fin dune transaction peut aussi tre implicite et correspondre lun des vnements suivants : - Lexcution dun ordre de dfinition dobjet (CREATE, DROP, ALTER, etc.) par validation de la transaction en cours; - Larrt normal dune session par EXIT par validation de la transaction en cours; - Larrt anormal dune session par annulation de la transaction en cours. SQL> SELECT COUNT(*) FROM COMMANDE WHERE NO_COMMANDE = 6; COUNT(*) 3 SQL> DELETE FROM COMMANDE WHERE NO_COMMANDE = 6; 3 ligne(s) supprime(s) SQL> CREATE UNIQUE INDEX EMPLOYE_UQ ON EMPLOYE(NOM); Index cr. SQL> ROLLBACK; Annulation (ROLLBACK) effectue. SQL> SELECT COUNT(*) FROM COMMANDEWHERE NO_COMMANDE=6; COUNT(*) 0 SQL*PLUS permet de valider automatiquement les oprations de mise jour laide de loption de lenvironnement AUTOCOMMIT. SQL> SET AUTOCOMMIT ON SQL> SHOW AUTOCOMMIT autocommit ON. SQL> DELETE FROM COMMANDE WHERE NO_COMMANDE = 6; 3 ligne(s) supprime(s) 3

SQL> ROLLBACK; Annulation (ROLLBACK) effectue. SQL> SELECT COUNT(*) FROM COMMANDE WHERE NO_COMMANDE=6; COUNT(*) 0 * La commande TRUNCATE Dans Oracle, la commande TRUNCATE permet de supprimer toutes les lignes dune table et de rcuprer lespace quelles occupaient sans liminer la dfinition de la table dans la base, laide de la syntaxe suivante : TRUNCATE TABLE [SCHEMA.]<nom-de-table>; La commande TRUNCATE est un ordre LDD; donc pas de transaction et donc pas de ROLLBACK; ainsi cette opration est irrversible. SQL> SELECT COUNT(*) FROM EMPLOYE; COUNT(*) 10 SQL> TRUNCATE TABLE EMPLOYE; Table tronque SQL> ROLLBACK; Annulation (ROLLBACK) effectue. SQL> SELECT * FROM EMPLOYE; COUNT(*) 0 * Contraintes et assertions Il est trs important de spcifier les contraintes dans le schma, afin que le SGBD puisse les prendre en charge. Cela vite deffectuer des contrles de manire rptitive dans les applications qui accdent la base. Les contraintes (essentielles) portant sur les cls simples, primaires et trangres ont dj t vues. - Dnomination des contraintes Les contraintes peuvent tre nommes afin dtre plus facilement manipules ultrieurement. Dans le cas o aucun nom nest affect explicitement une contrainte, Oracle gnre automatique ment un nom de la forme SYS_CXXXXXX(XXXXXX est un nombre entier unique). De tels noms ne sont pas parlants. Il est donc prfrable de la fournir vous- mme. Lemploi dune stratgie pour affecter des noms permet de mieux les identifier et les grer. Lors de laffectation explicite dun nom une contrainte, il est pratique dutiliser la convention de dnomination suivante : TABLE_COLONNE_TYPEDECONTRAINTE. O TYPEDECONTRAINTE est labrviation mnmonique associ au type de contrainte : - NN NOT NULL - CK CHECK - UQ UNIQUE - PK PRIMARY KEY - FK FOREIGN KEY Cela facilite la comprhension des messages, et permet de modifier ou de dtruire une contrainte : ALTER TABLE Salle DROP CONSTRAINT CINEMA_SALLE_NN - Types des contraintes Il existe 2 faons de spcifier des contraintes : * Contrainte de colonne : Permet de dfinir une contrainte particulire sur une colonne, spcifie dans la dfinition de la colonne. COLONNE[CONSTRAINT <nom_contrainte>] Type_contrainte, * Contrainte de table (portant sur plusieurs colonnes) : Permet de dfinir une contrainte particulire sur une ou plusieurs colonnes, spcifie la fin dune instruction CREATE TABLE : , [CONSTRAINT <nom_contrainte>] Type_contrainte(COLONNE1, COLONNE2, ), Il existe 5 types de contraintes : NOT NULL, CHECK, PRIMARY KEY, UNIQUE, FOREIGN KEY. Exemple : CREATE TABLE UTILISATEUR ( NO_UTILISATEUR NUMBER(6) CONSTRAINT UTILISATEUR_PK PRIMARY KEY 4

CONSTRAINT UTILISATEUR_NO_UTILISATEUR_NN NOT NULL, NOM_PRENOM VARCHAR2(20) CONSTRAINT UTILISATEUR_NOM_PRENOM_NN NOT NULL, DATE_CREATION DATE DEFAULT SYSDATE NOT NULL, DATE_MISEAJOUR DATE DEFAULT SYSDATE NOT NULL, CONNECTIONS NUMBER(6) CONSTRAINT UTILISATEUR_CONNECTIONS_CK CHECK (CONNECTIONS BETWEEN 1 AND 10), CONSTRAINT UTILISATEUR_DATE_MISEAJOUR_CK CHECK (DATE_CREATION <= DATE_MISEAJOUR) ); * La commande CHECK La commande CHECK (condition) permet dexprimer une contrainte consistant restreindre un attribut un ensemble de valeurs. Exemple simple : on restreint les valeurs possibles des attributs capacit et climatise dans la table Salle. CREATE TABLE Salle (nomCinema VARCHAR (30) NOT NULLL, no INTEGER, capacite INTEGER CONSTRAINT Salle_capacite_ck CHECK (capacite < 300), climatisee CHAR(1) CONSTRAINT Salle_climatisee_ck CHECK (climatisee IN (O,N)), PRIMARY KEY (nomCinema, no), FOREIGN KEY nomCinema REFERENCES Cinema); Il sagit de contraintes portant sur des valeurs dattributs. A chaque insertion dun tuple, ou mise--jour de ce tuple affectant un des attributs contraints, le contrle sera effectu. La rgle est que la condition ne doit pas svaluer FALSE (donc la valeur UNKNOWN est accepte). Au lieu dassocier une contrainte un attribut particulier, on peut la dfinir globalement. Dans ce cas la contrainte peut faire rfrence nimporte quel attribut de la table et est teste tuple tuple. Exemple : toute salle de plus de 300 places doit tre climatise : CREATE TABLE Salle (nomCinema VARCHAR (30) NOT NULLL, no INTEGER, capacit INTEGER, climatise CHAR(1), PRIMARY KEY (nomCinema, no), FOREIGN KEY nomCinema REFERENCES Cinema, CHECK (capacit<300 OR Climatise = O));

2. Les vues
Une des fonctionnalits les plus remarquables des SGBD relationnels est : les vues. Comme nous lavons vu dans la partie consacre SQL, une requte produit toujours une relation. Cela suggre la possibilit dajouter au schma des tables virtuelles qui ne sont rien dautres que le rsultat de requtes stockes. De telles tables sont nommes des vues dans la terminologie relationnelle. On peut interroger des vues comme des tables stockes. Une vue ninduit aucun stockage puisquelle nexiste pas physiquement. Seule sa description est stocke, sous la forme dune requte faisant intervenir des tables de la base ou dautres vues. * Cration et interrogation dune vue Une vue est tout point comparable une table : en particulier on peut linterroger par SQL. La grande diffrence est quune vue est le rsultat dune requte, avec la caractristique essentielle que ce rsultat est rvalu chaque fois que lon accde la vue. En dautres termes une vue est dynamique : elle donne une reprsentation fidle de la base au moment de lvaluation de la requte. Une vue est donc essentiellement une requte laquelle on a donn un nom. Les vues peuvent tre utilises pour : - Rpondre des besoins de confidentialit; - Matriser les mises jour en assurant des contrles de cohrence; 5

Offrir plus de commodits aux utilisateurs dans la manipulation des donnes, en ne leur prsentant de faon simplifie que le sous-ensemble de donnes quils ont manipuler; - Sauvegarder des requtes dans le dictionnaire de donnes. La syntaxe de cration dune vue est trs simple : CREATE [OR RELACE] [FORCE | NOFORCE] VIEW [SCHEMA.]<nom-vue> AS <requte> [WITH {CHECK OPTION [CONSTRAINT NOM_CONTRAINTE] | READ ONLY}]; - FORCE Cette clause permet la cration de la vue mme en prsence dune erreur, par exemple si la table nexiste pas ou si lutilisateur na pas les droits correspondants. - NOFORCE Cette clause ne permet pas la cration de la vue en prsence dune erreur. Cest loption par dfaut. - CHECK OPTION Cette clause permet de vrifier que les mises jour ou les insertions ne produisent que des lignes qui feront partie de la slection de la vue. - READ ONLY Cette clause interdit toute modification de donnes en utilisant le nom de la vue dans un ordre INSERT, UPDATE ou DELETE. Exemple : on peut crer une vue qui ne contient que les cinmas tunisois : CREATE VIEW TunisCinemas AS SELECT * FROM Cinema WHERE ville = Tunis; On peut aussi en profiter pour restreindre la vision des cinmas tunisois leur nom et leur nombre de salles. CREATE VIEW SimpleTunisCinemas AS SELECT nom, COUNT(*) AS nbSalles FROM Cinema c, Salle s WHERE ville = Tunis AND c.nom = s.nomCinema GROUP BY c.nom Enfin un des intrts des vues est de donner une reprsentation dnormalise de la base, en regroupant des informations par des jointures. Par exemple on peut crer une vue Casting donnant explicitement les titres des films, leur anne et les noms et prnoms des acteurs. CREATE VIEW Casting (film, annee, acteur, prenom) AS SELECT titre, annee, nom, prenom FROM Film f, Role r, Artiste a WHERE f.idFilm = r.idFilm AND r.idActeur = a.idArtiste; Remarque : on peut donner explicitement des noms dattributs au lieu dutiliser les attributs de la clause SELECT. Maintenant, on peut utiliser les vues et les tables dans des requtes SQL. Par exemple la requte Quels acteurs ont tourn un film en 2004 sexprime par : SELECT acteur, prenom FROM Casting WHERE annee = 2004; On peut ensuite donner des droits en lecture sur cette vue pour que cette information limite soit disponible tous : GRANT SELECT ON Casting TO PUBLIC * Mise jour dune vue Lide de modifier une vue peut sembler trange puisquune vue na pas de contenu. En fait il sagit bien entendu de modifier la table qui sert de support la vue. Il existe de svres restrictions sur les droits dinsrer ou de mettre--jour des tables travers les vues. Un exemple suffit pour comprendre le problme. Imaginons que lon souhaite insrer une ligne dans la vue Casting. INSERT INTO CASTING (film, annee, acteur, prenom) VALUES (Titanic, 1998, DiCaprio, Leonardo); Cet ordre sadresse une vue issue de trois tables. Il ny a clairement pas assez dinformation pour alimenter ces tables de manire cohrente, et linsertion nest pas possible (de mme que toute mise jour). De telles vues sont dites non modifiables. 6

Les rgles dfinissant les vues modifiables sont trs strictes. 1. La vue doit tre base sur une seule table . 2. Toute colonne non rfrence dans la vue doit pouvoir tre mise NULL ou disposer dune valeur par dfaut; 3. On ne peut pas mettre--jour un attribut qui rsulte dun calcul ou dune opration; 4. Lordre SELECT utilis pour dfinir la vue ne doit comporter ni jointure , ni clause GROUP BY, CONNECT BY ou START WITH. Il est donc tout fait possible dinsrer, modifier ou dtruire la table Cinema au travers de la vue TunisCinema. INSERT INTO TunisCinema VALUES (Hannibal, 12, Assad Ibn Fourat, Kairouan) En revanche, il nest pas possible dinsrer dans SimpleTunisCinemas (prsence de Count(*). Linsertion prcdente illustre une petite subtilit : on peut insrer dans une vue, sans tre en mesure de voir la ligne insre au travers de la vue par la suite ! Afin dviter ce genre dincohrence, SQL2 propose loption WITH CHECK OPTION qui permet de garantir que toute ligne insre dans la vue satisfait les critres de slection de la vue. CREATE VIEW TunisCinemas AS SELECT * FROM Cinema WHERE ville = Tunis WITH CHECK OPTION; Linsertion donne en exemple ci-dessus devient impossible. De mme, la clause WITH CHECK OPTION interdit de modifier une ligne de telle sorte quavec les nouvelles valeurs, elle ne soit plus slectionne par la requte de dfinition de la vue. UPDATE TunisCinema SET VALUES VILLE = KAIROUAN WHERE numro = 12; Cette mise jour donne en exemple est aussi interdite. A partir de SQL*PLUS, vous pouvez afficher la structure dune vue : DESCRIBE TunisCinemas; On peut renommer une vue avec la syntaxe courante SQL : RENAME [SCHEMA.]ANCIEN_NOM TO [SCHEMA.]NOUVEAU_NOM; Enfin, on dtruit une vue avec la syntaxe courante SQL : DROP VIEW TunisCinemas;

3. Les index
Un index est une structure de base de donnes utilise par le serveur pour localiser rapidement une ligne dans une table. Pour permettre Oracle de localiser les donnes dune table, chaque ligne se voit assigner un identifiant de ligne, appel ROWID , qui indique la base son emplacement. Oracle stocke ces entres dans des index de type arbre binaire, ce qui garantit un chemin daccs rapide aux valeurs de cl. Lorsquun index est utilis pour rpondre une requte, les entres qui correspondent aux critres spcifis sont recherches. Le ROWID associ aux entres trouves indique Oracle lemplacement physique des lignes recherches, ce qui rduit la charge dE/S ncessaire la localisation des donnes. Un index peut tre cr sur une ou plusieurs colonnes dune table. * Conseils pour la dfinition des index - Ne pas crer dindex pour des tables de petite taille. Le gain de vitesse de recherche nest pas suprieur au temps douverture et de recherche dans lindex. - Ne pas crer dindex sur des colonnes avec peu de valeurs diffrentes. Par exemple la colonne sexe ou situation familiale. - Ne pas crer dindex si la plupart de vos requtes ramnent plus de 5% des lignes. - Ne pas crer dindex sur une table frquemment mise jour. - En cas de slections frquentes effectues sur une colonne avec une condition unique, crer un index sur cette colonne. - En cas de jointures frquentes effectues entre deux colonnes de deux tables, crer un index sur cette colonne. Cependant il est recommand de ne pas abuser des index car : 7

- Les index utilisent de lespace disque supplmentaire; ceci est trs important lors des slections sur plusieurs tables avec des index importants car la mmoire centrale ncessaire sera galement accrue. - La modification des colonnes indexes dans la table entrane une ventuelle mise jour de lindex. De ce fait, les index alourdissent le processus de mise jour des valeurs dune table relationnelle. * Cration dindex La syntaxe de cration dun index est la suivante : CREATE [UNIQUE] INDEX [SCHEMA.]<nom-index> ON [SCHEMA.]<nom-table> (NOM_COLONNE1 [ASC|DESC] [, NOM_COLONNE2]); - ASC|DESC Spcifi si lindex devait tre cr dans un ordre croissant ou dcroissant. - UNIQUE Indique que la valeur de la colonne (ou des colonnes) sur laquelle lindex se base doit tre unique. * Remarque : Oracle cre automatiquement un index lorsquune clause de contrainte UNIQUE ou PRIMARY KEY est spcifie dans une commande CREATE TABLE.

4. Les squences
Les squences reprsentent un moyen trs efficace de gnrer des sries de numros squentiels uniques pouvant servir notamment de valeurs de cl primaire. Elles ne dpendent daucune table et sont places en mmoire dans lattente de requtes. Pour crer une squence, il faut respecter la syntaxe suivante : CREATE SEQUENCE [SCHEMA.]<nom-squence> [INCREMENT BY VALEUR] [START WITH VALEUR] [{MAXVALUE VALEUR | NOMAXVALUE}] [{MINVALUE VALEUR | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE VALEUR | NOCACHE}] - INCRMENT peut tre positif ou ngatif. - MAXVALUE Valeur limite hausse. - MINVALUE Valeur limite basse. - START WITH Valeur de dpart du numro de squence. Elle est par dfaut gale MINVALUE pour une squence ascendante et MAXVALUE pour une squence descendante. - CYCLE Lorsque le numro de squence atteint la valeur MAXVALUE, respectivement MINVALUE compte tenu du sens ascendant ou descendant de la gnration, il repart MINVALUE, respectivement MAXVALUE. - NOCYCLE Pas de reprise aprs MAXVALUE ou aprs MINVALUE. - CACHE Force lanticipation de la gnration des valeurs suivantes de la squence en mmoire. Il est possible de modifier certains paramtres dun gnrateur de numros de squence par la syntaxe : ALTER SEQUENCE [SCHEMA.]<nom-squence> [INCREMENT BY VALEUR] [START WITH VALEUR] [{MAXVALUE VALEUR | NOMAXVALUE}] [{MINVALUE VALEUR | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE VALEUR | NOCACHE}] Les nouvelles valeurs sont prises en compte pour la gnration de la premire valeur qui suit lexcution de lordre ALTER . Il est possible de supprimer une gnration de numros de squence par lordre : DROP SEQUENCE [SCHEMA.]<nom-squence> Une squence peut tre appele dans un ordre SELECT, INSERT ou UPDATE en tant que pseudo colonne, par : NOM_SEQUENCE.CURRVAL Donne la valeur actuelle de la squence. NOM_SEQUENCE.NEXTVAL Incrmente la squence et retourne la nouvelle valeur de la squence. La mme squence peut tre utilise simultanment par plusieurs utilisateurs. Les numros de squence gnrs tant uniques, il est alors possible que la suite des valeurs acquises par chaque utilisateur prsente des trous. SQL> CREATE SEQUENCE S_EMPLOYES START WITH 10; Squence cre. SQL> INSERT INTO EMPLOYES VALUES (S_EMPLOYES.NEXTVAL, BEN SALEH, ALI); 1 ligne cre. SQL> SELECT * FROM EMPLOYE WHERE NOM = BEN SALEH; NO_EMPLOYE NOM PRENOM 11 BEN SALEH ALI

5. Les synonymes
Un synonyme est tout simplement un autre nom pour une table, une vue, une squence ou une unit de programme. On emploie gnralement des synonymes dans les situations suivantes : - Pour dissimuler le nom du propritaire dun objet de base de donnes; - Pour masquer lemplacement dun objet de base de donnes dans un environnement distribu. - Pour pouvoir se rfrer un objet en utilisant un nom plus simple. Un synonyme peut tre priv ou public. Lorsquil est priv, il est accessible uniquement son propritaire ainsi quaux utilisateurs auxquels ce dernier a accord une permission. Lorsquil est public, il est disponible pour tous les utilisateurs de la base. Pour crer un synonyme, il faut respecter la syntaxe suivante : CREATE [PUBLIC] SYNONYM [SCHEMA.] NOM_SYNONYM FOR [SCHEMA.]NOM_OBJET; SQL> CREATE SYNONYME EMP FOR EMPLOYES; Synonyme cr. SQL> SELECT NO_EMPLOYE, NOM, PRENOM FROM EMP; NO_EMPLOYE NOM PRENOM 11 BEN SALEH ALI .. Oracle nimplante que partiellement la norme SQL2. Voici quelques diffrences importantes : La clause ON UPDATE de FOREIGN KEY Cl_trangre REFERENCES une_table nexiste pas. Par contre ON DELETE est implmente. La notion de schma se confond avec celle dutilisateur : toutes les tables (et les vues, contraintes, triggers, etc) crs par un mme utilisateur constituent un schma.

Vous aimerez peut-être aussi