La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Copyright  Oracle Corporation, 1998. All rights reserved. 10 Constraints (Restricciones)

Presentaciones similares


Presentación del tema: "Copyright  Oracle Corporation, 1998. All rights reserved. 10 Constraints (Restricciones)"— Transcripción de la presentación:

1 Copyright  Oracle Corporation, 1998. All rights reserved. 10 Constraints (Restricciones)

2 10-2 Copyright  Oracle Corporation, 1998. All rights reserved. Objetivos Al completar esta lección, debería ser capaz de hacer lo siguiente: Describir constraints Crear y mantener constraints Al completar esta lección, debería ser capaz de hacer lo siguiente: Describir constraints Crear y mantener constraints

3 10-3 Copyright  Oracle Corporation, 1998. All rights reserved. ¿Qué son las constraints? “Fuerzan reglas a nivel de tabla” Las constraints previenen el borrado de una tabla si existen dependencias. Son válidos los siguientes tipos de restricciones: – NOT NULL – UNIQUE Key – PRIMARY KEY – FOREIGN KEY – CHECK “Fuerzan reglas a nivel de tabla” Las constraints previenen el borrado de una tabla si existen dependencias. Son válidos los siguientes tipos de restricciones: – NOT NULL – UNIQUE Key – PRIMARY KEY – FOREIGN KEY – CHECK

4 10-4 Copyright  Oracle Corporation, 1998. All rights reserved. Guía para el uso de constraints Asigne un nombre a la restricción, en caso contrario el Server generará uno usando el formato SYS_Cn. Asigne un nombre a la restricción, en caso contrario el Server generará uno usando el formato SYS_Cn. Se puede crear una restricción Se puede crear una restricción – En el momento de crear la tabla. – Después que la tabla ha sido creada. Se puede definir un restricción a nivel de columna o a nivel de tabla. Se puede definir un restricción a nivel de columna o a nivel de tabla. Vea la constraint en el diccionario de datos. Vea la constraint en el diccionario de datos. Asigne un nombre a la restricción, en caso contrario el Server generará uno usando el formato SYS_Cn. Asigne un nombre a la restricción, en caso contrario el Server generará uno usando el formato SYS_Cn. Se puede crear una restricción Se puede crear una restricción – En el momento de crear la tabla. – Después que la tabla ha sido creada. Se puede definir un restricción a nivel de columna o a nivel de tabla. Se puede definir un restricción a nivel de columna o a nivel de tabla. Vea la constraint en el diccionario de datos. Vea la constraint en el diccionario de datos.

5 10-5 Copyright  Oracle Corporation, 1998. All rights reserved. Definición de constraints CREATE TABLE [schema.]table (column datatype [DEFAULT expr] [column_constraint], … [table_constraint]); CREATE TABLE emp( (empno NUMBER(4), ename VARCHAR2(10), … deptno NUMBER(7,2) NOT NULL, CONSTRAINT emp_empno_pk PRIMARY KEY (EMPNO));

6 10-6 Copyright  Oracle Corporation, 1998. All rights reserved. Definición de constraints Constraint a nivel de columna: Constraint a nivel de tabla: Constraint a nivel de columna: Constraint a nivel de tabla: column [CONSTRAINT constraint_name] constraint_type, column,... [CONSTRAINT constraint_name] constraint_type (column,...), column,... [CONSTRAINT constraint_name] constraint_type (column,...),

7 10-7 Copyright  Oracle Corporation, 1998. All rights reserved. La constraint NOT NULL Asegura que los valores nulos no serán permitidos para la columna. EMP EMPNO ENAME JOB... COMM DEPTNO 7839KINGPRESIDENT 10 7698BLAKEMANAGER 30 7782CLARKMANAGER 10 7566JONESMANAGER 20... NOT NULL constraint (ningún registro podrá contener un valor nulo contener un valor nulo para esta columna) para esta columna) Ausencia de la constraint NOT NULL (cualquier reg. puede contener un valor nulo para esta columna) Constraint NOT NULL

8 10-8 Copyright  Oracle Corporation, 1998. All rights reserved. La constraint NOT NULL Definido a nivel de columna (sólo): SQL> CREATE TABLE emp( 2 empno NUMBER(4), 3enameVARCHAR2(10) NOT NULL, 4jobVARCHAR2(9), 5mgrNUMBER(4), 6hiredateDATE, 7salNUMBER(7,2), 8 commNUMBER(7,2), 9deptnoNUMBER(7,2) NOT NULL);

9 10-9 Copyright  Oracle Corporation, 1998. All rights reserved. La constraint UNIQUE Key DEPT DEPTNO DNAME LOC ------ ------------------ 10ACCOUNTINGNEW YORK 20RESEARCHDALLAS 30SALESCHICAGO 40OPERATIONSBOSTON Constraint UNIQUE key 50SALESDETROIT 60BOSTON Insert into No permitido (DNAME No permitido (DNAME  SALES ya existe) permitido

10 10-10 Copyright  Oracle Corporation, 1998. All rights reserved. La constraint UNIQUE Key Definido bien a nivel de tabla o de columna: SQL> CREATE TABLE dept( 2 deptno NUMBER(2), 3dnameVARCHAR2(14), 4locVARCHAR2(13), 5CONSTRAINT dept_dname_uk UNIQUE);

11 10-11 Copyright  Oracle Corporation, 1998. All rights reserved. La constraint PRIMARY KEY DEPT DEPTNO DNAME LOC ------ ------------------ 10ACCOUNTINGNEW YORK 20RESEARCHDALLAS 30SALESCHICAGO 40OPERATIONSBOSTON PRIMARY key Insert into 20MARKETINGDALLAS FINANCENEW YORK No permitido (DEPTNO20 No permitido (DEPTNO  20 ya existe) No permitido (DEPTNO es null)

12 10-12 Copyright  Oracle Corporation, 1998. All rights reserved. La constraint PRIMARY KEY Definido bien a nivel de tabla o de columna: SQL> CREATE TABLE dept( 2 deptno NUMBER(2), 3dnameVARCHAR2(14), 4locVARCHAR2(13), 5CONSTRAINT dept_dname_uk UNIQUE, 6CONSTRAINT dept_deptno_pk PRIMARY KEY);

13 10-13 Copyright  Oracle Corporation, 1998. All rights reserved. La FOREIGN KEY constraint DEPT DEPTNO DNAME LOC ------ ------------------ 10ACCOUNTINGNEW YORK 20RESEARCHDALLAS... PRIMARY key EMP EMPNO ENAME JOB... COMM DEPTNO 7839KINGPRESIDENT 10 7698BLAKEMANAGER 30... FOREIGN key 7571FORDMANAGER... 200 9 7571FORDMANAGER... 200 Insert into No permitido (DEPTNO No permitido (DEPTNO  no existe en la tabla DEPT Permitido

14 10-14 Copyright  Oracle Corporation, 1998. All rights reserved. La FOREIGN KEY constraint Definido bien a nivel de tabla o de columna: SQL> CREATE TABLE emp( 2 empno NUMBER(4), 3enameVARCHAR2(10) NOT NULL, 4jobVARCHAR2(9), 5mgrNUMBER(4), 6hiredateDATE, 7salNUMBER(7,2), 8 commNUMBER(7,2), 9deptnoNUMBER(7,2) NOT NULL, 10CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) 11REFERENCES dept (deptno));

15 10-15 Copyright  Oracle Corporation, 1998. All rights reserved. La constraint FOREIGN KEY palabras reservadas FOREIGN KEY: Define la columna en la tabla hija a nivel de constraint de tabla. REFERENCES: Identifica la tabla y columna en la tabla padre. ON DELETE CASCADE: Permite borrar en la tabla padre y borrar registros dependientes de la tabla hija. ON DELETE SET NULL: Convierte los valores de clave ajena dependientes en valores nulos. FOREIGN KEY: Define la columna en la tabla hija a nivel de constraint de tabla. REFERENCES: Identifica la tabla y columna en la tabla padre. ON DELETE CASCADE: Permite borrar en la tabla padre y borrar registros dependientes de la tabla hija. ON DELETE SET NULL: Convierte los valores de clave ajena dependientes en valores nulos.

16 10-16 Copyright  Oracle Corporation, 1998. All rights reserved. La constraint CHECK Define una condición que debe satisfacer cada fila. Define una condición que debe satisfacer cada fila. Expresiones no permitidas: Expresiones no permitidas: – Referencias a las pseudocolumnas CURRVAL, NEXTVAL, LEVEL, o ROWNUM. – Llamadas a las funciones SYSDATE, UID, USER, o USERENV. – Consultas que se refieran a otros valores en otras filas. Se define o bien como una restricción a nivel de tabla, o a nivel de columna. Se define o bien como una restricción a nivel de tabla, o a nivel de columna. Define una condición que debe satisfacer cada fila. Define una condición que debe satisfacer cada fila. Expresiones no permitidas: Expresiones no permitidas: – Referencias a las pseudocolumnas CURRVAL, NEXTVAL, LEVEL, o ROWNUM. – Llamadas a las funciones SYSDATE, UID, USER, o USERENV. – Consultas que se refieran a otros valores en otras filas. Se define o bien como una restricción a nivel de tabla, o a nivel de columna. Se define o bien como una restricción a nivel de tabla, o a nivel de columna...., deptnoNUMBER(2), CONSTRAINT emp_deptno_ck CHECK (DEPTNO BETWEEN 10 AND 99),...

17 10-17 Copyright  Oracle Corporation, 1998. All rights reserved. Añadir una constraint Añade o borra, pero no modifica una constraint. Activa-Desactiva constraints. Añade una constraint NOT NULL con la cláusula MODIFY. Añade o borra, pero no modifica una constraint. Activa-Desactiva constraints. Añade una constraint NOT NULL con la cláusula MODIFY. ALTER TABLE table ADD [CONSTRAINT constraint] type (column); ALTER TABLE table ADD [CONSTRAINT constraint] type (column);

18 10-18 Copyright  Oracle Corporation, 1998. All rights reserved. Añadir una constraint Añada una constraint FOREIGN KEY en la tabla EMP indicando que un manager (director) tiene que existir previamente como número de empleado. SQL> ALTER TABLEemp 2 ADD CONSTRAINTemp_mgr_fk 3 FOREIGN KEY(mgr) REFERENCES emp(empno); Table altered.

19 10-19 Copyright  Oracle Corporation, 1998. All rights reserved. Eliminación de una constraint Borra la constraint del manager de la tabla EMP. SQL> ALTER TABLEemp 2 DROP CONSTRAINT emp_mgr_fk; Table altered. SQL> ALTER TABLEemp 2 DROP CONSTRAINT emp_mgr_fk; Table altered. Borra la constraint de PRIMARY KEY de la tabla DEPT y borra la constraint de FOREIGN KEY asociada en la columna EMP.DEPTNO. SQL> ALTER TABLEdept 2 DROP PRIMARY KEY CASCADE; Table altered. SQL> ALTER TABLEdept 2 DROP PRIMARY KEY CASCADE; Table altered.

20 10-20 Copyright  Oracle Corporation, 1998. All rights reserved. Desactivar constraints Ejecute la cláusula DISABLE de la sentencia ALTER TABLE para desactivar una constraint de integridad. Utilice la opción CASCADE para desactivar constrains dependientes. Ejecute la cláusula DISABLE de la sentencia ALTER TABLE para desactivar una constraint de integridad. Utilice la opción CASCADE para desactivar constrains dependientes. SQL> ALTER TABLEemp 2 DISABLE CONSTRAINTemp_empno_pk CASCADE; Table altered. SQL> ALTER TABLEemp 2 DISABLE CONSTRAINTemp_empno_pk CASCADE; Table altered.

21 10-21 Copyright  Oracle Corporation, 1998. All rights reserved. Activar constraints Active una constraint de integridad actualmente desactivada en la definición de la tabla, por medio de la cláusula ENABLE. Un índice UNIQUE o de PRIMARY KEY se crea automáticamente si activa una constraint tipo UNIQUE o PRIMARY KEY Active una constraint de integridad actualmente desactivada en la definición de la tabla, por medio de la cláusula ENABLE. Un índice UNIQUE o de PRIMARY KEY se crea automáticamente si activa una constraint tipo UNIQUE o PRIMARY KEY SQL> ALTER TABLEemp 2 ENABLE CONSTRAINTemp_empno_pk; Table altered. SQL> ALTER TABLEemp 2 ENABLE CONSTRAINTemp_empno_pk; Table altered.

22 10-22 Copyright  Oracle Corporation, 1998. All rights reserved. Visualización de constraints Consulte la tabla USER_CONSTRAINTS para ver todos los nombres y definiciones de 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> SELECTconstraint_name, constraint_type, 2search_condition 3 FROMuser_constraints 4 WHEREtable_name = 'EMP';

23 10-23 Copyright  Oracle Corporation, 1998. All rights reserved. Visualización de las columnas asociadas con constraints 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> SELECTconstraint_name, column_name 2 FROMuser_cons_columns 3 WHEREtable_name = 'EMP'; Visualice las columnas asociadas con los nombres de constraints en la vista: USER_CONS_COLUMNS USER_CONS_COLUMNS

24 10-24 Copyright  Oracle Corporation, 1998. All rights reserved. Resumen Cree los siguientes tipos de constraints: – NOT NULL – UNIQUE Key – PRIMARY KEY – FOREIGN KEY – CHECK Consulte la tabla USER_CONSTRAINTS para ver todos los nombres y definiciones de constraints. Cree los siguientes tipos de constraints: – NOT NULL – UNIQUE Key – PRIMARY KEY – FOREIGN KEY – CHECK Consulte la tabla USER_CONSTRAINTS para ver todos los nombres y definiciones de constraints.

25 10-25 Copyright  Oracle Corporation, 1998. All rights reserved. Visión general de la práctica Añada constraints a tablas ya existentes. Añada columnas adicionales a una tabla. Visualice información de vistas del diccionario de datos. Añada constraints a tablas ya existentes. Añada columnas adicionales a una tabla. Visualice información de vistas del diccionario de datos.


Descargar ppt "Copyright  Oracle Corporation, 1998. All rights reserved. 10 Constraints (Restricciones)"

Presentaciones similares


Anuncios Google