Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Khóa duy nhất trong Oracle với các ví dụ

Khóa duy nhất là gì

Khóa duy nhất trong Oracle Xác định duy nhất mọi hàng trong cơ sở dữ liệu. Về cơ bản, nó thực thi tính duy nhất trên cột được xác định
Những điều quan trọng

  1. Có thể có nhiều hơn một Khóa duy nhất trên mỗi bảng
  2. Nó có thể được xác định trên một hoặc nhiều cột
  3. Các cột bao gồm Khóa duy nhất có thể có giá trị rỗng

Cách tạo Khóa duy nhất

Tạo bảng

Nó có thể được thực hiện ở Cấp độ cột bằng lệnh tạo bảng trong 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';

Nó cũng có thể được thực hiện ở cấp bảng

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

Chúng tôi cũng có thể cung cấp ràng buộc tùy chỉnh

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

Chúng tôi có thể biểu diễn Khóa duy nhất bằng sơ đồ dưới đây

Chúng ta cũng có thể có nhiều cột, tức là Khóa duy nhất tổng hợp và nó chỉ được xác định ở cấp bảng

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

Chúng tôi cũng có thể đặt tên ràng buộc tùy chỉnh

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

Bảng thay thế thêm khóa duy nhất

Chúng tôi cũng có thể thêm khóa Unique sau khi tạo bảng. Hãy xem ví dụ về điều đó

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

Khóa chính và khóa duy nhất Cả hai

Chúng ta có thể có cả khóa chính và khóa duy nhất trên bảng oracle. Dưới đây là ví dụ minh họa điều đó

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

Cách tìm cột được liên kết với Khóa duy nhất

Chúng tôi có thể tìm thấy cột được liên kết với Khóa chính hoặc khóa duy nhất từ ​​chế độ xem từ điển 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 

Cách bật và tắt ràng buộc Khóa duy nhất

Chúng ta có thể làm điều này với lệnh bảng thay đổi. Chúng tôi có thể cung cấp tên cột hoặc tên ràng buộc

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.

Cách loại bỏ ràng buộc Duy nhất

Chúng ta có thể làm điều này với lệnh bảng thay đổi. Chúng tôi có thể cung cấp tên cột hoặc tên ràng buộc

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

Hy vọng bạn thích chi tiết này trên Khóa duy nhất trong Oracle. Chúng tôi cũng đã đưa ra đủ ví dụ cho mục đích minh họa. Vui lòng cung cấp phản hồi về nó

Cũng đã đọc

Hướng dẫn quản trị cơ sở dữ liệu Oracle
Cách thêm khóa chính trong oracle:khóa chính xác định duy nhất hàng trong bảng. Cách thêm khóa chính trong oracle, cách bỏ khóa chính, cách tạo khóa tổng hợp
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. JDBC trả về tập kết quả trống

  2. Hàm REGEXP_REPLACE () trong Oracle

  3. 6 cách chọn hàng trùng lặp trong Oracle

  4. Cách kết nối với cơ sở dữ liệu Oracle 11 từ. mạng

  5. Toán tử trục Oracle