Oracle
 sql >> Database >  >> RDS >> Oracle

come controllare tutti i vincoli su una tabella in Oracle

I vincoli su una tabella in Oracle possono essere trovati utilizzando le viste seguenti
user_constraints
all_constraints
dba_constraints
User_cons_columns
all_cons_columns
dba_cons_columns

Possiamo utilizzare la vista in base all'accesso che abbiamo nel database Oracle. Ora spiegherò come controllare tutti i vincoli su una tabella in Oracle usando gli esempi

Come trovare tutti i vincoli su una tabella in Oracle

Creiamo prima le Tabelle

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.

Ora i vincoli possono essere trovati utilizzando le seguenti query di vincolo Oracle Select

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';

Qui CONSTRAINT_TYPE definisce il tipo di vincoli
P sta per Oracle Primary Key
C sta per vincoli check o non vincoli null
R sta per vincoli chiave esterna
U sta per vincoli chiave univoca


Ora è possibile trovare le colonne Chiave primaria, Chiave esterna e Vincoli di chiave univoca utilizzando la query seguente

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';

Otterremo valori nulli per la colonna Posizione se abbiamo una singola colonna nel vincolo. Se sono presenti più colonne nei vincoli, Posizione specificherà l'ordine della colonna nel vincolo

Query simili possono essere utilizzate per selezionare i vincoli sulla tabella 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';

Come trovare il vincolo per nome in 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'

Come verificare i vincoli di integrità referenziale nella tabella

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 tabella padre a cui si fa riferimento può essere trovata utilizzando R_CONSTRAINT_NAME

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

Come controllare la chiave primaria nella tabella

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

interroga per trovare vincoli univoci su una tabella in 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';

Altre query per i vincoli

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' ) );

Quindi, possiamo facilmente trovare tutti i vincoli sulla tabella in Oracle usando le viste del dizionario dei dati. Possiamo quindi intraprendere qualsiasi azione come modificare, disabilitare, eliminare, vogliamo assumere questi vincoli. I vincoli stanno applicando le regole di integrità dei dati nel database di Oracle e dobbiamo prestare attenzione quando li modifichiamo/rilasciamo.

Spero che questo contenuto ti piaccia su come controllare tutti i vincoli su una tabella in un database Oracle. Si prega di fornire feedback per questo articolo.

Legge anche
Rilascia il vincolo in Oracle:possiamo eliminare il vincolo in Oracle utilizzando il comando alter table. possiamo eliminare la chiave primaria, esterna, controllare, non null e il vincolo univoco con lo stesso comando dell'espressione.
Registrazione supplementare in Oracle:la registrazione supplementare in Oracle è l'informazione aggiuntiva della colonna richiesta per ricostruire SQL da applicare a qualsiasi altro database
Query per trovare le dipendenze degli oggetti in Oracle:controlla Query per trovare dipendenze degli oggetti in Oracle, dipendenza a livello di figlio, dipendenza a livello di genitore, ricerca utilizzando dbms_utility.get_dependency
JSON nel database Oracle:dai un'occhiata a questo post su come utilizzare JSON in Oracle, come creare una tabella contenente dati JSON, come per estrarre, inserire i dati JSON in Oracle
https://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm

Corsi consigliati

Ecco il bel corso Udemy per Oracle SQL
Oracle-Sql-Step-by-step:questo corso copre SQL di base, join, creazione di tabelle e modifica della sua struttura, creazione di viste, unione, unione, tutto e molto altro . Un ottimo corso e un corso indispensabile per principianti SQL
Il corso completo di certificazione Oracle SQL :Questo è un buon corso per chiunque voglia essere pronto per il lavoro per le competenze di sviluppatore SQL. Un bel corso spiegato
Oracle SQL Developer:Essentials, Tips and Tricks :lo strumento di sviluppo Oracle Sql è utilizzato da molti sviluppatori. Questo corso offre trucchi e lezioni su come utilizzarlo in modo efficace e diventare uno sviluppatore sql produttivo
Oracle SQL Performance Tuning Masterclass 2020 :l'ottimizzazione delle prestazioni è una delle abilità critiche e più ricercate. Questo è un buon corso per conoscerlo e iniziare a ottimizzare le prestazioni di sql