Ràng buộc ĐỘC ĐÁO đảm bảo rằng tất cả các giá trị trong một cột cụ thể là khác nhau. Khóa DUY NHẤT không cho phép các giá trị trùng lặp. Khóa DUY NHẤT cho phép giá trị NULL nhưng không cho phép giá trị NULL nhiều lần
Chúng ta có thể tạo nhiều cột ĐỘC ĐÁO trên một bảng tuy nhiên chỉ có một KHÓA CHÍNH cho bảng. Xác định khóa chính trên cột có thuộc tính ràng buộc ĐỘC ĐÁO theo mặc định. Cả hai ràng buộc UNIQUE và PRIMARY KEY đều cung cấp tính duy nhất cho một cột hoặc tập hợp các cột
Cú pháp tạo khóa duy nhất khi tạo bảng – [MySQL]
CREATE TABLE table_name [
column1 datatype,
column2 datatype,
[ CONSTRAINT uq_name]
required_column datatype UNIQUE];
Cú pháp tạo khóa duy nhất khi tạo bảng – [SQL Server/Oracle/MS Access]
CREATE TABLE table_name [
column1 datatype UNIQUE,
column2 datatype,
… …
columnN datatype];
Cú pháp tạo khóa duy nhất trong khi tạo bảng có nhiều cột – [MySQL/SQL Server/Oracle/MS Access]
CREATE TABLE table_name [
column1 datatype,
column2 datatype,
[CONSTRAINT uq_name]
UNIQUE [required_column1, required_column2, ….., . ]];
Cú pháp tạo khóa duy nhất trên một cột của bảng hiện có – [MySQL/SQL Server/Oracle/MS Access]
ALTER TABLE table_name
ADD UNIQUE [column_name];
Cú pháp tạo khóa duy nhất trên nhiều cột của bảng hiện có – [MySQL/SQL Server/Oracle/MS Access]
ALTER TABLE table_name
ADD [CONSTRAINT uq_name]
UNIQUE [column1, column2];
Cú pháp xóa khóa duy nhất trên bảng hiện có – [MySQL]
ALTER TABLE table_name
DROP INDEX uq_name;
Cú pháp xóa khóa duy nhất trên bảng hiện có – [SQL Server/Oracle/MS Access]
ALTER TABLE table_name
DROP CONSTRAINT uq_name;
- uq_name - Đại diện cho tên do người dùng xác định của khóa duy nhất.
- table_name – Đại diện cho bảng mà người dùng muốn tạo khóa duy nhất
- required_column- Đại diện cho cột nào được bao gồm trong khóa duy nhất
ví dụ
Kịch bản – Tạo khóa duy nhất trong khi tạo bảng
Yêu cầu – Tạo emp_id làm khóa duy nhất trong khi tạo bảng employee_details. Truy vấn như sau -
CREATE TABLE Employee
[emp_id INT NOT NULL UNIQUE,
emp_name VARCHAR [20],
dept_id INT];
Bằng cách thực hiện truy vấn trên, cột emp_id đã được tạo dưới dạng khóa duy nhất trên bảng Employee_details
Kịch bản – Tạo khóa duy nhất trên bảng hiện có
Yêu cầu – Tạo uq_emp_name làm khóa duy nhất trên bảng employee_details hiện có không có cột khóa chính. Truy vấn như sau -
________số 8Bằng cách thực hiện truy vấn trên, emp_name đã được tạo dưới dạng khóa duy nhất trên bảng employee_details
Ghi chú. - Trong khi tạo khóa duy nhất trên bảng hiện có, hãy đảm bảo rằng cột sẽ thêm khóa duy nhất không có ràng buộc null và không có giá trị trùng lặp
Kịch bản – Tạo khóa duy nhất có nhiều cột trong khi tạo bảng
Yêu cầu – Tạo emp_id, emp_name làm khóa duy nhất trong khi tạo bảng employee_details. Truy vấn như sau -
CREATE TABLE Employee
[emp_id INT NOT NULL,
emp_name VARCHAR [20],
dept_id INT,
CONSTRAINT uq_employee
UNIQUE [emp_id, emp_name]];
Bằng cách thực hiện truy vấn trên, chúng ta có thể tạo uq_employee làm khóa duy nhất trên bảng employee_details với nhiều cột emp_id, emp_name
Kịch bản – Tạo khóa duy nhất trên bảng hiện có với nhiều cột
Yêu cầu – Tạo emp_id làm khóa duy nhất trên bảng employee_details hiện có. Truy vấn như sau -
CREATE TABLE table_name [
column1 datatype UNIQUE,
column2 datatype,
… …
columnN datatype];
0Bằng cách thực hiện truy vấn trên, chúng ta có thể tạo uq_employee làm khóa duy nhất trên bảng employee_details hiện có với nhiều cột emp_id, emp_name
Kịch bản – Xóa khóa duy nhất hiện có
Yêu cầu – Xóa khóa duy nhất uq_emp_name hiện có trên bảng employee_details. Truy vấn như sau -
CREATE TABLE table_name [
column1 datatype UNIQUE,
column2 datatype,
… …
columnN datatype];
1 và CREATE TABLE table_name [
column1 datatype UNIQUE,
column2 datatype,
… …
columnN datatype];
2 là từ đồng nghĩa trong MySQL. Họ có nghĩa là điều tương tự. Trong cơ sở dữ liệu, bạn sẽ sử dụng các chỉ mục để cải thiện tốc độ truy xuất dữ liệu. Một chỉ mục thường được tạo trên các cột được sử dụng trong các mệnh đề CREATE TABLE table_name [
column1 datatype UNIQUE,
column2 datatype,
… …
columnN datatype];
3, CREATE TABLE table_name [
column1 datatype UNIQUE,
column2 datatype,
… …
columnN datatype];
4 và CREATE TABLE table_name [
column1 datatype UNIQUE,
column2 datatype,
… …
columnN datatype];
5Hãy tưởng tượng bạn có một bảng tên là
CREATE TABLE table_name [
column1 datatype UNIQUE,
column2 datatype,
… …
columnN datatype];
6 và bạn muốn tìm kiếm tất cả những người dùng có họ là 'Smith'. Không có chỉ mục, cơ sở dữ liệu sẽ phải duyệt qua tất cả các bản ghi của bảng. điều này là chậm, bởi vì bạn càng có nhiều bản ghi trong cơ sở dữ liệu của mình thì càng phải làm nhiều việc hơn để tìm ra kết quả. Mặt khác, một chỉ mục sẽ giúp cơ sở dữ liệu chuyển nhanh đến các trang có liên quan nơi lưu giữ các bản ghi 'Smith'. Điều này rất giống với cách chúng ta, con người, lướt qua danh bạ danh bạ điện thoại để tìm ai đó theo họ. Chúng tôi không bắt đầu tìm kiếm trong thư mục từ trang này đến trang khác, miễn là chúng tôi đã chèn thông tin theo một số thứ tự mà chúng tôi có thể sử dụng để chuyển nhanh đến các trang 'S'Khóa chính và khóa duy nhất tương tự nhau. Khóa chính là một cột hoặc tổ hợp các cột có thể xác định duy nhất một hàng. Đây là trường hợp đặc biệt của khóa duy nhất. Một bảng có thể có nhiều nhất một khóa chính, nhưng nhiều hơn một khóa duy nhất. Khi bạn chỉ định một khóa duy nhất trên một cột, không có hai hàng riêng biệt nào trong một bảng có thể có cùng giá trị