Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parRosette Gautier Modifié depuis plus de 10 années
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.