sql >> Databasteknik >  >> RDS >> Oracle

Unik nyckel i Oracle med exempel

Vad är unik nyckel

Unik nyckel i Oracle Identifierar unikt varje rad i databasen. Det framtvingar i princip unikhet på den definierade kolumnen
Viktigt

  1. Det kan finnas mer än en unik nyckel per tabell
  2. Det kan definieras på en eller flera kolumner
  3. Kolumner som innehåller Unique Key kan vara null-kompatibla

Hur man skapar den unika nyckeln

Skapa tabell

Det kan göras på kolumnnivå med kommandot skapa tabell i 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';

Det kan också göras på tabellnivå

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

Vi kan också tillhandahålla den anpassade begränsningen

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

Vi kan representera den unika nyckeln med nedanstående diagram

Vi kan ha flera kolumner, dvs sammansatt unik nyckel också och den definieras endast på tabellnivå

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

Vi kan också ge ett anpassat begränsningsnamn

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

Ändra tabell lägg till unik nyckel

Vi kan också lägga till unik nyckel efter att tabellen skapats. Låt oss se exemplet på det

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

Primär nyckel och unik nyckel båda

Vi kan ha både den primära och den unika nyckeln på orakelbordet. Här är exemplet som visar det

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

Hur man hittar kolumn som är kopplad till Unik nyckel

Vi kan hitta kolumnen som är kopplad till primärnyckel eller unik nyckel från ordboksvyn 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 

Hur man aktiverar och inaktiverar den unika nyckelbegränsningen

Vi kan göra detta med kommandot alter table. Vi kan antingen ange kolumnnamnet eller begränsningsnamnet

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.

Hur man släpper den unika begränsningen

Vi kan göra detta med kommandot alter table. Vi kan antingen ange kolumnnamnet eller begränsningsnamnet

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

Hoppas du gillar den här detaljen på Unique key i Oracle. Vi har gett tillräckligt med exempel för demonstrationssyfte också. Lämna gärna feedback om det

Läser också

Handledningar för administration av Oracle-databas
Hur man lägger till primärnyckel i Oracle :primärnyckeln identifierar raden i tabellen unikt. Hur man lägger till primärnyckel i Oracle, hur man släpper primärnyckel, hur man skapar sammansatt nyckel
https://asktom.oracle.com/pls/asktom/f%3Fp%3D100:11:0::::P11_QUESTION_ID:5541352100346689891


  1. MySQL felkod:1175 under UPPDATERING i MySQL Workbench

  2. Hur man beviljar alla privilegier på en databas i MySQL

  3. Hur SQRT() fungerar i MariaDB

  4. MySQL:Hur återställer eller ändrar jag MySQL root-lösenordet?