Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Unikalny klucz w Oracle z przykładami

Co to jest unikalny klucz

Unikalny klucz w Oracle Unikatowo identyfikuje każdy wiersz w bazie danych. Zasadniczo wymusza unikalność zdefiniowanej kolumny
Ważne rzeczy

  1. Może być więcej niż jeden klucz unikalny na tabelę
  2. Może być zdefiniowany w jednej lub kilku kolumnach
  3. Kolumny zawierające klucz Unique mogą mieć wartość null

Jak stworzyć unikalny klucz

Tworzenie tabeli

Można to zrobić na poziomie kolumny za pomocą polecenia tworzenia tabeli w 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> column  CONSTRAINT_NAME format a20
 SQL> column TABLE_NAME  format a20
 SQL> column INDEX_NAME format a20
 SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,
   INDEX_NAME   from  user_Constraints where 
   TABLE_NAME='DEPT_MASTER';

Można to zrobić również na poziomie stołu

SQL> CREATE TABLE DEPT_MASTER (
     dept_nr NUMBER ,
     dept_name varchar2(100) NOT NULL,
     dept_status NUMBER(1,0) NOT NULL,
     created_at date,
     Unique(dept_nr) );
 Table created.

 SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,
     INDEX_NAME from  user_Constraints where 
     TABLE_NAME='DEPT_MASTER';

Możemy również dostarczyć niestandardowe ograniczenie

SQL>  CREATE TABLE DEPT_MASTER (
      dept_nr NUMBER ,
      dept_name varchar2(100) NOT NULL,
      dept_status NUMBER(1,0) NOT NULL,
      created_at date,
      constraint DEPT_UK Unique(dept_nr)      
       ); 
 Table created.

 SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,
    INDEX_NAME    from  user_Constraints 
     where      TABLE_NAME='DEPT_MASTER';

Możemy przedstawić klucz Unique za pomocą poniższego diagramu

Możemy mieć wiele kolumn, czyli złożony klucz Unique, który jest zdefiniowany tylko na poziomie tabeli

CREATE TABLE CUSTOMER_DETAIL
(
CUSTOMER_ID   NUMBER(6,0),  
NAME VARCHAR (20)     NOT NULL,
AGE  NUMBER(6,0)      NOT NULL,
ADDRESS   VARCHAR2(25), 
SALARY   NUMBER(6,0),     
UNIQUE(CUSTOMER_ID, NAME)
);
Table Created.

SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE,
    TABLE_NAME,INDEX_NAME from  user_Constraints where 
    TABLE_NAME='CUSTOMER_DETAIL';

Możemy również nadać własną nazwę ograniczenia

SQL> CREATE TABLE CUSTOMER_DETAIL(
     CUSTOMER_ID   NUMBER(6,0),
     NAME VARCHAR (20)     NOT NULL,
     AGE  NUMBER(6,0)    NOT NULL,
     ADDRESS   VARCHAR2(25),
     SALARY   NUMBER(6,0),
    constraint  CUSTOMER_UK UNIQUE(CUSTOMER_ID, NAME)
     );
   
 Table created.

 SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE,
     TABLE_NAME,INDEX_NAME from  user_Constraints where      TABLE_NAME='CUSTOMER_DETAIL';

Zmień tabelę dodaj unikalny klucz

Możemy również dodać Unikalny klucz po utworzeniu tabeli. Zobaczmy przykład tego

SQL> CREATE TABLE CUSTOMER_DETAIL(
    CUSTOMER_ID   NUMBER(6,0),
    NAME VARCHAR (20)     NOT NULL,
    AGE  NUMBER(6,0)    NOT NULL,
    ADDRESS   VARCHAR2(25),
    SALARY   NUMBER(6,0)
     ); 
 Table created.

 SQL>  select CONSTRAINT_NAME,CONSTRAINT_TYPE,
     TABLE_NAME,INDEX_NAME from  user_Constraints where    TABLE_NAME='CUSTOMER_DETAIL';
 SQL> alter table customer_detail add constraint 
      customer_uk UNIQUE(CUSTOMER_ID, NAME);
 Table altered.

 SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,INDEX_NAME from  user_Constraints where TABLE_NAME='CUSTOMER_DETAIL';

Klucz główny i klucz unikalny Oba

W tabeli Oracle możemy mieć zarówno klucz podstawowy, jak i klucz unikalny. Oto przykład ilustrujący to

SQL>  CREATE TABLE DEPT_MASTER (
      dept_nr NUMBER PRIMARY KEY,
      dept_name varchar2(100) UNIQUE,
      dept_status NUMBER(1,0) NOT NULL,
      created_at date  
      );
 Table created.

 SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE,
     TABLE_NAME,INDEX_NAME  from  
      user_Constraints where   TABLE_NAME='DEPT_MASTER';

Jak znaleźć kolumnę powiązaną z unikalnym kluczem

Kolumnę powiązaną z kluczem podstawowym lub kluczem unikalnym możemy znaleźć w widoku słownika User_cons_columns

SQL>  CREATE TABLE DEPT_MASTER (
      dept_nr NUMBER PRIMARY KEY,
      dept_name varchar2(100) UNIQUE,
      dept_status NUMBER(1,0) NOT NULL,
      created_at date
       );
 Table created.

 SQL> select CONSTRAINT_NAME,
     CONSTRAINT_TYPE,TABLE_NAME,INDEX_NAME 
     from  user_Constraints where TABLE_NAME='DEPT_MASTER'; 
 SQL> SELECT Constraint_name, Table_name, Column_name FROM User_cons_columns where CONSTRAINT_NAME ='SYS_C00540915';  
 CONSTRAINT_NAME      TABLE_NAME     COLUMN_NAME
 -------------------- -----------   ------------
 SYS_C00540915        DEPT_MASTER   DEPT_NAME

 SQL> SELECT Constraint_name, Table_name, Column_name
     FROM User_cons_columns where CONSTRAINT_NAME ='SYS_C00540914'; 
 CONSTRAINT_NAME      TABLE_NAME           COLUMN_NAME
 -------------         ---------            ---------
 SYS_C00540914        DEPT_MASTER          DEPT_NR
 SQL> SELECT Constraint_name, Table_name, Column_name
     FROM User_cons_columns where CONSTRAINT_NAME ='SYS_C00540918';
 CONSTRAINT_NAME      TABLE_NAME           COLUMN_NAME
 -------------        ----------          ------------
 SYS_C00540918        CUSTOMER_DETAIL      CUSTOMER_ID
 SYS_C00540918        CUSTOMER_DETAIL      NAME 

Jak włączyć i wyłączyć ograniczenie klucza Unikalne

Możemy to zrobić poleceniem alter table. Możemy podać nazwę kolumny lub nazwę ograniczenia

SQL>  alter table customer_detail disable UNIQUE(CUSTOMER_ID, NAME);
 Table altered.
 SQL> alter table customer_detail disable constraint  CUST_UK;
 Table altered.
 SQL> alter table customer_detail enable  UNIQUE(CUSTOMER_ID, NAME);
 Table altered.
 SQL>  alter table customer_detail enable constraint  CUST_UK;
 Table altered.

Jak usunąć ograniczenie unikatowe

Możemy to zrobić poleceniem alter table. Możemy podać nazwę kolumny lub nazwę ograniczenia

SQL> alter table customer_detail drop  UNIQUE(CUSTOMER_ID, NAME);
 Table altered.
 OR
 SQL> alter table customer_detail drop constraint  CUST_UK;
 Table altered.

Mam nadzieję, że podoba Ci się ten szczegół na kluczu Unique w Oracle. Podaliśmy również wystarczająco dużo przykładów w celach demonstracyjnych. Przekaż opinię na ten temat

Też czyta

Samouczki administracyjne bazy danych Oracle
Jak dodać klucz podstawowy w Oracle :klucz podstawowy jednoznacznie identyfikuje wiersz w tabeli. Jak dodać klucz podstawowy w Oracle, jak usunąć klucz podstawowy, jak utworzyć klucz złożony
https://asktom.oracle.com/pls/asktom/f%3Fp%3D100:11:0::::P11_QUESTION_ID:5541352100346689891


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Metody ustawiania parametrów NLS i ich priorytetów (baza danych Oracle)

  2. Obsługiwane modele formatów dla funkcji daty ROUND() i TRUNC() w Oracle

  3. Oracle Database TLS1.2 / połączenie SSL przy użyciu JDBC thin i JKS

  4. Agreguj wiersze w instrukcji Oracle SQL

  5. Uzyskaj nazwę procedury lub funkcji wywołującej w Oracle PL/SQL