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

FOREIGN KEY (Khóa ngoại ) trong MySQL

FOREIGN KEY (Khóa ngoại ) trong MySQL dùng để tham chiếu khóa ngoại của một bảng con đến khóa chính của bảng cha, chi tiết như nào hãy cùng chúng tôi phân tích:

FOREIGN KEY (Khóa ngoại ) trong MySQL

FOREIGN KEY (Khóa ngoại ) trong MySQL

Chức năng của FOREIGN KEY (Khóa ngoại ) trong MySQL

FOREIGN KEY (Khóa ngoại ) trong MySQL dùng để tham chiếu khóa ngoại của một bảng con đến khóa chính của bảng cha, nó ràng buộc nếu có giá trị ở bảng khóa ngoại thì bên khóa chính không thể xóa được.

Code FOREIGN KEY (Khóa ngoại ) trong MySQL

FOREIGN KEY (Khóa ngoại ) lúc CREATE TABLE trong MySQL

Khóa chính: Tạo tb_lop học có khóa chính là id

<?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_lophoc`
   echo "<b>CREATE TABLE `tb_lophoc`</b><br>";
   $sql ="CREATE TABLE `tb_lophoc` (
  `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `ten` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL
  ) 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_lophoc thành công!"; 
   } 
   // Đóng kết nối database
   mysql_close($conn);
?>

Khóa ngoại: Tạo tb_hocsinh có khóa ngoại là idlophoc tham chiếu tới khóa chính id trong tb_lophoc

<?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_hocsinh`
   echo "<b>CREATE TABLE `tb_hocsinh`</b><br>";
   $sql ="CREATE TABLE `tb_hocsinh` (
  `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `ten` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `idlophoc` int(11) NOT NULL,
  FOREIGN KEY (idlophoc) REFERENCES tb_lophoc(id)  
  ) 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_hocsinh thành công!"; 
   } 
   // Đóng kết nối database
   mysql_close($conn);
?>

FOREIGN KEY (Khóa ngoại ) lúc CREATE TABLE trong MySQL

Tạo khóa ngoại không có đặt tên khóa ngoại, tb_hocsinh và tb_lophoc đã có, mình đặt tên khóa ngoại là KN_idlophoc:

<?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_hocsinh`
   echo "<b>ALTER TABLE `tb_hocsinh`</b><br>";
   $sql ="ALTER TABLE tb_hocsinh ADD FOREIGN KEY (idlophoc) REFERENCES tb_lophoc(id);";
   $ketquamot = mysql_query($sql,$conn);
   if(!$ketquamot){
	  die('Không thể ALTER TABLE: ' . mysql_error());  
   }else{
	  echo "ALTER TABLE tb_hocsinh thành công!"; 
   } 
   // Đóng kết nối database
   mysql_close($conn);
?>

Tạo khóa ngoại có đặt tên khóa ngoại, tb_hocsinh và tb_lophoc đã 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"');
   
  // ALTER TABLE `tb_hocsinh`
   echo "<b>ALTER TABLE `tb_hocsinh`</b><br>";
   $sql ="ALTER TABLE tb_hocsinh ADD CONSTRAINT KN_idlophoc FOREIGN KEY (idlophoc) REFERENCES tb_lophoc(id);";
   $ketquamot = mysql_query($sql,$conn);
   if(!$ketquamot){
	  die('Không thể ALTER TABLE: ' . mysql_error());  
   }else{
	  echo "ALTER TABLE tb_hocsinh thành công!"; 
   } 
   // Đóng kết nối database
   mysql_close($conn);
?>

Xóa tên khóa ngoại KN_idlophoc vừa đặt, nhiều phpmyadmin không cho xóa qua code:

<?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_hocsinh`
   echo "<b>ALTER TABLE `tb_hocsinh`</b><br>";
   $sql ="ALTER TABLE tb_hocsinh DROP FOREIGN KEY KN_idlophoc";
   $ketquamot = mysql_query($sql,$conn);
   if(!$ketquamot){
	  die('Không thể ALTER TABLE: ' . mysql_error());  
   }else{
	  echo "ALTER TABLE tb_hocsinh thành công!"; 
   } 
   // Đóng kết nối database
   mysql_close($conn);
?>

Lời kết

Cảm ơn các bạn đã tham khảo bài viết FOREIGN KEY (Khóa ngoại ) 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ề FOREIGN KEY (Khóa ngoại ) 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