Khóa ngoại giúp thiết lập các mối quan hệ cơ sở dữ liệu và duy trì tính toàn vẹn của tham chiếu. Chúng giúp liên kết một hoặc nhiều cột trong một bảng này với một bảng khác. Đây là cách thêm khóa ngoại trong MySQL.
Cách thêm khóa ngoại trong MySQL
Dưới đây là các bước để thêm khóa ngoại trong MySQL. Bạn có thể thêm ràng buộc khóa ngoại bằng cách sử dụng câu lệnh CREATE TABLE hoặc ALTER TABLE trong SQL.
Đây là cú pháp để tạo khóa ngoại trong MySQL.
Sử dụng BẢNG ALTER
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (foreign_key_name,...) REFERENCES parent_table(column_name,...);
Trong truy vấn trên, table_name là bảng mà bạn muốn thêm khóa ngoại. tên_làm_cân là tên của ràng buộc khóa ngoại. Foreign_key_name,… là danh sách các cột khóa ngoại.
parent_table là bảng mà Foreign_key của bạn tham chiếu đến, theo sau là danh sách các tên cột trong bảng đó
Phần thưởng Đọc:Cột Bảng thay thế MySQL
Sử dụng TẠO BẢNG
CREATE TABLE table_name( column_name column_description, CONSTRAINT constraint_name FOREIGN KEY (foreign_key_name,...) REFERENCES parent_table(column_name,...) )
Trong truy vấn trên, table_name là bảng mà bạn muốn thêm khóa ngoại. tên_làm_cân là tên của ràng buộc khóa ngoại. Foreign_key_name,… là danh sách các cột khóa ngoại.
parent_table là bảng mà Foreign_key của bạn tham chiếu đến, theo sau là danh sách các tên cột trong bảng đó.
Xin lưu ý , trong ALTER TABLE, bạn cần sử dụng ADD CONSTRAINT trong khi trong CREATE TABLE, bạn chỉ cần sử dụng từ khóa CONSTRAINT.
Phần thưởng đã đọc:Ràng buộc về chìa khóa ngoại lai của MySQL
MySQL ADD FOREIGN KEY Ví dụ
Giả sử bạn có các bảng sau.
Hãy tạo 2 bảng ( danh mục và đơn đặt hàng ) và thêm ràng buộc khóa ngoại vào đơn đặt hàng , tham chiếu đến id cột trong danh mục bảng.
mysql> create table categories(id int auto_increment primary key,name varchar(255)); mysql> create table orders(id int auto_increment primary key,category_id int, CONSTRAINT fk_cat FOREIGN KEY (category_id) REFERENCES categories(id)); mysql> describe orders; +-------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | category_id | int(11) | YES | MUL | NULL | | +-------------+---------+------+-----+---------+----------------+
Phần thưởng đã đọc:MySQL DROP UNIQUE CONSTRAINT
Hãy xem cùng một ví dụ sử dụng câu lệnh ALTER TABLE.
mysql> create table orders(id int auto_increment primary key,category_id int); mysql> create table categories(id int auto_increment primary key,name varchar(255)); mysql> ALTER TABLE orders ADD CONSTRAINT fk_cat FOREIGN KEY (category_id) REFERENCES categories(id); mysql> describe orders; +-------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | category_id | int(11) | YES | MUL | NULL | | +-------------+---------+------+-----+---------+----------------+
Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!