La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

10 Copyright © 2004, Oracle. Tous droits réservés. Créer d'autres objets de schéma.

Présentations similaires


Présentation au sujet: "10 Copyright © 2004, Oracle. Tous droits réservés. Créer d'autres objets de schéma."— Transcription de la présentation:

1 10 Copyright © 2004, Oracle. Tous droits réservés. Créer d'autres objets de schéma

2 Copyright © 2004, Oracle. Tous droits réservés. Objectifs A la fin de ce chapitre, vous pourrez : créer des vues simples et complexes extraire des données à partir de vues créer, gérer et utiliser des séquences créer et gérer des index créer des synonymes privés et publics

3 Copyright © 2004, Oracle. Tous droits réservés. Objets de base de données ObjetDescription TableUnité de stockage de base ; constituée de lignes VueReprésentation logique de sous-ensembles de données d'une ou de plusieurs tables SéquenceGénère des valeurs numériques IndexAméliore les performances de certaines interrogations SynonymeAffecte d'autres noms aux objets

4 Copyright © 2004, Oracle. Tous droits réservés. Qu'est-ce qu'une vue ? Table EMPLOYEES

5 Copyright © 2004, Oracle. Tous droits réservés. Avantages des vues Restreindre l'accès aux données Simplifier les interrogations complexes Permettre l'indépendance des données Présenter les mêmes données sous différentes vues

6 Copyright © 2004, Oracle. Tous droits réservés. Vues simples et vues complexes FonctionnalitéVues simplesVues complexes Nombre de tablesUneUne ou plusieurs Contient des fonctionsNonOui Contient des groupes de données NonOui Opérations LMD par l'intermédiaire d'une vue OuiPas toujours

7 Copyright © 2004, Oracle. Tous droits réservés. Créer une vue Incluez une sous-interrogation dans l'instruction CREATE VIEW : La sous-interrogation peut contenir une syntaxe SELECT complexe. CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY [CONSTRAINT constraint]];

8 Copyright © 2004, Oracle. Tous droits réservés. Créer une vue Créer la vue EMPVU80, qui contient les informations relatives aux employés du département 80 : Décrire la structure de la vue à l'aide de la commande i SQL*Plus DESCRIBE : DESCRIBE empvu80 CREATE VIEW empvu80 AS SELECT employee_id, last_name, salary FROM employees WHERE department_id = 80; View created.

9 Copyright © 2004, Oracle. Tous droits réservés. Créer une vue Créer une vue à l'aide d'alias de colonne dans la sous-interrogation : Sélectionner les colonnes de cette vue par les noms d'alias indiqués : CREATE VIEW salvu50 AS SELECT employee_id ID_NUMBER, last_name NAME, salary*12 ANN_SALARY FROM employees WHERE department_id = 50; View created.

10 Copyright © 2004, Oracle. Tous droits réservés. SELECT * FROM salvu50; Extraire des données d'une vue

11 Copyright © 2004, Oracle. Tous droits réservés. Modifier une vue Modifiez la vue EMPVU80 en utilisant une clause CREATE OR REPLACE VIEW. Ajoutez un alias pour chaque nom de colonne : Les alias de colonne dans la clause CREATE OR REPLACE VIEW sont répertoriés dans le même ordre que les colonnes de la sous-interrogation. CREATE OR REPLACE VIEW empvu80 (id_number, name, sal, department_id) AS SELECT employee_id, first_name || ' ' || last_name, salary, department_id FROM employees WHERE department_id = 80; View created.

12 Copyright © 2004, Oracle. Tous droits réservés. Créer une vue complexe Créez une vue complexe contenant des fonctions de groupe pour afficher les valeurs de deux tables : CREATE VIEWdept_sum_vu (name, minsal, maxsal, avgsal) AS SELECT d.department_name, MIN(e.salary), MAX(e.salary),AVG(e.salary) FROM employees e, departments d WHERE e.department_id = d.department_id GROUP BY d.department_name; View created.

13 Copyright © 2004, Oracle. Tous droits réservés. Règles concernant les opérations LMD sur une vue Vous pouvez généralement effectuer des opérations LMD sur des vues simples. Vous ne pouvez pas supprimer une ligne si la vue contient les éléments suivants : –Des fonctions de groupe –Une clause GROUP BY –Le mot-clé DISTINCT –Le mot-clé ROWNUM de pseudo-colonne

14 Copyright © 2004, Oracle. Tous droits réservés. Règles concernant les opérations LMD sur une vue Vous ne pouvez pas modifier les données d'une vue si cette vue contient : Des fonctions de groupe Une clause GROUP BY Le mot-clé DISTINCT Le mot-clé ROWNUM de pseudo-colonne Des colonnes définies par des expressions

15 Copyright © 2004, Oracle. Tous droits réservés. Règles concernant les opérations LMD sur une vue Vous ne pouvez pas ajouter de données par l'intermédiaire d'une vue si celle-ci comporte : Des fonctions de groupe Une clause GROUP BY Le mot-clé DISTINCT Le mot-clé ROWNUM de pseudo-colonne Des colonnes définies par des expressions Des colonnes NOT NULL dans les tables de base, qui ne sont pas sélectionnées par la vue

16 Copyright © 2004, Oracle. Tous droits réservés. Utiliser la clause WITH CHECK OPTION Vous pouvez garantir que les opérations LMD effectuées sur la vue restent dans le domaine de la vue, à l'aide de la clause WITH CHECK OPTION : Toute tentative de modification du numéro de département d'une ligne quelconque de la vue échoue, car elle transgresse la contrainte WITH CHECK OPTION. CREATE OR REPLACE VIEW empvu20 AS SELECT* FROM employees WHERE department_id = 20 WITH CHECK OPTION CONSTRAINT empvu20_ck ; View created.

17 Copyright © 2004, Oracle. Tous droits réservés. Empêcher les opérations LMD Vous pouvez garantir qu'aucune opération LMD n'est effectuée en ajoutant l'option WITH READ ONLY à la définition de la vue. Toute tentative d'effectuer une opération LMD sur une ligne quelconque de la vue entraîne la génération d'une erreur par le serveur Oracle.

18 Copyright © 2004, Oracle. Tous droits réservés. CREATE OR REPLACE VIEW empvu10 (employee_number, employee_name, job_title) AS SELECTemployee_id, last_name, job_id FROM employees WHERE department_id = 10 WITH READ ONLY ; View created. Empêcher les opérations LMD

19 Copyright © 2004, Oracle. Tous droits réservés. Supprimer une vue Vous pouvez supprimer une vue sans perdre de données, car une vue est basée sur les tables sous- jacentes de la base. DROP VIEW view; DROP VIEW empvu80; View dropped.

20 Copyright © 2004, Oracle. Tous droits réservés. Exercice 10 : présentation de la partie 1 Cet exercice porte sur les points suivants : créer une vue simple créer une vue complexe créer une vue avec une contrainte CHECK tenter de modifier des données d'une vue supprimer des vues

21 Copyright © 2004, Oracle. Tous droits réservés. Séquences ObjetDescription TableUnité de stockage de base ; constituée de lignes VueReprésente de façon logique des sous-ensembles de données d'une ou plusieurs tables SéquenceGénère des valeurs numériques IndexAméliore les performances de certaines interrogations SynonymeAffecte d'autres noms aux objets

22 Copyright © 2004, Oracle. Tous droits réservés. Séquences Une séquence : Permet de générer automatiquement des nombres uniques Est un objet pouvant être partagé Peut être utilisée pour créer une valeur de clé primaire Remplace le code de l'application Permet un accès plus rapide aux valeurs lorsqu'elle est placée en mémoire cache 1 24 35 68 7 10 9

23 Copyright © 2004, Oracle. Tous droits réservés. Instruction CREATE SEQUENCE : syntaxe Définir une séquence pour générer automatiquement des nombres séquentiels : CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}];

24 Copyright © 2004, Oracle. Tous droits réservés. Créer une séquence Créez une séquence nommée DEPT_DEPTID_SEQ à utiliser comme clé primaire dans la table DEPARTMENTS. N'utilisez pas l'option CYCLE. CREATE SEQUENCE dept_deptid_seq INCREMENT BY 10 START WITH 120 MAXVALUE 9999 NOCACHE NOCYCLE; Sequence created.

25 Copyright © 2004, Oracle. Tous droits réservés. Pseudo-colonnes NEXTVAL et CURRVAL NEXTVAL renvoie la prochaine valeur de la séquence. Elle renvoie une valeur unique chaque fois qu'elle est référencée, même pour des utilisateurs différents. CURRVAL renvoie la valeur actuelle de la séquence. La pseudo-colonne NEXTVAL doit être utilisée pour que CURRVAL contienne une valeur.

26 Copyright © 2004, Oracle. Tous droits réservés.

27 Utiliser une séquence Insérer un nouveau département nommé "Support" dans l'emplacement dont l'ID est 2500 : Afficher la valeur actuelle de la séquence DEPT_DEPTID_SEQ : INSERT INTO departments(department_id, department_name, location_id) VALUES (dept_deptid_seq.NEXTVAL, 'Support', 2500); 1 row created. SELECTdept_deptid_seq.CURRVAL FROMdual;

28 Copyright © 2004, Oracle. Tous droits réservés. Mettre en mémoire cache les valeurs d'une séquence La mise en mémoire cache des valeurs d'une séquence permet un accès plus rapide à ces valeurs. Des trous peuvent apparaître dans les valeurs de la séquence dans les cas suivants : –Une annulation se produit –Le système connaît une défaillance –Une séquence est utilisée dans une autre table

29 Copyright © 2004, Oracle. Tous droits réservés. Modifier une séquence Modifier la valeur de l'incrément, la valeur maximale, la valeur minimale, l'option de recyclage ou l'option de mise en mémoire cache : ALTER SEQUENCE dept_deptid_seq INCREMENT BY 20 MAXVALUE 999999 NOCACHE NOCYCLE; Sequence altered.

30 Copyright © 2004, Oracle. Tous droits réservés. Règles de modification d'une séquence Vous devez être propriétaire de la séquence ou posséder le privilège ALTER pour la séquence. Seuls les numéros de séquence ultérieurs sont affectés. La séquence doit être supprimée et recréée pour permettre le redémarrage de la séquence à un numéro différent. Une validation est effectuée. Pour supprimer une séquence, utilisez l'instruction DROP : DROP SEQUENCE dept_deptid_seq; Sequence dropped.

31 Copyright © 2004, Oracle. Tous droits réservés. Index ObjetDescription TableUnité de stockage de base ; constituée de lignes VueReprésente de façon logique des sous-ensembles de données d'une ou plusieurs tables SéquenceGénère des valeurs numériques IndexAméliore les performances de certaines interrogations SynonymeAffecte d'autres noms aux objets

32 Copyright © 2004, Oracle. Tous droits réservés. Index Un index : Est un objet de schéma Est utilisé par le serveur Oracle pour accélérer l'extraction de lignes à l'aide d'un pointeur Peut réduire les E/S disque à l'aide d'une méthode d'accès permettant de localiser les données rapidement Est indépendant de la table indexée Est utilisé et géré automatiquement par le serveur Oracle

33 Copyright © 2004, Oracle. Tous droits réservés. Comment les index sont-ils créés ? Automatiquement : un index unique est créé automatiquement lorsque vous incluez une contrainte PRIMARY KEY ou UNIQUE dans la définition d'une table. Manuellement : les utilisateurs peuvent créer des index non-uniques sur des colonnes afin d'accélérer l'accès aux lignes.

34 Copyright © 2004, Oracle. Tous droits réservés. Créer un index Créer un index sur une ou plusieurs colonnes : Accélérer l'accès des interrogations à la colonne LAST_NAME de la table EMPLOYEES : CREATE INDEX emp_last_name_idx ON employees(last_name); Index created. CREATE INDEX index ON table (column[, column]...);

35 Copyright © 2004, Oracle. Tous droits réservés. Règles de création des index Créez un index dans les cas suivants :  Une colonne contient un large éventail de valeurs  Une colonne contient un grand nombre de valeurs NULL  Une ou plusieurs colonnes sont fréquemment utilisées ensemble dans une clause WHERE ou une condition de jointure  La table est volumineuse et la plupart des interrogations doivent extraire moins de 2 à 4 % des lignes de la table Ne créez pas d'index dans les cas suivants :  Les colonnes ne sont pas souvent utilisées comme condition dans l'interrogation  La table est petite ou la plupart des interrogations doivent extraire plus de 2 à 4 % des lignes de la table  La table est mise à jour fréquemment  Les colonnes indexées sont référencées dans le cadre d'une expression

36 Copyright © 2004, Oracle. Tous droits réservés. Supprimer un index Supprimer un index du dictionnaire de données à l'aide de la commande DROP INDEX : Supprimer l'index UPPER_LAST_NAME_IDX du dictionnaire de données : Pour supprimer un index, vous devez en être le propriétaire ou posséder le privilège DROP ANY INDEX. DROP INDEX emp_last_name_idx; Index dropped. DROP INDEX index;

37 Copyright © 2004, Oracle. Tous droits réservés. Synonymes ObjetDescription TableUnité de stockage de base ; constituée de lignes VueReprésente de façon logique des sous-ensembles de données d'une ou plusieurs tables SéquenceGénère des valeurs numériques IndexAméliore les performances de certaines interrogations SynonymeAffecte d'autres noms aux objets

38 Copyright © 2004, Oracle. Tous droits réservés. Synonymes Simplifiez l'accès aux objets en créant un synonyme (un autre nom pour un objet). Grâce aux synonymes, vous pouvez : Créer une référence plus simple à une table appartenant à un autre utilisateur Raccourcir le nom des objets CREATE [PUBLIC] SYNONYM synonym FOR object;

39 Copyright © 2004, Oracle. Tous droits réservés. Créer et supprimer des synonymes Créer un nom abrégé pour la vue DEPT_SUM_VU : Supprimer un synonyme : CREATE SYNONYM d_sum FOR dept_sum_vu; Synonym Created. DROP SYNONYM d_sum; Synonym dropped.

40 Copyright © 2004, Oracle. Tous droits réservés. Synthèse Ce chapitre vous a permis d'apprendre à : créer, utiliser et supprimer des vues générer automatiquement des numéros de séquence à l'aide d'un générateur de numéros de séquence créer des index afin d'accélérer l'extraction par les interrogations utiliser des synonymes pour affecter des noms alternatifs aux objets

41 Copyright © 2004, Oracle. Tous droits réservés. Exercice 10 : présentation de la partie 2 Cet exercice porte sur les points suivants : créer des séquences utiliser des séquences créer des index non-uniques créer des synonymes

42 Copyright © 2004, Oracle. Tous droits réservés.

43

44


Télécharger ppt "10 Copyright © 2004, Oracle. Tous droits réservés. Créer d'autres objets de schéma."

Présentations similaires


Annonces Google