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
- Có thể có nhiều hơn một Khóa duy nhất trên mỗi bảng
- Nó có thể được xác định trên một hoặc nhiều cột
- 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