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

T ECHNOLOGIES O RACLE Création et gestion des objets © sebvita.com.

Présentations similaires


Présentation au sujet: "T ECHNOLOGIES O RACLE Création et gestion des objets © sebvita.com."— Transcription de la présentation:

1 T ECHNOLOGIES O RACLE Création et gestion des objets © sebvita.com

2 Objectifs En suivant ce cours, vous serez capable : De classer les principaux objets de bases de données De gérer la structure dune table De créer des vues simples ou complexes © sebvita.com

3 Création de tables © sebvita.com

4 Objets de base Objet Description Table Unité de stockage basique, composée de lignes View Représentation logique des données dune ou plusieurs tables Génère des valeurs numériques Sequence Index Améliore les performances de certaines requêtes Synonym Donne des noms alternatifs aux objets © sebvita.com

5 Types de données Type Description VARCHAR2(size) Chaîne de caractères de longueur variable CHAR(size) NUMBER(p,s) DATE LONG CLOB Chaîne de caractères de longueur fixe Données numériques de longueur variable Date et temps Chaîne de caractères (jusquà 2 GB) Chaîne de caractères (jusquà 4 GB) © sebvita.com

6 Types de données Type Description RAW et LONG RAW Données binaires BLOB BFILE ROWID Données binaires (jusquà 4 GB) Données binaires stockées dans un fichier externe (jusquà 4 GB) Système numérique de base 64 identifiant de manière unique une ligne © sebvita.com

7 Types de données temporels Type Description TIMESTAMP De longueur variable INTERVAL YEAR TO MONTH INTERVAL DAY TO SECOND Stocké en tant quinterval dannées et de mois Stocké en tant quinterval de jours, heures, minutes et secondes © sebvita.com

8 Types de données temporels Le type TIMESTAMP est une extension du type DATE Il stocke les années, mois, jour de DATE ainsi que les heures, minutes, secondes et fractions de secondes Il est possible de préciser un décalage horaire TIMESTAMP[(fractional_seconds_precision)] WITH TIME ZONE TIMESTAMP[(fractional_seconds_precision)] WITH LOCAL TIME ZONE © sebvita.com

9 Types de données temporels Le type INTERVAL YEAR TO MONTH Le type INTERVAL DAY TO SECOND INTERVAL YEAR [(year_precision)] TO MONTH INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)] © sebvita.com

10 Règles de nommage Les noms de tables ou colonnes : – Commencent par une lettre – Font 1 à 30 caractères – Contiennent A-Z, a-z, 0-9, _, $, # – Sont uniques dans le schéma – Ne sont pas des noms réservés à Oracle © sebvita.com

11 Lordre CREATE TABLE Vous devez avoir : – Le privilège CREATE TABLE – Un espace de stockage Vous choisissez : – Un nom de table – Le nom des colonnes, leur type et leur taille CREATE TABLE [schema.]table (column datatype [DEFAULT expr][,...]); © sebvita.com

12 Tables dautres utilisateurs Les tables des autres utilisateurs ne sont pas dans notre propre schéma Utiliser le nom dutilisateur en préfixe USER AUSER B SELECT * FROM userB.employees; SELECT * FROM userA.employees; © sebvita.com

13 Option DEFAULT Choisir une valeur par défaut pour une colonne Valeurs littérales, expressions ou fonctions SQL Pas le nom dune autre colonne ou pseudocolonne Le type de données doit correspondre à la colonne... hire_date DATE DEFAULT SYSDATE,... CREATE TABLE hire_dates (id NUMBER(8), hire_date DATE DEFAULT SYSDATE ); Table created. © sebvita.com

14 Créer une table CREATE TABLE dept (deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13), create_date DATE DEFAULT SYSDATE ); DESCRIBE dept Table created. Exemple © sebvita.com

15 Modifier une table Utiliser lordre ALTER TABLE pour : – Ajouter une colonne – Modifier une colonne existante – Définir une valeur par défaut – Supprimer une colonne © sebvita.com

16 Supprimer une table Toutes les données et la structure sont supprimées Les transactions sont validées Les index sont supprimés Les contraintes sont supprimées Pas de ROLLBACK possible DROP TABLE dept80; Table dropped. © sebvita.com

17 Utiliser une sous-requête Syntaxe Faire correspondre le nombre et le type des colonnes si spécifiées CREATE TABLE table [(column, column...)] AS subquery; © sebvita.com

18 Utiliser une sous-requête DESCRIBE dept80 CREATE TABLE dept80 AS SELECT employee_id, last_name, salary*12 ANNSAL, hire_date FROM employees WHERE department_id = 80; Table created. © sebvita.com

19 Contraintes : présentation Ajoute des règles sur la table Évite les suppressions en cas de dépendances Types de contraintes : – NOT NULL – UNIQUE – PRIMARY KEY – FOREIGN KEY – CHECK © sebvita.com

20 Contraintes : présentation Vous pouvez les nommer ; sinon Oracle les nomme SYS_Cn Création de la contrainte – À la création de la table – Après la création de la table – Au niveau dune colonne – Au niveau de la table Contraintes visibles dans le dictionnaire de données © sebvita.com

21 Définir une contrainte Syntaxe Au niveau de la colonne Au niveau de la table CREATE TABLE [schema.]table (column datatype [DEFAULT expr] [column_constraint],... [table_constraint][,...]); column [CONSTRAINT constraint_name] constraint_type, column,... [CONSTRAINT constraint_name] constraint_type (column,...), © sebvita.com

22 Définir une contrainte Exemples : CREATE TABLE employees( employee_id NUMBER(6) CONSTRAINT emp_emp_id_pk PRIMARY KEY, first_name VARCHAR2(20),...); CREATE TABLE employees( employee_id NUMBER(6), first_name VARCHAR2(20),... job_id VARCHAR2(10) NOT NULL, CONSTRAINT emp_emp_id_pk PRIMARY KEY (EMPLOYEE_ID)); © sebvita.com

23 NOT NULL Permet dinterdire les valeurs nulles Contrainte NOT NULL (Valeurs nulles impossibles) … 20 rows selected Contrainte NOT NULL Absence de contrainte NOT NULL (Valeurs nulles possibles) © sebvita.com

24 UNIQUE EMPLOYEES … Contrainte UNIQUE INSERT INTO Non autorisé : la valeur existe déjà Possible © sebvita.com

25 UNIQUE Définie au niveau de la table ou de la colonne CREATE TABLE employees( employee_id NUMBER(6), last_name VARCHAR2(25) NOT NULL, email VARCHAR2(25), salary NUMBER(8,2), commission_pct NUMBER(2,2), hire_date DATE NOT NULL,... CONSTRAINT emp_email_uk UNIQUE(email)); © sebvita.com

26 PRIMARY KEY DEPARTMENTS … PRIMARY KEY INSERT INTO Non autorisé : 50 existe déjà Non autorisé : valeur nulle © sebvita.com

27 FOREIGN KEY DEPARTMENTS … PRIMARY KEY INSERT INTO EMPLOYEES … FOREIGN KEY Autorisé Non autorisé : 9 nexiste pas © sebvita.com

28 FOREIGN KEY Définie au niveau de la table ou de la colonne CREATE TABLE employees( employee_id NUMBER(6), last_name VARCHAR2(25) NOT NULL, email VARCHAR2(25), salary NUMBER(8,2), commission_pct NUMBER(2,2), hire_date DATE NOT NULL,... department_id NUMBER(4), CONSTRAINT emp_dept_fk FOREIGN KEY(department_id) REFERENCES departments(department_id), CONSTRAINT emp_email_uk UNIQUE(email)); © sebvita.com

29 FOREIGN KEY FOREIGN KEY : Définie la colonne de la table enfant REFERENCES : Identifie la table et la colonnes parentes ON DELETE CASCADE : Supprime les lignes dépendantes lorsquune ligne de la table parent est supprimée ON DELETE SET NULL : Convertie les clés étrangères en valeurs nulles © sebvita.com

30 CHECK Définie une condition que chaque ligne doit respecter Les expressions suivantes ne sont pas autorisées : – Pseudocolonnes CURRVAL, NEXTVAL, LEVEL et ROWNUM – Appels aux fonctions SYSDATE, UID, USER et USERENV – Requêtes..., salary NUMBER(2) CONSTRAINT emp_salary_min CHECK (salary > 0),... © sebvita.com

31 Exemple CREATE TABLE employees (employee_id NUMBER(6) CONSTRAINT emp_employee_id PRIMARY KEY, first_name VARCHAR2(20), last_name VARCHAR2(25) CONSTRAINT emp_last_name_nn NOT NULL, email VARCHAR2(25) CONSTRAINT emp_email_nn NOT NULL CONSTRAINT emp_email_uk UNIQUE, phone_number VARCHAR2(20), hire_date DATE CONSTRAINT emp_hire_date_nn NOT NULL, job_id VARCHAR2(10) CONSTRAINT emp_job_nn NOT NULL, salary NUMBER(8,2) CONSTRAINT emp_salary_ck CHECK (salary>0), commission_pct NUMBER(2,2), manager_id NUMBER(6), department_id NUMBER(4) CONSTRAINT emp_dept_fk REFERENCES departments(department_id)); © sebvita.com

32 Violation de contraintes UPDATE employees SET department_id = 55 WHERE department_id = 110; Le département 55 nexiste pas. UPDATE employees * ERROR at line 1: ORA-02291: integrity constraint (HR.EMP_DEPT_FK) violated - parent key not found © sebvita.com

33 Violation de contraintes Une ligne ayant une clé primaire utilisée dans une autre table en tant que clé étrangère ne peut être supprimée. DELETE FROM departments WHERE department_id = 60; DELETE FROM departments * ERROR at line 1: ORA-02292: integrity constraint (HR.EMP_DEPT_FK) violated - child record found © sebvita.com

34 V OUS AVEZ DES QUESTIONS ?

35 Création de tables © sebvita.com

36 Création dautres objets © sebvita.com

37 Les vues © sebvita.com

38 Avantages dune vue Restreindre laccès aux données Fournir lindépendance des données Simplifier certaines requêtes Présenter les mêmes données sous plusieurs formes © sebvita.com

39 Vues simples ou complexes Désignation Nombre de tables Contient des fonctions Contient des groupes Possibilité de faire des DML Vues simples Une Non Oui Vues complexes Une ou plus Oui Pas toujours © sebvita.com

40 Créer une vue Avec une sous-requête dans le CREATE VIEW La sous-requête peut-être complexe CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY [CONSTRAINT constraint]]; © sebvita.com

41 Créer une vue Créer une vue EMPVU80 qui contient des détails des employés du département 80 Décrire la structure de la vue CREATE VIEW empvu80 AS SELECT employee_id, last_name, salary FROM employees WHERE department_id = 80; DESCRIBE empvu80 View created. © sebvita.com

42 Créer une vue Créer une vue avec des alias de colonnes CREATE VIEW salvu50 AS SELECT employee_id ID_NUMBER, last_name NAME, salary*12 ANN_SALARY FROM employees WHERE department_id = 50; View created. © sebvita.com

43 Récupérer les données Sélectionner les colonnes de la vue SELECT * FROM salvu50; © sebvita.com

44 Modifier une vue Modifier EMPVU80 avec lordre CREATE OR REPLACE VIEW Les alias de colonnes sont dans le même ordre que les colonnes dans la sous-requête 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. © sebvita.com

45 Créer une vue complexe Créer une vue complexe avec des fonctions de groupe et une jointure CREATE OR REPLACE VIEW dept_sum_vu (name, minsal, maxsal, avgsal) AS SELECT d.department_name, MIN(e.salary), MAX(e.salary),AVG(e.salary) FROM employees e JOIN departments d ON (e.department_id = d.department_id) GROUP BY d.department_name; View created. © sebvita.com

46 DML sur les vues DML généralement possible sur les vues simples Impossible de supprimer une ligne dune vue si – Fonction de groupe – Clause GROUP BY – Mot clé DISTINCT – Pseudocolonne ROWNUM © sebvita.com

47 DML sur les vues Impossible de modifier une ligne dune vue si – Fonction de groupe – Clause GROUP BY – Mot clé DISTINCT – Pseudocolonne ROWNUM – Colonne définie par une expression © sebvita.com

48 DML sur les vues Impossible dajouter une ligne à une vue si – Fonction de groupe – Clause GROUP BY – Mot clé DISTINCT – Pseudocolonne ROWNUM – Colonne définie par une expression – Colonne NOT NULL dans les tables, non présente dans la vue © sebvita.com

49 Clause WITH CHECK OPTION Pour sassurer que les DML réalisés sur la vue restent sur le domaine de la vue Impossible de changer le numéro de département à travers la vue CREATE OR REPLACE VIEW empvu20 AS SELECT * FROM employees WHERE department_id = 20 WITH CHECK OPTION CONSTRAINT empvu20_ck ; View created. © sebvita.com

50 Interdire les DML Possibilité dajouter loption WITH READ ONLY Toute tentative de DML sur la vue retournera une erreur CREATE OR REPLACE VIEW empvu10 (employee_number, employee_name, job_title) AS SELECT employee_id, last_name, job_id FROM employees WHERE department_id = 10 WITH READ ONLY ; View created. © sebvita.com

51 Supprimer une vue Supprimer une vue ne supprime aucune données DROP VIEW view; DROP VIEW empvu80; View dropped. © sebvita.com

52 Les séquences Génère des suites de nombres Est partageable entre objets Peut servir à générer une clé primaire Évite lutilisation de code dans lapplication Permet lutilisation du cache © sebvita.com

53 Ordre CREATE SEQUENCE Syntaxe CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}]; © sebvita.com

54 Créer une séquence Créer une séquence DEPT_DEPTID_SEQ pour générer la clé primaire de la table Ne pas utiliser loption CYCLE CREATE SEQUENCE dept_deptid_seq INCREMENT BY 10 START WITH 120 MAXVALUE 9999 NOCACHE NOCYCLE; Sequence created. © sebvita.com

55 Pseudocolonnes NEXTVAL retourne la valeur suivante dune séquence. La valeur est unique même si utilisée par différents utilisateurs. CURRVAL retourne la valeur courante. © sebvita.com

56 Utiliser une séquence Insérer un nouveau département « Support » Voir la valeur courante de la séquence INSERT INTO departments(department_id, department_name, location_id) VALUES (dept_deptid_seq.NEXTVAL, 'Support', 2500); SELECT dept_deptid_seq.CURRVAL FROM dual; 1 row created. © sebvita.com

57 Mettre en cache Mettre les valeurs en cache permet un accès plus rapide Des « trous » dans les séquences peuvent arriver lorsque : – Un rollback est utilisé – Le système plante – La séquence est utilisée pour plusieurs tables © sebvita.com

58 Modifier une séquence Syntaxe ALTER SEQUENCE dept_deptid_seq INCREMENT BY 20 MAXVALUE 999999 NOCACHE NOCYCLE; Sequence altered. © sebvita.com

59 Modifier une séquence Obligation dêtre propriétaire ou avoir le privilège ALTER sur la séquence Seules les futures valeurs de la séquence sont affectées La séquence doit être supprimée puis recréée pour changer la valeur de départ Pour supprimer une séquence : DROP SEQUENCE dept_deptid_seq; Sequence dropped. © sebvita.com

60 Les index Un index – Est un objet du schéma – Permet daccélérer certaines requêtes avec un pointeur – Réduit les I/O sur le disque avec un accès direct aux données – Est indépendant de la table – Est utilisé et maintenu automatiquement par le serveur Oracle © sebvita.com

61 Création des index Automatiquement : lors de la définition dune clé primaire ou dune clé unique Manuellement : les utilisateurs peuvent créer des index judicieusement © sebvita.com

62 Créer un index Créer un index sur une ou plusieurs colonnes Améliorer la vitesse daccès à la colonne LAST_NAME de la table EMPLOYEES CREATE INDEX index ON table (column[, column]...); CREATE INDEX emp_last_name_idx ON employees(last_name); Index created. © sebvita.com

63 Règles sur les index Créer un index lorsque… Une colonne contient beaucoup de valeurs différentes Une colonne contient beaucoup de valeurs nulles Une ou plusieurs colonnes sont souvent utilisées ensemble dans une clause WHERE ou une jointure La table est importante et les requêtes sont supposées impacter moins de 2 à 4 % des lignes © sebvita.com

64 Règles sur les index Ne pas créer dindex lorsque… La colonne nest pas souvent utilisée comme condition dans une requête La table est petite ou les requêtes retournent plus de 2 à 4 % des lignes La table est mise à jour très fréquemment Les colonnes sont utilisées comme expression X X X X © sebvita.com

65 Supprimer un index Syntaxe Supprimer lindex UPPER_LAST_NAME_IDX Pour supprimer un index, vous devez en être propriétaire ou avoir le privilège DROP ANY INDEX DROP INDEX index; DROP INDEX emp_last_name_idx; Index dropped. © sebvita.com

66 Les synonymes Simplifie laccès à certains objets en leur donnant un synonyme. CREATE [PUBLIC] SYNONYM synonym FOR object; © sebvita.com

67 Les synonymes Créer un nom plus court pour la vue DEPT_SUM_VU Supprimer un synonyme CREATE SYNONYM d_sum FOR dept_sum_vu; DROP SYNONYM d_sum; Synonym created. Synonym dropped. © sebvita.com

68 Le dictionnaire de données Tables contenant les données : EMPLOYEES DEPARTMENTS LOCATIONS JOB_HISTORY … Vues du dictionnaire de données : DICTIONARY USER_OBJECTS USER_TABLES USER_TAB_COLUMNS … © sebvita.com

69 Structure du dictionnaire Consiste en : des tables de base des vues © sebvita.com

70 Convention de nommage Préfixe Utilisation USER Ce qui est dans votre schéma, vous appartient ALL DBA V$ Ce à quoi vous pouvez accéder Tous les objets (réservées aux DBA) Données de performance © sebvita.com

71 Le dictionnaire de données Commencez avec la vue DICTIONARY Exemple DESCRIBE DICTIONARY SELECT * FROM dictionary WHERE table_name = 'USER_OBJECTS'; © sebvita.com

72 Le dictionnaire de données USER_OBJECTS – Tous les objets appartenant à lutilisateur – Permet dobtenir les noms, types ainsi que : Date création Date de dernière modification Statut (valide ou non) ALL_OBJECTS – Tous les objets auxquels lutilisateur a accès Les vues USER_OBJECTS et ALL_OBJECTS © sebvita.com

73 Le dictionnaire de données La vue USER_OBJECTS SELECT object_name, object_type, created, status FROM user_objects ORDER BY object_type; … © sebvita.com

74 Le dictionnaire de données La vue USER_TABLES DESCRIBE user_tables SELECT table_name FROM user_tables; … © sebvita.com

75 Le dictionnaire de données Les informations sur les colonnes DESCRIBE user_tab_columns … © sebvita.com

76 Le dictionnaire de données Les informations sur les colonnes SELECT column_name, data_type, data_length, data_precision, data_scale, nullable FROM user_tab_columns WHERE table_name = 'EMPLOYEES'; © sebvita.com

77 Le dictionnaire de données USER_CONSTRAINTS montre les définitions de contraintes sur vos tables USER_CONS_COLUMNS montre vos colonnes soumises à des contraintes Informations sur les contraintes DESCRIBE user_constraints … © sebvita.com

78 Le dictionnaire de données Informations sur les contraintes SELECT constraint_name, constraint_type, search_condition, r_constraint_name, delete_rule, status FROM user_constraints WHERE table_name = 'EMPLOYEES'; © sebvita.com

79 Le dictionnaire de données Informations sur les contraintes DESCRIBE user_cons_columns SELECT constraint_name, column_name FROM user_cons_columns WHERE table_name = 'EMPLOYEES'; … © sebvita.com

80 Le dictionnaire de données Informations sur les vues DESCRIBE user_views SELECT DISTINCT view_name FROM user_views; SELECT text FROM user_views WHERE view_name = 'EMP_DETAILS_VIEW'; © sebvita.com

81 Le dictionnaire de données Informations sur les séquences DESCRIBE user_sequences © sebvita.com

82 Le dictionnaire de données Vous pouvez vérifier les valeurs de votre séquence La colonne LAST_NUMBER affiche la prochaine valeur disponible si NOCACHE est spécifié Informations sur les séquences SELECT sequence_name, min_value, max_value, increment_by, last_number FROM user_sequences; © sebvita.com

83 Le dictionnaire de données Informations sur les synonymes DESCRIBE user_synonyms SELECT* FROM user_synonyms; © sebvita.com

84 Le dictionnaire de données Ajout de commentaires sur une table ou une colonne avec COMMENT Les commentaires sont visibles dans le dictionnaire de données : – ALL_COL_COMMENTS – USER_COL_COMMENTS – ALL_TAB_COMMENTS – USER_TAB_COMMENTS Commentaires sur les tables COMMENT ON TABLE employees IS 'Employee Information'; Comment created. © sebvita.com

85 V OUS AVEZ DES QUESTIONS ?

86 Création dautres objets © sebvita.com

87 Résumé Les vues et les index Les ordres DDL Le dictionnaire de données © sebvita.com Les contraintes et les séquences

88 Ressources http://www.oracle.com http://otn.oracle.com © sebvita.com


Télécharger ppt "T ECHNOLOGIES O RACLE Création et gestion des objets © sebvita.com."

Présentations similaires


Annonces Google