Les Contraintes | SQL Oracle

  • Published on
    22-Jun-2015

  • View
    847

  • Download
    7

Embed Size (px)

DESCRIPTION

Les Contraintes | SQL Oracle. Telecharger cours sql oracle gratuit.Grer les Contraintes, Crer des contraintes

Transcript

<ul><li> 1. Copyright Oracle Corporation, 1998. Tous droits rservs. 1414 Les Contraintes www.TelechargerCours.com </li></ul> <p> 2. 14-2 Copyright Oracle Corporation, 1998. Tous droits rservs. Objectifs A la fin de ce chapitre, vous saurez :A la fin de ce chapitre, vous saurez : Dfinir les contraintes Crer des contraintes et les maintenir www.TelechargerCours.com 3. 14-3 Copyright Oracle Corporation, 1998. Tous droits rservs. Les Contraintes Les contraintes contrlent des rgles de gestion au niveau d'une table. Les contraintes empchent la suppression d'une table lorsqu'il existe des dpendances. Types de contraintes valides dans Oracle : NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK 4. 14-4 Copyright Oracle Corporation, 1998. Tous droits rservs. Conventions Applicables aux Contraintes Si vous ne nommez pas une contrainte, Oracle8 Server crera un nom au format SYS_Cn. Vous pouvez crer une contrainte : En mme temps que la cration de la table Une fois que la table est cre Dfinissez une contrainte peut tre dfinie au niveau table ou colonne. Consulter le dictionnaire de donnes pour retrouver une contrainte. 5. 14-5 Copyright Oracle Corporation, 1998. Tous droits rservs. Les Contraintes CREATE TABLE [schema.]table (column datatype [DEFAULT expr] [column_constraint], [table_constraint]); CREATE TABLE emp( empno NUMBER(4), ename VARCHAR2(10), deptno NUMBER(2) NOT NULL, CONSTRAINT emp_empno_pk PRIMARY KEY (EMPNO)); www.TelechargerCours.com 6. 14-6 Copyright Oracle Corporation, 1998. Tous droits rservs. Les Contraintes Contrainte au niveau colonne Contrainte au niveau table column [CONSTRAINT constraint_name] constraint_type,column [CONSTRAINT constraint_name] constraint_type, column,... [CONSTRAINT constraint_name] constraint_type (column, ...), column,... [CONSTRAINT constraint_name] constraint_type (column, ...), www.TelechargerCours.com 7. 14-7 Copyright Oracle Corporation, 1998. Tous droits rservs. La Contrainte NOT NULL Interdit la prsence de valeurs NULL dansInterdit la prsence de valeurs NULL dans la colonnela colonne EMPEMP EMPNO ENAME JOB ... COMM DEPTNO 7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20 ... Contrainte NOT NULLContrainte NOT NULL (aucune ligne ne peut(aucune ligne ne peut avoir de valeur NULLavoir de valeur NULL dans cette colonne)dans cette colonne) Absence de contrainteAbsence de contrainte NOT NULLNOT NULL (toute ligne peut avoir(toute ligne peut avoir une valeur NULL dansune valeur NULL dans cette colonne)cette colonne) ContrainteContrainte NOT NULLNOT NULL www.TelechargerCours.com 8. 14-8 Copyright Oracle Corporation, 1998. Tous droits rservs. La Contrainte NOT NULL Se dfinit au niveau colonneSe dfinit au niveau colonne SQL&gt; CREATE TABLE emp( 2 empno NUMBER(4), 3 ename VARCHAR2(10) NOT NULL, 4 job VARCHAR2(9), 5 mgr NUMBER(4), 6 hiredate DATE, 7 sal NUMBER(7,2), 8 comm NUMBER(7,2), 9 deptno NUMBER(2) NOT NULL); www.TelechargerCours.com 9. 14-9 Copyright Oracle Corporation, 1998. Tous droits rservs. La Contrainte de Cl UNIQUE DEPTDEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON contrainte de cl UNIQUEcontrainte de cl UNIQUE 50 SALES DETROIT 60 BOSTON A insrerA insrer InterditInterdit (DNAME(DNAMESALES existe dj)existe dj) AutorisAutoris www.TelechargerCours.com 10. 14-10 Copyright Oracle Corporation, 1998. Tous droits rservs. La Contrainte de Cl UNIQUE Se dfinit au niveau table ou colonneSe dfinit au niveau table ou colonne SQL&gt; CREATE TABLE dept( 2 deptno NUMBER(2), 3 dname VARCHAR2(14), 4 loc VARCHAR2(13), 5 CONSTRAINT dept_dname_uk UNIQUE(dname)); www.TelechargerCours.com 11. 14-11 Copyright Oracle Corporation, 1998. Tous droits rservs. La Contrainte PRIMARY KEY DEPTDEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON cl PRIMAIREcl PRIMAIRE A insrerA insrer 20 MARKETING DALLAS FINANCE NEW YORK interdit (DEPTNOinterdit (DEPTNO2020 existe dj)existe dj) interditinterdit (DEPTNO est NULL)(DEPTNO est NULL) www.TelechargerCours.com 12. 14-12 Copyright Oracle Corporation, 1998. Tous droits rservs. La Contrainte PRIMARY KEY Se dfinit au niveau table ou colonneSe dfinit au niveau table ou colonne SQL&gt; CREATE TABLE dept( 2 deptno NUMBER(2), 3 dname VARCHAR2(14), 4 loc VARCHAR2(13), 5 CONSTRAINT dept_dname_uk UNIQUE (dname), 6 CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno)); www.TelechargerCours.com 13. 14-13 Copyright Oracle Corporation, 1998. Tous droits rservs. La Contrainte FOREIGN KEY DEPTDEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS ... PRIMARYPRIMARY KEYKEY EMPEMP EMPNO ENAME JOB ... COMM DEPTNO 7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 ... FOREIGNFOREIGN KEYKEY 7571 FORD MANAGER ... 200 9 7571 FORD MANAGER ... 200 A insrerA insrer InterditInterdit (DEPTNO(DEPTNO9 n'existe pasn'existe pas dans la tabledans la table DEPTDEPT AutorisAutoris www.TelechargerCours.com 14. 14-14 Copyright Oracle Corporation, 1998. Tous droits rservs. La Contrainte FOREIGN KEY Se dfinit au niveau table ou colonneSe dfinit au niveau table ou colonne SQL&gt; CREATE TABLE emp( 2 empno NUMBER(4), 3 ename VARCHAR2(10) NOT NULL, 4 job VARCHAR2(9), 5 mgr NUMBER(4), 6 hiredate DATE, 7 sal NUMBER(7,2), 8 comm NUMBER(7,2), 9 deptno NUMBER(2) NOT NULL, 10 CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) 11 REFERENCES dept (deptno)); www.TelechargerCours.com 15. 14-15 Copyright Oracle Corporation, 1998. Tous droits rservs. Mots-cls Associs la Contrainte FOREIGN KEY FOREIGN KEY Dfinit la colonne dans la table dtail dans une contrainte de niveau table REFERENCES Identifie la table et la colonne de la table matre ON DELETE CASCADE Autorise la suppression dune ligne dans la table matre et des lignes dpendantes dans la table dtail 16. 14-16 Copyright Oracle Corporation, 1998. Tous droits rservs. La Contrainte CHECK Dfinit une condition que chaque ligne doit obligatoirement satisfaire Expressions interdites : Rfrences aux pseudo-colonnes CURRVAL, NEXTVAL, LEVEL et ROWNUM Appels aux fonctions SYSDATE, UID, USER et USERENV Requtes faisant rfrence d'autres valeurs dans d'autres lignes ..., deptno NUMBER(2), CONSTRAINT emp_deptno_ck CHECK (DEPTNO BETWEEN 10 AND 99),... www.TelechargerCours.com 17. 14-17 Copyright Oracle Corporation, 1998. Tous droits rservs. Ajout d'une Contrainte Vous pouvez ajouter ou supprimer une contrainte, mais pas la modifier Vous pouvez activer ou dsactiver des contraintes Pour ajouter une contrainte NOT NULL, utilisez la clause MODIFY ALTER TABLE table ADD [CONSTRAINT constraint] type (column); ALTER TABLE table ADD [CONSTRAINT constraint] type (column); www.TelechargerCours.com 18. 14-18 Copyright Oracle Corporation, 1998. Tous droits rservs. Ajout d'une Contrainte Ajouter une contrainte FOREIGN KEY laAjouter une contrainte FOREIGN KEY la table EMP prcisant qu'un manager doittable EMP prcisant qu'un manager doit dj exister dans la table EMP en tantdj exister dans la table EMP en tant qu'employ valide.qu'employ valide. SQL&gt; ALTER TABLE emp 2 ADD CONSTRAINT emp_mgr_fk 3 FOREIGN KEY(mgr) REFERENCES emp(empno); Table altered.Table altered. www.TelechargerCours.com 19. 14-19 Copyright Oracle Corporation, 1998. Tous droits rservs. Suppression d'une Contrainte Supprimer de la table EMP la contrainte concernant le manager. SQL&gt; ALTER TABLE emp 2 DROP CONSTRAINT emp_mgr_fk; Table altered.Table altered. SQL&gt; ALTER TABLE emp 2 DROP CONSTRAINT emp_mgr_fk; Table altered.Table altered. Supprimer la contrainte PRIMARY KEY de la table DEPT, ainsi que la contrainte FOREIGN KEY associe dfinie sur la colonne EMP.DEPTNO. SQL&gt; ALTER TABLE dept 2 DROP PRIMARY KEY CASCADE; Table altered.Table altered. SQL&gt; ALTER TABLE dept 2 DROP PRIMARY KEY CASCADE; Table altered.Table altered. www.TelechargerCours.com 20. 14-20 Copyright Oracle Corporation, 1998. Tous droits rservs. Dsactivation de Contraintes Pour dsactiver une contrainte d'intgrit, utiliser la clause DISABLE de l'ordre ALTER TABLE. Pour dsactiver les contraintes d'intgrit dpendantes, ajouter l'option CASCADE. SQL&gt; ALTER TABLE emp 2 DISABLE CONSTRAINT emp_empno_pk CASCADE; Table altered.Table altered. SQL&gt; ALTER TABLE emp 2 DISABLE CONSTRAINT emp_empno_pk CASCADE; Table altered.Table altered. www.TelechargerCours.com 21. 14-21 Copyright Oracle Corporation, 1998. Tous droits rservs. Activation de Contraintes Pour activer une contrainte d'intgrit actuellement dsactive dans la dfinition de la table, utiliser la clause ENABLE. Si vous activez une contrainte UNIQUE ou PRIMARY KEY, un index correspondant est automatiquement cr. SQL&gt; ALTER TABLE emp 2 ENABLE CONSTRAINT emp_empno_pk; Table altered.Table altered. SQL&gt; ALTER TABLE emp 2 ENABLE CONSTRAINT emp_empno_pk; Table altered.Table altered. www.TelechargerCours.com 22. 14-22 Copyright Oracle Corporation, 1998. Tous droits rservs. Vrification des Contraintes Pour afficher les dfinitions et noms dePour afficher les dfinitions et noms de toutes les contraintes, interrogez la tabletoutes les contraintes, interrogez la table USER_CONSTRAINTS.USER_CONSTRAINTS. CONSTRAINT_NAME C SEARCH_CONDITION ------------------------ - ------------------------- SYS_C00674 C EMPNO IS NOT NULL SYS_C00675 C DEPTNO IS NOT NULL EMP_EMPNO_PK P ... CONSTRAINT_NAME C SEARCH_CONDITION ------------------------ - ------------------------- SYS_C00674 C EMPNO IS NOT NULL SYS_C00675 C DEPTNO IS NOT NULL EMP_EMPNO_PK P ... SQL&gt; SELECT constraint_name, constraint_type, 2 search_condition 3 FROM user_constraints 4 WHERE table_name = 'EMP'; 23. 14-23 Copyright Oracle Corporation, 1998. Tous droits rservs. Affichage des Colonnes Associes aux Contraintes CONSTRAINT_NAME COLUMN_NAME ------------------------- ---------------------- EMP_DEPTNO_FK DEPTNO EMP_EMPNO_PK EMPNO EMP_MGR_FK MGR SYS_C00674 EMPNO SYS_C00675 DEPTNO CONSTRAINT_NAME COLUMN_NAME ------------------------- ---------------------- EMP_DEPTNO_FK DEPTNO EMP_EMPNO_PK EMPNO EMP_MGR_FK MGR SYS_C00674 EMPNO SYS_C00675 DEPTNO SQL&gt; SELECT constraint_name, column_name 2 FROM user_cons_columns 3 WHERE table_name = 'EMP'; Affichez les colonnes associes aux nomsAffichez les colonnes associes aux noms de contraintes au moyen de la vuede contraintes au moyen de la vue USER_CONS_COLUMNS viewUSER_CONS_COLUMNS view 24. 14-24 Copyright Oracle Corporation, 1998. Tous droits rservs. Rsum Vous pouvez crer des contraintes de type : NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK Utilisez la table USER_CONSTRAINTS pour afficher les noms et dfinitions de toutes les contraintes. www.TelechargerCours.com 25. 14-25 Copyright Oracle Corporation, 1998. Tous droits rservs. Prsentation des Exercices Ajout de contraintes des tables existantes Ajout de colonnes supplmentaires une table Affichage d'informations des vues du dictionnaire de donnes www.TelechargerCours.com </p>