Các loại khóa MySQL

Tóm lược. trong hướng dẫn này, bạn sẽ học cách sử dụng ràng buộc khóa chính của MySQL để tạo khóa chính cho một bảng

Show

Giới thiệu về khóa chính MySQL

Khóa chính là một cột hoặc một tập hợp các cột xác định duy nhất mỗi hàng trong bảng. Khóa chính tuân theo các quy tắc này

  • Khóa chính phải chứa các giá trị duy nhất. Nếu khóa chính bao gồm nhiều cột, tổ hợp các giá trị trong các cột này phải là duy nhất
  • Cột khóa chính không được có giá trị

    CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

    Code language: SQL (Structured Query Language) (sql)
    1. Mọi nỗ lực chèn hoặc cập nhật

    CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

    Code language: SQL (Structured Query Language) (sql)
    2 vào cột khóa chính sẽ dẫn đến lỗi. Lưu ý rằng MySQL ngầm thêm một ràng buộc

    CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

    Code language: SQL (Structured Query Language) (sql)
    3 vào các cột khóa chính
  • Một bảng có thể có một và duy nhất một khóa chính

Các loại khóa MySQL
Các loại khóa MySQL

Vì MySQL hoạt động nhanh hơn với số nguyên nên kiểu dữ liệu của cột khóa chính phải là số nguyên e. g. ,

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)
4

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)
5. Và bạn nên đảm bảo rằng phạm vi giá trị của loại số nguyên cho khóa chính là đủ để lưu trữ tất cả các hàng có thể có mà bảng có thể có

Cột khóa chính thường có thuộc tính

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)
6 tự động tạo một số nguyên tuần tự bất cứ khi nào bạn chèn một hàng mới vào bảng

Khi bạn xác định khóa chính cho một bảng, MySQL sẽ tự động tạo một chỉ mục có tên là

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)
7

MySQL CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );Code language: SQL (Structured Query Language) (sql)8 ví dụ

Ràng buộc

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)
8 cho phép bạn xác định khóa chính của bảng khi bạn tạo hoặc thay đổi bảng

1) Xác định ràng buộc CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );Code language: SQL (Structured Query Language) (sql)8 trong CREATE TABLE table_name ( primary_key_column datatype, .. , PRIMARY KEY(primary_key_column) );Code language: SQL (Structured Query Language) (sql)1

Thông thường, bạn xác định khóa chính cho một bảng trong câu lệnh

CREATE TABLE table_name ( primary_key_column datatype, .. , PRIMARY KEY(primary_key_column) );

Code language: SQL (Structured Query Language) (sql)
2

Nếu khóa chính có một cột, bạn có thể sử dụng ràng buộc

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)
8 làm ràng buộc cột

CREATE TABLE table_name( primary_key_column datatype PRIMARY KEY, ... );

Code language: SQL (Structured Query Language) (sql)

Khi khóa chính có nhiều hơn một cột, bạn phải sử dụng ràng buộc

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)
8 làm ràng buộc bảng

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)

Trong cú pháp này, bạn phân tách các cột trong

CREATE TABLE table_name ( primary_key_column datatype, .. , PRIMARY KEY(primary_key_column) );

Code language: SQL (Structured Query Language) (sql)
5 bằng dấu phẩy (,)

Có thể sử dụng ràng buộc bảng

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)
8 khi khóa chính có một cột

CREATE TABLE table_name ( primary_key_column datatype, .. , PRIMARY KEY(primary_key_column) );

Code language: SQL (Structured Query Language) (sql)

Ví dụ sau tạo một bảng tên là

CREATE TABLE table_name ( primary_key_column datatype, .. , PRIMARY KEY(primary_key_column) );

Code language: SQL (Structured Query Language) (sql)
7 có khóa chính là cột

CREATE TABLE table_name ( primary_key_column datatype, .. , PRIMARY KEY(primary_key_column) );

Code language: SQL (Structured Query Language) (sql)
8

CREATE TABLE users( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(40), password VARCHAR(255), email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)

Câu lệnh này tạo bảng

CREATE TABLE table_name ( primary_key_column datatype, .. , PRIMARY KEY(primary_key_column) );

Code language: SQL (Structured Query Language) (sql)
9 có ràng buộc

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)
8 làm ràng buộc bảng

CREATE TABLE roles( role_id INT AUTO_INCREMENT, role_name VARCHAR(50), PRIMARY KEY(role_id) );

Code language: SQL (Structured Query Language) (sql)

Trong trường hợp khóa chính bao gồm nhiều cột, bạn phải chỉ định chúng ở cuối câu lệnh

CREATE TABLE table_name ( primary_key_column datatype, .. , PRIMARY KEY(primary_key_column) );

Code language: SQL (Structured Query Language) (sql)
1. Bạn đặt một danh sách các cột khóa chính được phân tách bằng dấu phẩy bên trong dấu ngoặc đơn theo sau từ khóa

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)
8

Ví dụ sau tạo bảng

CREATE TABLE users( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(40), password VARCHAR(255), email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)
3 có khóa chính gồm hai cột.

CREATE TABLE table_name ( primary_key_column datatype, .. , PRIMARY KEY(primary_key_column) );

Code language: SQL (Structured Query Language) (sql)
8 và

CREATE TABLE users( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(40), password VARCHAR(255), email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)
5. Nó định nghĩa ràng buộc

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)
8 là ràng buộc bảng

CREATE TABLE user_roles( user_id INT, role_id INT, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id) );

Code language: SQL (Structured Query Language) (sql)

Lưu ý rằng câu lệnh cũng tạo ra hai ràng buộc khóa ngoại

2) Xác định ràng buộc CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );Code language: SQL (Structured Query Language) (sql)8 bằng cách sử dụng CREATE TABLE users( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(40), password VARCHAR(255), email VARCHAR(255) );Code language: SQL (Structured Query Language) (sql)8

Nếu một bảng vì lý do nào đó không có khóa chính, bạn có thể sử dụng câu lệnh

CREATE TABLE users( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(40), password VARCHAR(255), email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)
9 để thêm khóa chính vào bảng như sau

ALTER TABLE table_name ADD PRIMARY KEY(column_list);

Code language: SQL (Structured Query Language) (sql)

Ví dụ sau thêm cột

CREATE TABLE roles( role_id INT AUTO_INCREMENT, role_name VARCHAR(50), PRIMARY KEY(role_id) );

Code language: SQL (Structured Query Language) (sql)
0 vào khóa chính

Đầu tiên, tạo bảng

CREATE TABLE roles( role_id INT AUTO_INCREMENT, role_name VARCHAR(50), PRIMARY KEY(role_id) );

Code language: SQL (Structured Query Language) (sql)
1 không có khóa chính

CREATE TABLE pkdemos( id INT, title VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)

Thứ hai, thêm khóa chính vào bảng

CREATE TABLE roles( role_id INT AUTO_INCREMENT, role_name VARCHAR(50), PRIMARY KEY(role_id) );

Code language: SQL (Structured Query Language) (sql)
1 bằng cách sử dụng câu lệnh

CREATE TABLE users( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(40), password VARCHAR(255), email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)
8

ALTER TABLE pkdemos ADD PRIMARY KEY(id);

Code language: SQL (Structured Query Language) (sql)

Nếu bạn thêm khóa chính vào bảng đã có dữ liệu. Dữ liệu trong (các) cột sẽ được đưa vào khóa chính phải là duy nhất và không phải NULL

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );Code language: SQL (Structured Query Language) (sql)8 so với. CREATE TABLE roles( role_id INT AUTO_INCREMENT, role_name VARCHAR(50), PRIMARY KEY(role_id) );Code language: SQL (Structured Query Language) (sql)5 so với. CREATE TABLE roles( role_id INT AUTO_INCREMENT, role_name VARCHAR(50), PRIMARY KEY(role_id) );Code language: SQL (Structured Query Language) (sql)6

CREATE TABLE roles( role_id INT AUTO_INCREMENT, role_name VARCHAR(50), PRIMARY KEY(role_id) );

Code language: SQL (Structured Query Language) (sql)
6 là từ đồng nghĩa với 

CREATE TABLE roles( role_id INT AUTO_INCREMENT, role_name VARCHAR(50), PRIMARY KEY(role_id) );

Code language: SQL (Structured Query Language) (sql)
8. Bạn sử dụng 

CREATE TABLE roles( role_id INT AUTO_INCREMENT, role_name VARCHAR(50), PRIMARY KEY(role_id) );

Code language: SQL (Structured Query Language) (sql)
6 khi muốn tạo chỉ mục cho một cột hoặc một nhóm cột không phải là một phần của khóa chính hoặc khóa duy nhất

Chỉ mục

CREATE TABLE user_roles( user_id INT, role_id INT, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id) );

Code language: SQL (Structured Query Language) (sql)
0 đảm bảo rằng các giá trị trong một cột phải là duy nhất. Không giống như chỉ mục

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)
7, MySQL cho phép các giá trị

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)
2 trong chỉ mục

CREATE TABLE user_roles( user_id INT, role_id INT, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id) );

Code language: SQL (Structured Query Language) (sql)
3. Ngoài ra, một bảng có thể có nhiều

CREATE TABLE user_roles( user_id INT, role_id INT, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id) );

Code language: SQL (Structured Query Language) (sql)
3 chỉ mục

Giả sử rằng

CREATE TABLE user_roles( user_id INT, role_id INT, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id) );

Code language: SQL (Structured Query Language) (sql)
5 và

CREATE TABLE user_roles( user_id INT, role_id INT, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id) );

Code language: SQL (Structured Query Language) (sql)
6 của người dùng trong bảng

CREATE TABLE table_name ( primary_key_column datatype, .. , PRIMARY KEY(primary_key_column) );

Code language: SQL (Structured Query Language) (sql)
7 phải là duy nhất. Để thực thi các quy tắc này, bạn có thể xác định các chỉ mục

CREATE TABLE user_roles( user_id INT, role_id INT, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id) );

Code language: SQL (Structured Query Language) (sql)
3 cho các cột

CREATE TABLE user_roles( user_id INT, role_id INT, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id) );

Code language: SQL (Structured Query Language) (sql)
5 và

CREATE TABLE user_roles( user_id INT, role_id INT, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id) );

Code language: SQL (Structured Query Language) (sql)
6 như câu lệnh sau

Thêm chỉ mục 

CREATE TABLE user_roles( user_id INT, role_id INT, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id) );

Code language: SQL (Structured Query Language) (sql)
3 cho cột

CREATE TABLE user_roles( user_id INT, role_id INT, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id) );

Code language: SQL (Structured Query Language) (sql)
6

ALTER TABLE users ADD UNIQUE INDEX username_unique (username ASC) ;

Code language: SQL (Structured Query Language) (sql)

Thêm chỉ mục 

CREATE TABLE user_roles( user_id INT, role_id INT, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id) );

Code language: SQL (Structured Query Language) (sql)
3 cho cột

CREATE TABLE user_roles( user_id INT, role_id INT, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id) );

Code language: SQL (Structured Query Language) (sql)
5

CREATE TABLE table_name( primary_key_column1 datatype, primary_key_column2 datatype, ..., PRIMARY KEY(column_list) );

Code language: SQL (Structured Query Language) (sql)
0

Trong hướng dẫn này, bạn đã học cách tạo khóa chính cho bảng mới hoặc thêm khóa chính vào bảng hiện có

7 loại chìa khóa là gì?

Khóa có bảy loại rộng trong DBMS. .
Khóa ứng viên
Khóa chính
Khóa ngoại
siêu chìa khóa
Khóa thay thế
Tổ hợp phím
Khóa duy nhất

Các loại khóa là gì?

Khóa chính được sử dụng để xác định một hàng cụ thể trong bảng. Khóa duy nhất được sử dụng để đảm bảo rằng chỉ có một mục nhập trong một bảng cụ thể. Khóa ngoại được sử dụng để liên kết các mục trong bảng này với bảng khác. Khóa tổng hợp là một tập hợp nhiều cột trong một bảng mà tất cả cùng nhau được sử dụng để xác định một hàng

Khóa MySQL là gì?

Ràng buộc PRIMARY KEY xác định duy nhất từng bản ghi trong bảng . Khóa chính phải chứa giá trị ĐỘC ĐÁO và không thể chứa giá trị NULL. Một bảng chỉ có thể có MỘT khóa chính; .

Bốn loại khóa chính trong SQL là gì?

SQL cung cấp siêu khóa, khóa chính, khóa dự tuyển, khóa thay thế, khóa ngoại, khóa phức hợp, khóa tổng hợp và khóa thay thế . Các phím SQL sử dụng các ràng buộc để xác định duy nhất các hàng từ dữ liệu karger.