Đôi khi bạn có thể cần tạo khóa chính tổng hợp bao gồm nhiều trường, cho các bảng cơ sở dữ liệu. Dưới đây là cách tạo khóa chính tổng hợp trong MySQL.
Cách tạo khóa chính tổng hợp trong MySQL
Dưới đây là các bước để tạo khóa chính tổng hợp trong MySQL. Bạn có thể tạo khóa chính tổng hợp, trong khi tạo bảng bằng câu lệnh CREATE TABLE hoặc sau khi tạo bảng bằng câu lệnh ALTER TABLE. Chúng ta sẽ xem xét cả hai ví dụ này để tạo khóa chính tổng hợp trong MySQL.
Ví dụ về khóa chính tổng hợp của MySQL
Dưới đây là cách tạo khóa chính tổng hợp trong MySQL trong quá trình tạo bảng. Giả sử bạn muốn tạo đơn hàng (order_id, product_id, số lượng) bảng có khóa chính tổng hợp (order_id, product_id).
mysql> CREATE TABLE orders_list ( order_id INT, product_id INT, amount INT, PRIMARY KEY (order_id, product_id) ) ; mysql> describe orders_list; +------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+-------+ | order_id | int(11) | NO | PRI | 0 | | | product_id | int(11) | NO | PRI | 0 | | | amount | int(11) | YES | | NULL | | +------------+---------+------+-----+---------+-------+
Trong truy vấn trên, chúng tôi đã tạo khóa chính tổng hợp (order_id, product_id). Trong kết quả đầu ra ở trên, bạn sẽ thấy PRI được đề cập trong cột Chính cho order_id, product_id cho biết rằng chúng đều là một phần của khóa chính.
Phần thưởng đọc:Cách cắt ngắn bảng trong MySQL
Thêm khóa chính tổng hợp trong bảng hiện có
Dưới đây là ví dụ về cách thêm khóa chính tổng hợp trong bảng hiện có. Giả sử bạn có bảng sau
mysql> CREATE TABLE new_orders ( order_id INT, product_id INT, amount INT ) ; mysql> describe new_orders; +------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+-------+ | order_id | int(11) | YES | | NULL | | | product_id | int(11) | YES | | NULL | | | amount | int(11) | YES | | NULL | | +------------+---------+------+-----+---------+-------+
Như bạn có thể thấy new_orders bảng không có khóa chính. Đây là truy vấn SQL để thêm khóa chính tổng hợp bằng ALTER TABLE.
Phần thưởng đã đọc:CHẾ ĐỘ XEM DROP của MySQL
mysql> alter table new_orders ADD PRIMARY KEY (order_id, product_id); mysql> describe new_orders; +------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+-------+ | order_id | int(11) | NO | PRI | 0 | | | product_id | int(11) | NO | PRI | 0 | | | amount | int(11) | YES | | NULL | | +------------+---------+------+-----+---------+-------+
Xin lưu ý, bạn không thể tạo khóa chính tổng hợp MySQL với số tự động.
Phần thưởng đọc:Cách tạo chỉ mục trong MySQL
Chỉ mục khóa chính tổng hợp của MySQL
Bạn có thể tạo chỉ mục cho khóa chính tổng hợp sử dụng cùng các trường có trong khóa chính tổng hợp của bạn.
mysql> alter table new_orders ADD INDEX new_index (order_id, product_id);
Hy vọng rằng bây giờ bạn có thể tạo khóa chính tổng hợp trong MySQL.
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!