Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tạo khóa chính tổng hợp trong MySQL

Đô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!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi mySQL 1040:Quá nhiều kết nối

  2. Truy vấn MySQL - Bản ghi từ hôm nay đến 30 ngày trước

  3. LỖI 1045 (28000):Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost' (sử dụng mật khẩu:CÓ)

  4. Cách gọi thủ tục lưu trữ MySQL bằng Python

  5. Cách kết nối với MySQL bằng Perl