Công ty thiết kế website chuẩn SEO Web Mới
Tìm kiếm
Công ty thiết kế website chuẩn SEO Web Mới

Chỉ mục UNIQUE trong MySQL

Chỉ mục UNIQUE trong MySQL dùng để ràng buộc giá trị truyền vào không cho phép trùng với giá trị cột trong bảng nhưng giá trị NULL thì được, chi tiết như nào hãy cùng chúng tôi phân tích:

Chỉ mục UNIQUE trong MySQL

Chỉ mục UNIQUE trong MySQL

Chức năng của Chỉ mục UNIQUE trong MySQL

Chỉ mục UNIQUE trong MySQL dùng để ràng buộc giá trị truyền vào không cho phép trùng với giá trị cột trong bảng nhưng giá trị NULL thì được, bạn có thể tạo nhiều tên chỉ mục, mỗi tên chỉ mục có thể là một cột hoặc nhiều cột.

Chỉ mục UNIQUE khi tạo bảng trong MySQL

Chỉ mục UNIQUE một cột khi tạo bảng trong MySQL

Giá trị của cột cccd mới thêm vào không được trùng với giá trị có trong bảng, NULL thì được:

<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'IhNRcn9n'; // Mật khẩu
   // Kết nối đến tên username
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   if(! $conn ){
     die('Không kết nối được: ' . mysql_error());
   }
   // Chọn tên database
   mysql_select_db('webmoi_tendata');
   // Xét kiểu tiếng việt 
   mysql_query('SET NAMES "utf8"');
   
  // CREATE TABLE `tb_congdan`
   echo "<b>CREATE TABLE `tb_congdan`</b><br>";
   $sql ="CREATE TABLE `tb_congdan` (
  `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `ten` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `cccd` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci UNIQUE
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
  ";
  //Cột id: kiểu int giới hạn 11 ký tự, không cho phép null, PRIMARY KEY là tạo khóa chính, AUTO_INCREMENT là tự động tăng dần sau mỗi lần thêm một hàng
  // Cột ten: kiểu chữ varchar giới hạn 255 ký tự, kiểu utf-8, cho phép null
   $ketquamot = mysql_query($sql,$conn);
   if(!$ketquamot){
	  die('Không thể tạo bảng: ' . mysql_error());  
   }else{
	  echo "Tạo tb_congdan thành công!"; 
   } 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

CREATE TABLE `tb_congdan`
Tạo tb_congdan thành công!

Chỉ mục UNIQUE nhiều cột khi tạo bảng trong MySQL

Giá trị của cột cccd và cột email mới thêm vào không được cùng nhau trùng với giá trị có trong bảng, nếu một trong 2 cột trùng thì được, hoặc NULL thì được:

<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'IhNRcn9n'; // Mật khẩu
   // Kết nối đến tên username
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   if(! $conn ){
     die('Không kết nối được: ' . mysql_error());
   }
   // Chọn tên database
   mysql_select_db('webmoi_tendata');
   // Xét kiểu tiếng việt 
   mysql_query('SET NAMES "utf8"');
   
  // CREATE TABLE `tb_congdan`
   echo "<b>CREATE TABLE `tb_congdan`</b><br>";
   $sql ="CREATE TABLE `tb_congdan` (
  `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `ten` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `cccd` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci,
  `email` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci,
  UNIQUE (cccd, email) 
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
  ";
  //Cột id: kiểu int giới hạn 11 ký tự, không cho phép null, PRIMARY KEY là tạo khóa chính, AUTO_INCREMENT là tự động tăng dần sau mỗi lần thêm một hàng
  // Cột ten: kiểu chữ varchar giới hạn 255 ký tự, kiểu utf-8, cho phép null
   $ketquamot = mysql_query($sql,$conn);
   if(!$ketquamot){
	  die('Không thể tạo bảng: ' . mysql_error());  
   }else{
	  echo "Tạo tb_congdan thành công!"; 
   } 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

CREATE TABLE `tb_congdan`
Tạo tb_congdan thành công!

Chỉ mục UNIQUE Sau khi tạo bảng (ALTER TABLE) trong MySQL

Chỉ mục UNIQUE một cột sau khi tạo bảng (ALTER TABLE) trong MySQL

<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'IhNRcn9n'; // Mật khẩu
   // Kết nối đến tên username
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   if(! $conn ){
     die('Không kết nối được: ' . mysql_error());
   }
   // Chọn tên database
   mysql_select_db('webmoi_tendata');
   // Xét kiểu tiếng việt 
   mysql_query('SET NAMES "utf8"');
   
  // ALTER TABLE `tb_congdan`
   echo "<b>ALTER TABLE `tb_congdan`</b><br>";
   $sql ="ALTER TABLE tb_congdan
        ADD CONSTRAINT U_cccd UNIQUE (cccd)";
   $ketquamot = mysql_query($sql,$conn);
   if(!$ketquamot){
	  die('Không thể ALTER TABLE: ' . mysql_error());  
   }else{
	  echo "ALTER TABLE tb_congdan thành công!"; 
   } 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

ALTER TABLE `tb_congdan`
ALTER TABLE tb_congdan thành công!

Chỉ mục UNIQUE nhiều cột sau khi tạo bảng (ALTER TABLE) trong MySQL

<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'IhNRcn9n'; // Mật khẩu
   // Kết nối đến tên username
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   if(! $conn ){
     die('Không kết nối được: ' . mysql_error());
   }
   // Chọn tên database
   mysql_select_db('webmoi_tendata');
   // Xét kiểu tiếng việt 
   mysql_query('SET NAMES "utf8"');
   
  // ALTER TABLE `tb_congdan`
   echo "<b>ALTER TABLE `tb_congdan`</b><br>";
   $sql ="ALTER TABLE tb_congdan
        ADD CONSTRAINT U_cccdemail UNIQUE (cccd,email)";
   $ketquamot = mysql_query($sql,$conn);
   if(!$ketquamot){
	  die('Không thể ALTER TABLE: ' . mysql_error());  
   }else{
	  echo "ALTER TABLE tb_congdan thành công!"; 
   } 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

ALTER TABLE `tb_congdan`
ALTER TABLE tb_congdan thành công!

Xóa tên chỉ mục UNIQUE trong MySQL

<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'IhNRcn9n'; // Mật khẩu
   // Kết nối đến tên username
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   if(! $conn ){
     die('Không kết nối được: ' . mysql_error());
   }
   // Chọn tên database
   mysql_select_db('webmoi_tendata');
   // Xét kiểu tiếng việt 
   mysql_query('SET NAMES "utf8"');
   
  // ALTER TABLE `tb_congdan`
   echo "<b>ALTER TABLE `tb_congdan`</b><br>";
   $sql ="ALTER TABLE tb_congdan
          DROP INDEX U_cccdemail";
   $ketquamot = mysql_query($sql,$conn);
   if(!$ketquamot){
	  die('Không thể ALTER TABLE: ' . mysql_error());  
   }else{
	  echo "ALTER TABLE tb_congdan thành công!"; 
   } 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

ALTER TABLE `tb_congdan`
ALTER TABLE tb_congdan thành công!

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Chỉ mục UNIQUE trong MySQL.

Tải file database .sql về nếu muốn kiểm tra hoặc thực hành Tải về.

  • 0 Bình luận
CEO Bùi Tấn Lực
Bùi Tấn Lực
CEO Bùi Tấn Lực người sáng lập ra Web Mới, là một lập trình viên website, người viết content, chuyên tư vấn các vấn đề về website và SEO website
  • Zalo
Chia sẻ nội dung đánh giá của bạn về Chỉ mục UNIQUE trong MySQL
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Đăng ký tư vấn miễn phí
Tìm hiểu 1 năm không bằng lắng nghe 1 câu tư vấn
Kiến thức PHP
Kiến thức JavaScript
Kiến thức về website
Kiến thức SEO website
0398.259.259