Trong bài cách tạo khóa chính Primary Key trong MySQL chúng ta đã tìm hiểu trong một bảng sẽ tồn tại một khóa chính (có thể có nhiều fields) và giá trị của nó sẽ là duy nhất, nghĩa là dữ liệu sẽ không được trùng lặp. Vậy thì
UNIQUE
cũng tương tự như vậy, nếu bạn xác định một field nào đó là UNIQUE dữ liệu của mỗi record không được trùng lặp nhau.
Vậy sự khác nhau giữa Primary Key và Unique là gì? Để trả lời ta sẽ tìm hiểu cú pháp tạo Unique trong MySQL đã nhé.
1. Unique trong MySQL
UNIQUE
thực chất là một index KEY
nên nếu bạn thiết lập một field nào đó là UNIQUE
thì việc truy vấn dữ liệu trên nó sẽ nhanh hơn, nó thường dùng trong trường hợp ngoài khóa chính ra thì bạn muốn Field đó phải là duy nhất.
Ví dụ trong bảng Users gồm các fields như sau: Users(id, username, email) thì với
id
ta sẽ chọn làm khóa chính. Nhưng mà tôi muốn email và username của mỗi người dùng phải là duy nhất, nghĩa là người dùng không được sử dụng một email
hoặc username
để đăng ký nhiều tài khoản. Để giải quyết thì ta sẽ thiết lập cho hai fields này là UNIQUE
.
Như vậy sự khác biệt giữa
UNIQUE
và Primary Key
là:-
Primary Key
có cấp cao hơnUNIQUE
, nó thường dùng để phân biệt giữa các record. - Trong mỗi bảng chỉ có có một
Primary Key
, cònUNIQUE
thì có thể có nhiều
2. Tạo UNIQUE trong MySQL
Để tạo UNIQUE ta có hai cách là tạo trực tiếp trong lệnh tạo bảng hoặc là sử dụng lệnh
ALTER TABLE
để tạo.Tạo trong lệnh tạo bảng
Chúng ta sẽ thêm từ khóa
UNIQUE
vào field mà ban muốn thiết lập nó là UNIQUE
.
1
2
3
4
5
| CREATE TABLE Users( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR (50) NOT NULL UNIQUE , email VARCHAR (50) NOT NULL UNIQUE ); |
Hoặc ta có thể thêm nó ở dưới danh sách các fields (giống Primary Key).
1
2
3
4
5
6
7
| CREATE TABLE Users( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR (50) NOT NULL , email VARCHAR (50) NOT NULL , UNIQUE (username), UNIQUE (email) ); |
Sử dụng Alter Table để tạo
Trong trường hợp này chúng ta sẽ tạo bảng trước, sau đó sử dụng lệnh
Alter Table
để thêm UNIQUE
.
1
2
3
4
5
6
7
8
| CREATE TABLE Users( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR (50) NOT NULL , email VARCHAR (50) NOT NULL ); ALTER TABLE Users ADD UNIQUE (username); ALTER TABLE Users ADD UNIQUE (email); |
Sử dụng CONSTRAINT để tạo tên cho UNIQUE
Cách này khuyến khích sử dụng vì mỗi index chúng ta nên đặt cho nó một cái tên để sau này muốn thao tác delete index đó thì dựa vào cái tên đó để xóa. Ví dụ:
1
2
3
4
5
6
7
| CREATE TABLE Users( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR (50) NOT NULL , email VARCHAR (50) NOT NULL , CONSTRAINT user_unique UNIQUE (username), CONSTRAINT email_unique UNIQUE (email) ); |
1
| ALTER TABLE Users ADD CONSTRAINT user_unique UNIQUE (username) |
3. Xóa (Drop) Unique trong MySQL
Sau khi tạo
UNIQUE
xong nếu bạn muốn bỏ nó đi thì sẽ sử dụng lệnh ALTER TABLE
kết hợp với DROP
. Tuy nhiên để xóa UNIQE
nào thì chúng ta phải biết được tên của nó nên bạn phải dùng cách CONSTRAINT
để tạo nhé. Sau đây là ví dụ xóa UNIQUE
.
1
| ALTER TABLE Users DROP INDEX user_unique |
# Lời kết
Bài này chủ yếu hướng dẫn cách tạo
UNIQUE
trong MYSQL
và phân biệt nó với Primary Key
. Thực sự mà nói thì kiến thức của nó cũng không có gì là to lớn cả nhưng rất cần thiết cho các bạn newbie muốn học mysql.
Nguồn: (code.freetuts.net)
0 nhận xét: