constraints (restricciones) - andròmines · pdf filesql> alter table emp 2 drop...

25
Copyright Oracle Corporation, 1998. All rights reserved. 11 11 Constraints (Restricciones) Constraints (Restricciones)

Upload: dangnhan

Post on 30-Jan-2018

221 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

Copyright Oracle Corporation, 1998. All rights reserved.

1111

Constraints (Restricciones)

Constraints (Restricciones)

Page 2: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-2 Copyright Oracle Corporation, 1998. All rights reserved.

ObjetivosObjetivos

Al completar esta lección, debería ser capaz de hacer lo siguiente:

• Describir constraints

• Crear y mantener constraints

Al completar esta lecciAl completar esta lecci óón, debern, deber íía ser capaz a ser capaz de hacer lo siguiente:de hacer lo siguiente:

• Describir constraints

• Crear y mantener constraints

Page 3: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-3 Copyright Oracle Corporation, 1998. All rights reserved.

¿Qué son las Constraints?¿Qué son las Constraints?

• “Fuerzan reglas a nivel de tabla”

• Las constraints previenen el borrado de una tabla si existen dependencias.

• Los siguientes tipos de constrainst son válidos en Oracle8:– 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.

• Los siguientes tipos de constrainst son válidos en Oracle8:– NOT NULL– UNIQUE Key– PRIMARY KEY– FOREIGN KEY– CHECK

Page 4: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-4 Copyright Oracle Corporation, 1998. All rights reserved.

Guía para el Uso de ConstraintsGuía para el Uso de Constraints

•• Asigne un nombre a la restricciAsigne un nombre a la restricci óón, en n, en caso contrario el Server generarcaso contrario el Server generar áá uno uno usando el formato SYS_Cusando el formato SYS_C nn..

•• Se puede crear una restricciSe puede crear una restricci óónn

––En el momento de crear la tabla.En el momento de crear la tabla.

––DespuDespu éés que la tabla ha sido creada.s que la tabla ha sido creada.

•• Se puede definir un restricciSe puede definir un restricci óón a nivel de n a nivel de columna o a nivel de tabla.columna o a nivel de tabla.

•• Vea la constraint en el diccionario de Vea la constraint en el diccionario de datos.datos.

Page 5: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-5 Copyright Oracle Corporation, 1998. All rights reserved.

Definición de ConstraintsDefinició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));

Page 6: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-6 Copyright Oracle Corporation, 1998. All rights reserved.

Definición de ConstraintsDefinició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,...[CONSTRAINT constraint_name] constraint_type( column, ...),

column,...[CONSTRAINT constraint_name] constraint_type( column, ...),

Page 7: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-7 Copyright Oracle Corporation, 1998. All rights reserved.

La Constraint NOT NULLLa Constraint NOT NULL

Asegura que los valores nulos no serán permitidos para la columna.Asegura que los valores nulos no serAsegura que los valores nulos no ser áán n permitidos para la columna.permitidos para la columna.

EMPEMPEMPNO ENAME JOB ... COMM DEPTNO

7839 KING PRESIDENT 107698 BLAKE MANAGER 307782 CLARK MANAGER 107566 JONES MANAGER 20...

NOT NULL constraintNOT NULL constraint(ning(ning úún registro podrn registro podr áácontener un valor nulocontener un valor nulopara esta columna)para esta columna)

Ausencia de la Ausencia de la constraint NOT NULLconstraint NOT NULL(cualquier reg. puede (cualquier reg. puede contener un valor nulo contener un valor nulo para esta columna)para esta columna)

Constraint NOT NULLConstraint NOT NULL

Page 8: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-8 Copyright Oracle Corporation, 1998. All rights reserved.

La Constraint NOT NULLLa Constraint NOT NULL

Definido a nivel de columna:Definido a nivel de columna:Definido a nivel de columna:

SQL> 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(7,2) NOT NULL);

Page 9: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-9 Copyright Oracle Corporation, 1998. All rights reserved.

La Constraint UNIQUE KeyLa Constraint UNIQUE Key

DEPT DEPT DEPTNO DNAME LOC ------ ---------- --------

10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON

Constraint UNIQUE keyConstraint UNIQUE key

50 SALES DETROIT

60 BOSTON

Insert intoInsert into No permitido No permitido (DNAME(DNAMESALESya existe)ya existe)

permitidopermitido

Page 10: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-10 Copyright Oracle Corporation, 1998. All rights reserved.

La Constraint UNIQUE KeyLa Constraint UNIQUE Key

Definido bien a nivel de tabla o de columna: Definido bien a nivel de tabla o de columna: Definido bien a nivel de tabla o de columna:

SQL> CREATE TABLE dept(2 deptno NUMBER(2),3 dname VARCHAR2(14),4 loc VARCHAR2(13),5 CONSTRAINT dept_dname_uk UNIQUE);

Page 11: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-11 Copyright Oracle Corporation, 1998. All rights reserved.

La Constraint PRIMARY KEYLa Constraint PRIMARY KEY

DEPT DEPT DEPTNO DNAME LOC ------ ---------- --------

10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON

PRIMARY keyPRIMARY key

Insert intoInsert into

20 MARKETING DALLAS

FINANCE NEW YORK

No permitido No permitido (DEPTNO(DEPTNO20 20 ya existe)ya existe)No permitidoNo permitido(DEPTNO es null)(DEPTNO es null)

Page 12: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-12 Copyright Oracle Corporation, 1998. All rights reserved.

La Constraint PRIMARY KEYLa Constraint PRIMARY KEY

Definido bien a nivel de tabla o de columna: Definido bien a nivel de tabla o de columna: Definido bien a nivel de tabla o de columna:

SQL> CREATE TABLE dept(2 deptno NUMBER(2),3 dname VARCHAR2(14),4 loc VARCHAR2(13),5 CONSTRAINT dept_dname_uk UNIQUE,6 CONSTRAINT dept_deptno_pk PRIMARY KEY);

Page 13: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-13 Copyright Oracle Corporation, 1998. All rights reserved.

The FOREIGN KEY ConstraintThe FOREIGN KEY ConstraintDEPT DEPT DEPTNO DNAME LOC ------ ---------- --------

10 ACCOUNTING NEW YORK20 RESEARCH DALLAS

...

PRIMARYPRIMARYkeykey

EMPEMPEMPNO ENAME JOB ... COMM DEPTNO

7839 KING PRESIDENT 107698 BLAKE MANAGER 30...

FOREIGNFOREIGNkeykey

7571 FORD MANAGER ... 200 97571 FORD MANAGER ... 200

Insert intoInsert into

No permitidoNo permitido(DEPTNO(DEPTNO9999no existe en la no existe en la tabla DEPTtabla DEPT

PermitidoPermitido

Page 14: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-14 Copyright Oracle Corporation, 1998. All rights reserved.

The FOREIGN KEY ConstraintThe FOREIGN KEY Constraint

Definido bien a nivel de tabla o de columna: Definido bien a nivel de tabla o de columna: Definido bien a nivel de tabla o de columna:

SQL> 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(7,2) NOT NULL,

10 CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)11 REFERENCES dept (deptno));

Page 15: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-15 Copyright Oracle Corporation, 1998. All rights reserved.

La Constraint FOREIGN KEY Palabras Reservadas

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.

• 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.

Page 16: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-16 Copyright Oracle Corporation, 1998. All rights reserved.

La Constraint CHECKLa Constraint CHECK•• Define una condiciDefine una condici óón que debe satisfacer cada fila.n que debe satisfacer cada fila.

•• Expresiones no permitidas:Expresiones no permitidas:

–– Referencias a las pseudocolumnas CURRVAL, Referencias a las pseudocolumnas CURRVAL, NEXTVAL, LEVEL, o ROWNUM.NEXTVAL, LEVEL, o ROWNUM.

–– Llamadas a las funciones SYSDATE, UID, USER, o Llamadas a las funciones SYSDATE, UID, USER, o USERENV.USERENV.

–– Consultas que se refieran a otros valores en otras Consultas que se refieran a otros valores en otras filas.filas.

•• Se define o bien como una restricciSe define o bien como una restricci óón a nivel de tabla, o n a nivel de tabla, o a nivel de columna.a nivel de columna.

..., deptno NUMBER(2),CONSTRAINT emp_deptno_ck

CHECK (DEPTNO BETWEEN 10 AND 99),...

Page 17: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-17 Copyright Oracle Corporation, 1998. All rights reserved.

Añadir una ConstraintAñ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 tableADD [CONSTRAINT constraint] type ( column);

ALTER TABLE tableADD [CONSTRAINT constraint] type ( column);

Page 18: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-18 Copyright Oracle Corporation, 1998. All rights reserved.

Añadir una ConstraintAñ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.

AAññada una constraint FOREIGN KEY en la ada una constraint FOREIGN KEY en la tabla EMP indicando que un manager tabla EMP indicando que un manager (director) tiene que existir previamente (director) tiene que existir previamente como ncomo n úúmero de empleado.mero de empleado.

SQL> ALTER TABLE emp2 ADD CONSTRAINT emp_mgr_fk 3 FOREIGN KEY(mgr) REFERENCES emp(empno);

Table altered.Table altered.

Page 19: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-19 Copyright Oracle Corporation, 1998. All rights reserved.

Eliminación de una ConstraintEliminación de una Constraint

• Borra la constraint del manager de la tabla EMP.

• Borra la constraint del manager de la tabla EMP.

SQL> ALTER TABLE emp2 DROP CONSTRAINTemp_mgr_fk;

Table altered.

SQL> ALTER TABLE emp2 DROP CONSTRAINTemp_mgr_fk;

Table altered.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.

• 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 TABLE dept2 DROP PRIMARY KEY CASCADE;

Table altered.

SQL> ALTER TABLE dept2 DROP PRIMARY KEY CASCADE;

Table altered.Table altered.

Page 20: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-20 Copyright Oracle Corporation, 1998. All rights reserved.

Desactivar ConstraintsDesactivar 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 TABLE emp2 DISABLE CONSTRAINT emp_empno_pk CASCADE;

Table altered.

SQL> ALTER TABLE emp2 DISABLE CONSTRAINT emp_empno_pk CASCADE;

Table altered.Table altered.

Page 21: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-21 Copyright Oracle Corporation, 1998. All rights reserved.

Activar ConstraintsActivar 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 TABLE emp2 ENABLE CONSTRAINT emp_empno_pk;

Table altered.

SQL> ALTER TABLE emp2 ENABLE CONSTRAINT emp_empno_pk;

Table altered.Table altered.

Page 22: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-22 Copyright Oracle Corporation, 1998. All rights reserved.

Visualización de ConstraintsVisualización de Constraints

Consulte la tabla USER_CONSTRAINTS para ver todos los nombres y definiciones de constraints.

Consulte la tabla USER_CONSTRAINTS Consulte la tabla USER_CONSTRAINTS para ver todos los nombres y definiciones para ver todos los nombres y definiciones de constraints. de constraints.

CONSTRAINT_NAME C SEARCH_CONDITION------------------------ - -------------------------SYS_C00674 C EMPNO IS NOT NULL SYS_C00675 C DEPTNO IS NOT NULLEMP_EMPNO_PK P...

CONSTRAINT_NAME C SEARCH_CONDITION------------------------ - -------------------------SYS_C00674 C EMPNO IS NOT NULL SYS_C00675 C DEPTNO IS NOT NULLEMP_EMPNO_PK P...

SQL> SELECT constraint_name, constraint_type,2 search_condition3 FROM user_constraints4 WHERE table_name = 'EMP';

Page 23: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-23 Copyright Oracle Corporation, 1998. All rights reserved.

Visualización de las Columnas Asociadas con Constraints

Visualización de las Columnas Asociadas con Constraints

CONSTRAINT_NAME COLUMN_NAME------------------------- ----------------------EMP_DEPTNO_FK DEPTNOEMP_EMPNO_PK EMPNOEMP_MGR_FK MGRSYS_C00674 EMPNOSYS_C00675 DEPTNO

CONSTRAINT_NAME COLUMN_NAME------------------------- ----------------------EMP_DEPTNO_FK DEPTNOEMP_EMPNO_PK EMPNOEMP_MGR_FK MGRSYS_C00674 EMPNOSYS_C00675 DEPTNO

SQL> SELECT constraint_name, column_name2 FROM user_cons_columns3 WHERE table_name = 'EMP';

Visualice las columnas asociadas con los nombres de constraints en la vista:USER_CONS_COLUMNS

Visualice las columnas asociadas con los Visualice las columnas asociadas con los nombres de constraints en la vista:nombres de constraints en la vista:USER_CONS_COLUMNSUSER_CONS_COLUMNS

Page 24: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-24 Copyright Oracle Corporation, 1998. All rights reserved.

ResumenResumen

• 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.

Page 25: Constraints (Restricciones) - Andròmines · PDF fileSQL> ALTER TABLE emp 2 DROP CONSTRAINTemp_mgr_fk; Table altered. • Borra la constraint de PRIMARY KEY de la tabla DEPT y borra

11-25 Copyright Oracle Corporation, 1998. All rights reserved.

Visión General de la PrácticaVisió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 D.D.

• Añada constraints a tablas ya existentes.

• Añada columnas adicionales a una tabla.

• Visualice información de vistas del D.D.