sql >> Base de Datos >  >> RDS >> Oracle

cómo verificar todas las restricciones en una tabla en Oracle

Las restricciones en una tabla en Oracle se pueden encontrar utilizando las siguientes vistas
user_constraints
all_constraints
dba_constraints
User_cons_columns
all_cons_columns
dba_cons_columns

Podemos usar la vista según el acceso que tengamos en la base de datos Oracle. Ahora voy a explicar cómo verificar todas las restricciones en una tabla en Oracle usando los ejemplos

Cómo encontrar todas las restricciones en una tabla en Oracle

Primero creemos las tablas

SQL> CREATE TABLE "DEPT"
 ( "DEPTNO" NUMBER(2,0),
  "DNAME" VARCHAR2(14),
  "LOC" VARCHAR2(13),
  CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO")
 )  ;
 Table created.
 SQL> CREATE TABLE "EMP"
     ( "EMPNO" NUMBER(4,0),
     "ENAME" VARCHAR2(10) Not null,
      "JOB" VARCHAR2(9) not null,
     "MGR" NUMBER(4,0),
     "HIREDATE" DATE,
     "SAL" NUMBER(7,2),
     "COMM" NUMBER(7,2),
     "DEPTNO" NUMBER(2,0),
      CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"),
      CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")
      REFERENCES "DEPT" ("DEPTNO") ENABLE
     );
 Table created.

Ahora las restricciones se pueden encontrar utilizando las siguientes consultas de restricción de selección de Oracle

SQL> col CONSTRAINT_NAME  format a20
 SQL> col INDEX_NAME format a20
 SQL> col CONSTRAINT_TYPE format a5
 SQL> column SEARCH_CONDITION format a30
 SQL>column R_CONSTRAINT_NAME format a20
 select CONSTRAINT_NAME  C_NAME,INDEX_NAME,CONSTRAINT_TYPE,Search_condition,R_CONSTRAINT_NAME R_NAME from user_constraints where TABLE_NAME='EMP';

Aquí CONSTRAINT_TYPE define el tipo de restricciones
P significa clave principal de Oracle
C significa restricciones de verificación o restricciones no nulas
R significa restricciones de clave externa
U significa restricciones de clave única


Ahora las columnas de restricciones de clave principal, clave externa y clave única se pueden encontrar utilizando la siguiente consulta

SQL> column OWNER format a10
 SQL> column CONSTRAINT_NAME format a120
 SQL> column CONSTRAINT_NAME format a20
 SQL> column COLUMN_NAME format a20
 SQL> select OWNER,CONSTRAINT_NAME ,COLUMN_NAME,POSITION  from  User_cons_columns where TABLE_NAME='EMP';

Obtendremos valores nulos para la columna Posición si tenemos una sola columna en la restricción. Si hay varias columnas presentes en las restricciones, Position especificará el orden de la columna en la restricción

Se pueden usar consultas similares para seleccionar restricciones en la tabla DEPT

SQL> select CONSTRAINT_NAME C_NAME,INDEX_NAME,CONSTRAINT_TYPE,Search_condition,R_CONSTRAINT_NAME R_NAME from user_constraints where TABLE_NAME='DEPT';
SQL> select OWNER,CONSTRAINT_NAME ,COLUMN_NAME,POSITION  from  User_cons_columns where TABLE_NAME='DEPT';

Cómo encontrar restricciones por nombre en Oracle

select CONSTRAINT_NAME ,INDEX_NAME,CONSTRAINT_TYPE,Search_condition,R_CONSTRAINT_NAME R_NAME from user_constraints where CONSTRAINT_NAME='&1'

or
select owner, CONSTRAINT_NAME ,INDEX_NAME,CONSTRAINT_TYPE,Search_condition,R_CONSTRAINT_NAME R_NAME from all_constraints where CONSTRAINT_NAME='&1'

Cómo verificar las restricciones de integridad referencial en la tabla

SQL> select CONSTRAINT_NAME C_NAME,INDEX_NAME,CONSTRAINT_TYPE,Search_condition,R_CONSTRAINT_NAME R_NAME from user_constraints where TABLE_NAME='EMP' and CONSTRAINT_TYPE='R' ;

La tabla principal a la que se hace referencia se puede encontrar usando R_CONSTRAINT_NAME

 SQL>  select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE,table_name from user_constraints where CONSTRAINT_NAME='PK_DEPT';

Cómo verificar la clave principal en la tabla

SQL> select CONSTRAINT_NAME C_NAME,INDEX_NAME,CONSTRAINT_TYPE from user_constraints where TABLE_NAME='EMP' and CONSTRAINT_TYPE='P';
 C_NAME      INDEX_NAME           CONST 
 ----         -------             -----
 PK_EMP        PK_EMP               P

consulta para encontrar restricciones únicas en una tabla en Oracle

SQL> CREATE TABLE DEPT_MASTER (
     dept_nr NUMBER UNIQUE,
     dept_name varchar2(100) NOT NULL,
     dept_status NUMBER(1,0) NOT NULL,
       created_at date
         ); 
 Table created.
 SQL> select CONSTRAINT_NAME,INDEX_NAME,CONSTRAINT_TYPE from   user_constraints where TABLE_NAME='DEPT_MASTER' and CONSTRAINT_TYPE='U';

Otras consultas sobre restricciones

select table_name
 from user_constraints
 where (r_constraint_name) in ( select constraint_name
 from user_constraints
 where table_name = 'T'
 and constraint_type in ( 'P', 'U' ) );

Por lo tanto, podemos encontrar fácilmente todas las restricciones en la tabla en Oracle usando las vistas del diccionario de datos. Luego podemos tomar cualquier acción como modificar, deshabilitar, soltar, que queramos asumir estas restricciones. Las restricciones imponen reglas de integridad de datos en la base de datos de Oracle y debemos tener cuidado al modificarlas o eliminarlas.

Espero que les guste este contenido sobre cómo verificar todas las restricciones en una tabla en una base de datos Oracle. Por favor proporcione comentarios para este artículo.

También lee
eliminar restricción en Oracle:podemos eliminar la restricción en Oracle usando el comando de modificación de tabla. podemos eliminar la clave principal, externa, verificar, no nula y la restricción única con el mismo comando
Función de fusión en Oracle:la función de fusión en Oracle devolverá la primera expresión si no es nula; de lo contrario, fusionará el resto de la expresión.
Registro Suplementario en Oracle:El Registro Suplementario en Oracle es la información de columna adicional requerida para reconstruir SQL para aplicar a cualquier otra base de datos
Consulta para encontrar dependencias de objetos en Oracle:Verifique Consulta para encontrar dependencias de objetos en oracle, dependencia de nivel secundario, dependencia de nivel principal, encontrar usando dbms_utility.get_dependency
JSON en la base de datos de Oracle:consulte esta publicación sobre cómo usar JSON en oracle, cómo crear una tabla que contenga datos JSON, cómo para extraer, inserte los datos JSON en Oracle
https://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm

Cursos recomendados

Aquí está el buen curso de Udemy para Oracle SQL
Oracle-Sql-Step-by-step:este curso cubre sql básico, uniones, creación de tablas y modificación de su estructura, creación de vistas, unión, unión, todo y mucho más. . Un gran curso y un curso imprescindible para principiantes de SQL
El curso completo de certificación de Oracle SQL :Este es un buen curso para cualquier persona que quiera estar preparado para trabajar con habilidades de desarrollador de SQL. Un buen curso explicado
Oracle SQL Developer:fundamentos, consejos y trucos :muchos desarrolladores utilizan la herramienta de desarrollo Oracle Sql. Este curso nos brinda trucos y lecciones sobre cómo usarlo de manera efectiva y convertirnos en un desarrollador sql productivo
Oracle SQL Performance Tuning Masterclass 2020 :El ajuste del rendimiento es una de las habilidades críticas y más buscadas. Este es un buen curso para aprender sobre esto y comenzar a realizar ajustes de rendimiento de sql