MySQL là một cơ sở dữ liệu quan hệ đối tượng mã nguồn mở được xây dựng chú trọng đến tốc độ và độ tin cậy. Cộng đồng nhà phát triển lớn và tích cực của nó đã tạo ra nhiều ứng dụng, công cụ và thư viện của bên thứ ba giúp mở rộng chức năng của MySQL
Khóa chính là một trường hoặc tổ hợp các trường được xác định để trở thành mã định danh duy nhất cho một hàng trong bảng, chẳng hạn như số của hàng hoặc trường tên kết hợp với trường ngày sinh. Các khóa chính tăng độ chính xác và hiệu suất tìm kiếm, đồng thời tăng cường mối quan hệ tham chiếu chéo giữa các bảng. Một bảng chỉ có thể có một khóa chính và trường khóa chính không thể chứa giá trị null
Theo mặc định, các khóa chính là một yêu cầu trong tất cả các bảng cơ sở dữ liệu MySQL. Điều này đảm bảo sao chép dữ liệu đáng tin cậy. Tuy nhiên, bạn có thể tắt yêu cầu khóa chính của cơ sở dữ liệu bằng cách thực hiện yêu cầu cấu hình thông qua API của chúng tôi
Cách DigitalOcean sử dụng khóa chính
Chúng tôi sử dụng tính năng sao chép để giao tiếp giữa các nút trong cụm nhằm đảm bảo rằng các nút chính, nút dự phòng và chỉ đọc vẫn được đồng bộ hóa. Ngoài ra, chúng tôi áp dụng luồng sao chép đầy đủ bất cứ khi nào bạn tạo nút mới dựa trên bản sao lưu hiện có. Các tính năng sau của dịch vụ phụ thuộc vào việc sao chép
- Khôi phục dịch vụ từ bản sao lưu
- Tự động phục hồi sau sự cố nút
- Forking một dịch vụ mới từ một dịch vụ hiện có
- Di chuyển một dịch vụ hiện có sang một khu vực trung tâm dữ liệu mới
- Mở rộng dịch vụ hiện có sang kích thước lớn hơn
- Thêm các nút ở chế độ chờ hoặc chỉ đọc vào một dịch vụ hiện có
Cách thêm khóa chính theo cách thủ công
Để xác định bảng nào bị thiếu khóa chính, hãy sao chép và dán lệnh sau vào trình bao MySQL và chạy nó
SELECT
tab.table_schema AS database_name,
tab.table_name AS table_name,
tab.table_rows AS table_rows
FROM information_schema.tables tab
LEFT JOIN information_schema.table_constraints tco
ON [tab.table_schema = tco.table_schema
AND tab.table_name = tco.table_name
AND tco.constraint_type = 'PRIMARY KEY']
WHERE
tab.table_schema NOT IN ['mysql', 'information_schema', 'performance_schema', 'sys']
AND tco.constraint_type IS NULL
AND tab.table_type = 'BASE TABLE';
Để xem định nghĩa bảng chính xác cho các bảng, hãy sử dụng câu lệnh SHOW
, thay thế các giá trị giữ chỗ bằng giá trị của riêng bạn
SHOW CREATE TABLE your_database_name.your_table_name;
Để thêm khóa chính vào bảng hiện có, hãy sử dụng câu lệnh ALTER TABLE
, thay thế các giá trị giữ chỗ bằng giá trị của riêng bạn
ALTER TABLE your_table_name ADD PRIMARY KEY [column1, column2, ...];
Ví dụ: lệnh bên dưới tạo bảng kết hợp cột ID khách hàng với cột tên khách hàng để tạo khóa chính
Khóa chính của MySQL là một hoặc một tổ hợp trường, được sử dụng để xác định duy nhất từng bản ghi trong một bảng. Nếu cột chứa các ràng buộc về khóa chính, thì cột đó không được để trống hoặc rỗng. Một bảng có thể có các cột trùng nhau, nhưng nó chỉ có thể chứa một khóa chính. Nó luôn chứa giá trị duy nhất vào một cột
Khi bạn chèn một hàng mới vào bảng, cột khóa chính cũng có thể sử dụng thuộc tính AUTO_INCREMENT để tự động tạo số thứ tự cho hàng đó. MySQL tự động tạo một chỉ mục có tên là "Chính" sau khi xác định khóa chính vào bảng. Vì nó có một chỉ mục được liên kết, nên chúng ta có thể nói rằng khóa chính giúp thực hiện truy vấn nhanh
Quy định về khóa chính
Sau đây là các quy tắc cho khóa chính
- Giá trị cột khóa chính phải là duy nhất
- Mỗi bảng chỉ được chứa một khóa chính
- Cột khóa chính không thể rỗng hoặc trống
- MySQL không cho phép chúng tôi chèn một hàng mới với khóa chính hiện có
- Nên sử dụng kiểu dữ liệu INT hoặc BIGINT cho cột khóa chính
Chúng ta có thể tạo khóa chính theo hai cách
- TẠO BẢNG Tuyên bố
- Câu lệnh ALTER TABLE
Hãy để chúng tôi thảo luận chi tiết từng người
Khóa chính sử dụng câu lệnh CREATE TABLE
Trong phần này, chúng ta sẽ xem cách tạo khóa chính bằng cách sử dụng câu lệnh CREATE TABLE
cú pháp
Sau đây là cú pháp được sử dụng để tạo khóa chính trong MySQL
Nếu chúng ta chỉ muốn tạo một cột khóa chính trong bảng, hãy sử dụng cú pháp dưới đây
Nếu chúng ta muốn tạo nhiều hơn một cột khóa chính trong bảng, hãy sử dụng cú pháp dưới đây
Giải thích thông số
Bảng sau giải thích chi tiết các thông số
Tham số NameDescriptionsTable_nameĐó là tên của bảng mà chúng ta sẽ tạo. Col1, col2Là tên các cột chứa trong bảng. Constraint_nameĐó là tên của khóa chính. [Các] tên_cộtĐó là [các] tên cột sẽ là khóa chínhVí dụ về khóa chính
Ví dụ sau giải thích cách khóa chính được sử dụng trong MySQL
Câu lệnh này tạo một bảng có tên "Đăng nhập" có cột "login_id" chứa khóa chính
Tiếp theo, sử dụng truy vấn chèn để lưu trữ dữ liệu vào bảng
đầu ra
Trong kết quả bên dưới, chúng ta có thể thấy rằng truy vấn chèn đầu tiên thực hiện thành công. Trong khi câu lệnh chèn thứ hai không thành công và đưa ra lỗi cho biết. Sao chép mục nhập cho cột khóa chính
Nếu bạn muốn xác định khóa chính trên nhiều cột, hãy sử dụng truy vấn như bên dưới
Ở đầu ra, chúng ta có thể thấy rằng giá trị khóa chính chứa hai cột là Student_ID và Roll_No
Khóa chính sử dụng câu lệnh ALTER TABLE
Tuyên bố này cho phép chúng tôi thực hiện sửa đổi vào bảng hiện có. Khi bảng không có khóa chính, câu lệnh này được sử dụng để thêm khóa chính vào cột của bảng hiện có
cú pháp
Sau đây là cú pháp của câu lệnh ALTER TABLE để tạo khóa chính trong MySQL
Thí dụ
Câu lệnh sau tạo một bảng "Người" không có cột khóa chính trong định nghĩa bảng
Sau khi tạo bảng, nếu muốn thêm khóa chính cho bảng này, chúng ta cần thực hiện câu lệnh ALTER TABLE như bên dưới
Chúng ta có thể thấy đầu ra nơi cả hai câu lệnh được thực thi thành công
Nếu bảng cần thêm khóa chính vào bảng đã có dữ liệu vào cột thì phải đảm bảo cột không chứa giá trị trùng lặp hoặc giá trị null
DROP khóa chính
Câu lệnh ALTER TABLE cũng cho phép chúng ta xóa khóa chính khỏi bảng. Cú pháp sau đây được sử dụng để loại bỏ khóa chính