Ở các bài trước chúng ta đã tìm hiểu ràng buộc primary key và foreign key rồi, vậy thì trong bài này mình sẽ giới thiệu thêm một ràng buộc quan trọng trong SQL dùng để xử lý vấn đề bảo toàn ràng buộc toàn vẹn dữ liệu đó là UNIQUE.

Đang xem: Unique là gì sql

*

*

1. UNIQUE trong SQL Server

Ở bài học tạo bảng Create Tablemình có giới thiệu sơ qua về một vài ràng buộc này rồi, tuy nhiên bài này chúng ta sẽ học kỹ hơn nhé.

UNIQUE là ràng buộc trên giá trị duy nhất trên column, có nghĩa là các dòng dữ liệu không được có giá trị trùng nhau ở column đó. Ràng buộc này giống như khóa chính vậy, vì bản chất nó cũng là một khóa.

Ví dụ trong bảng SINHVIEN sẽ có MASINHVIEN là khóa chính, và cột CMND sẽ là UNIQUE. Thực ra bạn cũng có thể lấy CMND là khoa chính nhưng như vậy sẽ không hay lắm.

Bài viết này được đăng tại

Chúng ta có hai cách tạo UNIQUE như sau:

Thiết lập ngay column

Cách này bạn sẽ đặt từ khóa UNIQUE ở cuối column muốn nó có giá trị không trùng lặp.

CREATE TABLE hr.persons( person_id INT IDENTITY PRIMARY KEY, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, email VARCHAR(255) UNIQUE);

Column email là UNIQUE.

Thiết lập ở cuối các column

Trường hợp này bạn đặt UNIQUE (column_list) ở cuối lệnh Create Table, nếu có nhiều column thì cách nhau bởi dấu phẩy.

CREATE TABLE hr.persons( person_id INT IDENTITY PRIMARY KEY, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, email VARCHAR(255), UNIQUE(email));

SQL Server sẽ tự động tạo ra một INDEX UNIQUE và chạy nó mỗi khi bạn thực hiện thao tác INSERT hoặc UPDATE, nếu bạn cập nhật dữ liệu bị trùng thì nó sẽ thông báo lỗi.

Hãy thử chạy hai câu lệnh INSERT dưới đây để xem có đúng không nhé.

Lệnh 1
INSERT INTO hr.persons(first_name, last_name)VALUES(“John”,”Smith”);

Lệnh 1 này hoạt động bình thường.

Lệnh 2
INSERT INTO hr.persons(first_name, last_name, email)VALUES(“Jane”,”Doe”,”j.doe
bike.stores”);

Lệnh 2 sẽ bị báo lỗi vì cột email bị trùng.

Xem thêm:

Violation of UNIQUE KEY constraint “UQ__persons__AB6E616417240E4E”. Cannot insert duplicate key in object “hr.persons”. The duplicate key value is(j.doe
bike.stores).

Đặt tên cho UNIQUE

Cái tênUQ__persons__AB6E616417240E4Elà do SQL Server tự sinh ra vì bạn không đặt tên cho UNIQUE, nếu bạn muốn đặt tên thì hãy sử dụng từ khóaCONSTRAINT.

CREATE TABLE hr.persons ( person_id INT IDENTITY PRIMARY KEY, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, email VARCHAR(255), CONSTRAINT unique_email UNIQUE(email));

Tại sao chúng ta cần đặt tên? Như bạn thấy khi nhận được thông báo lỗi thì ta sẽ dễ dàng biết được do đâu, thứ hai nữa bạn dễ dàng thay đổi khi sử dụng kết hợp với lệnh ALTER TABLE.

2. Phân biệt Primary Key với UNIQUE

Bạn nên phân biệt rõ hai ràng buộc này nhé.

Primary Key là khóa chính của bảng, đây là index đặc biệt nên bạn không chấp nhận giá trị NULLUNIQUE cũng là một khóa nhưng vì là một column bình thường nên có thể nhận giá trị NULL.

NULL cũng là một giá trị bình thường nên khi có 2 record đều NULL thì vẫn bị lỗiduplicate value nhé.

3. Tạo UNIQUE cho nhiều column

Để tạo UNIQUE cho nhiều column thì bạn phải sử dụng cách thứ hai đó làthiết lập ở cuối các column, cú pháp như sau:

CREATE TABLE table_name ( key_column data_type PRIMARY KEY, column1 data_type, column2 data_type, column3 data_type, …, UNIQUE (column1,column2));

Ví dụ dưới đây tạo UNIQUE cho hai columnperson_id vàskill_id.

CREATE TABLE hr.person_skills ( id INT IDENTITY PRIMARY KEY, person_id int, skill_id int, updated_at DATETIME, UNIQUE (person_id, skill_id));

4. Thêm UNIQUE bằng lệnh ALTER TABLE

Khi bạn đã tạo xong table rồi nhưng sau đó muốn bổ sung UNIQUE cho một field nào đó thì hãy sử dụng lệnh ALTER TABLE, cú pháp như sau:

ALTER TABLE table_nameADD CONSTRAINT constraint_name UNIQUE(column1, column2,…);

Ví dụ: Giả sử ta có table như sau.

CREATE TABLE hr.persons ( person_id INT IDENTITY PRIMARY KEY, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, email VARCHAR(255), phone VARCHAR(20),);

Bây giờ mình sẽ bổ sung UNIQUE cho hai column email và phone.

ALTER TABLE hr.personsADD CONSTRAINT unique_email UNIQUE(email);ALTER TABLE hr.personsADD CONSTRAINT unique_phone UNIQUE(phone);

5. Xóa UNIQUE

UNIQUE cũng là một constraint nên bạn hoàn toàn có thể sử dụng lệnhDROP CONSTRAINT để xóa.

Xem thêm: Những Câu Hỏi Nên Hỏi Bạn Gái Thích Trả Lời Nhất Giúp Bạn Hiểu Nàng

ALTER TABLE table_nameDROP CONSTRAINT constraint_name;

Ví dụ: Xóa unique có tên làunique_phone ra khỏi bảnghr.persons.

ALTER TABLE hr.personsDROP CONSTRAINT unique_phone;
Bài trước Bài tiếp

Hàm CHAR trong SQL Server

Cách sử dụng hàm CHAR trong SQL Server

Hàm CHARINDEX trong SQL Server

Cách sử dụng hàm CHARINDEX trong SQL Server

Hàm CONCAT trong SQL Server

Cách sử dụng hàm CONCAT trong SQL Server

Hàm + trong SQL Server

Cách sử dụng hàm + trong SQL Server

Hàm DATALENGTH trong SQL Server

Cách sử dụng hàm DATALENGTH trong SQL Server

Hàm LEFT trong SQL Server

Cách sử dụng hàm LEFT trong SQL Server

Hàm LEN trong SQL Server

Cách sử dụng hàm LEN trong SQL Server

Hàm LOWER trong SQL Server

Cách sử dụng hàm LOWER trong SQL Server

Hàm LTRIM trong SQL Server

Cách sử dụng hàm LTRIM trong SQL Server

Hàm NCHAR trong SQL Server

Cách sử dụng hàm NCHAR trong SQL Server

Hàm PATINDEX trong SQL Server

Cách sử dụng hàm PATINDEX trong SQL Server

Hàm REPLACE trong SQL Server

Cách sử dụng hàm REPLACE trong SQL Server

Hàm RIGHT trong SQL Server

Cách sử dụng hàm RIGHT trong SQL Server

Hàm RTRIM trong SQL Server

Cách sử dụng hàm RTRIM trong SQL Server

Hàm SPACE trong SQL Server

Cách sử dụng hàm SPACE trong SQL Server

Hàm STR trong SQL Server

Cách sử dụng hàm STR trong SQL Server

Hàm UPPER trong SQL Server

Cách sử dụng hàm UPPER trong SQL Server

Hàm SUBSTRING trong SQL Server

Cách sử dụng hàm SUBSTRING trong SQL Server

Hàm STUFF trong SQL Server

Cách sử dụng hàm STUFF trong SQL Server

Hàm ABS trong SQL Server

Cách sử dụng hàm ABS trong SQL Server

WORDPRESS
HTML Templates
Theme WordPress
Plugin WordPress
Lập trình WordPress
Thủ thuật WordPress
WEB HOSTING
Quản trị Linux
Thủ thuật Hosting
Kiến thức Domain
WEB FRONTEND
Javascript
AngularJS
jQuery
jQuery Mobile
HTML & CSS
Bootstrap
TypeScript
SASS CSS
VueJS
NestJS
Học ReactJS
WEB BACKEND
PHP
Codeigniter
Laravel
Phalcon
OpenCart
NodeJS
Blogspot
DATABASE
Học MySQL
Học MongoDB
CSDL căn bản
Học Oracle
Học SQL Server
Học SQLite
PROGRAMMING
Python
Java
Pascal
Học C#
Học Ruby
Học Swift
C / C++
Kotlin
Golang
Giải thuật
Visual Basic
MOBILE DEV
React Native
Học iOS
Android
Flutter
CÔNG CỤ
Học Git
Testing
Control Panel
Dev Tool
FFmpeg
TIN HỌC
Excel
Word
PowerPoint
Access
Photoshop
MÔN HỌC
Tiếng Anh
Toán
Tiếng Nhật
Văn học
VIDEO
CSS Lab
PHP Lab
Giới thiệu
Giới thiệu Liên hệ Chính sách Điều khoản
Thủ thuật
Máy tính Game Điện thoại Ứng dụng
Link hay
Môn học Toán Văn học Tiếng Anh
Liên kết
Gamehow.net
Top Vinsports.net Tải app dk8, dk8 bet, tải dk8

Leave a Reply

Your email address will not be published. Required fields are marked *