KHÓA CHÍNH TRONG SQL
Khóa chính, còn được gọi là primary key, là một cột hoặc nhiều cột trong bảng cơ sở dữ liệu quan hệ, đặc biệt cho mỗi record. Đó là một số nhận dạng duy nhất, chẳng hạn như số bằng lái xe, số điện thoại có mã vùng hoặc số nhận dạng phương tiện (VIN). Cơ sở dữ liệu quan hệ chỉ được có một khóa chính. Mọi hàng dữ liệu phải có giá trị khóa chính và không hàng nào có thể trống.
Khóa chính tuân theo các quy tắc sau:
- Nếu khóa chính bao gồm nhiều cột, thì tổ hợp giá trị trong các cột này phải là duy nhất.
- Bất kỳ nỗ lực nào để chèn hoặc cập nhật NULL vào các cột khóa chính sẽ dẫn đến lỗi. Lưu ý rằng MySQL ngầm định thêm ràng buộc NOT NULL vào các cột khóa chính.
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, ví dụ: INT, BIGINT. Và bạn nên đảm bảo rằng phạm vi giá trị của kiểu 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ó.
Một cột khóa chính thường có thuộc tính AUTO_INCREMENT 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à PRIMARY
Các bài viết liên quan:
Khóa chính SQL cho một cột:
MySQL:
Các trình SQL còn lại
Khóa chính SQL cho nhiều cột:
Các trình SQL còn lại
Khóa chính SQL trên ALTER TABLE
Khóa chính trên một cột:
Khóa chính trên nhiều cột:
Làm thế nào để drop một ràng buộc khóa chính?
MySQL:
Các trình SQL còn lại
Khóa tổng hợp trong SQL
Một khóa tổng hợp có thể được coi là khóa chính. Điều này đã hoàn thành việc sử dụng các khớp SQL ở phần tạo bảng. Nó ngụ ý rằng thông tin trong toàn bộ bảng được đặc trưng và liệt kê trên sự sắp xếp của các phần được đặc trưng như khóa chính. Trong cấu hình cơ sở dữ liệu của bạn ở cấp độ bảng, phần đầu cơ sở dữ liệu có thể tạo một khóa chính tổng hợp bao gồm ít nhất hai phần trong bảng đó. Trong các nhà thiết kế hoặc điều hành cơ sở dữ liệu SQL Server có thể sử dụng các khóa tổng hợp (khóa chính tổng hợp hoặc các bản ghi trên các cột khác nhau) thay vì mô tả một khóa chính trên một cột bảng đơn lẻ. Trong trường hợp khóa chính tổng hợp đang được tạo bằng chính bảng, có thể hiểu để đưa định nghĩa khóa chính vào bên trong giải thích DDL tạo bảng. Trong bất kỳ trường hợp nào, nếu bạn đang cố gắng tạo khóa chính (bất kể khóa chính tổng hợp hay không) trên bảng không có khóa chính, cấu trúc ALTER TABLE ADD CONSTRAINT có thể được sử dụng để thay đổi trên cơ sở dữ liệu đích bàn.
Cú pháp SQL để chỉ định khóa tổng hợp:
Trong mọi trường hợp, khóa tổng hợp được tạo bao gồm COLUMN1 và COLUMN2.
MySQL:
Oracle:
SQL Server:
Hãy xem Cú pháp cho câu lệnh chọn hàng đầu:
Khóa UNIQUE trong SQL
Khóa duy nhất là một tập hợp một hoặc nhiều trường / cột của bảng xác định duy nhất một bản ghi trong bảng cơ sở dữ liệu.
Bạn có thể nói rằng nó giống như khóa chính nhưng nó chỉ có thể chấp nhận một giá trị null và không thể có các giá trị trùng lặp.
Cả khóa duy nhất và khóa chính đều đảm bảo tính duy nhất cho một cột hoặc một tập hợp các cột.
Có một ràng buộc khóa duy nhất được xác định tự động trong một ràng buộc khóa chính.
Có thể có nhiều ràng buộc khóa duy nhất cho một bảng, nhưng chỉ có một ràng buộc CHÍNH CHÍNH cho một bảng.
Ràng buộc KEY UNIQUE trong SQL trên TẠO BẢNG:
Nếu bạn muốn tạo ràng buộc DUY NHẤT trên cột “S_Id” khi bảng “sinh viên” được tạo, hãy sử dụng cú pháp SQL sau:
Các trình SQL còn lại
(Xác định ràng buộc khóa duy nhất trên cột đơn):
MySQL:
(Xác định ràng buộc khóa duy nhất trên nhiều cột):
MySQL / Các trình SQL còn lại
Ràng buộc KEY UNIQUE trong SQL trên ALTER TABLE:
Nếu bạn muốn tạo một ràng buộc duy nhất trên cột “S_Id” khi bảng đã được tạo, bạn nên sử dụng cú pháp SQL sau:
(Xác định ràng buộc khóa duy nhất trên cột đơn):
MySQL / Các trình SQL còn lại
(Xác định ràng buộc khóa duy nhất trên nhiều cột):
MySQL / Các trình SQL còn lại
DROP TỔNG HỢP CHO Ràng buộc NGOẠI KHÓA:
Nếu bạn muốn bỏ một ràng buộc DUY NHẤT, hãy sử dụng cú pháp SQL sau:
MySQL:
Các trình SQL còn lại
KHÓA NGOẠI TRONG SQL
Khóa ngoại trong SQL là một ràng buộc trong cơ sở dữ liệu liên kết hai bảng. Nó có thể được hiểu đơn giản là một cột (hoặc một tổ hợp các cột) trong một bảng có giá trị phải khớp với giá trị của cột của bảng khác. Ràng buộc khóa ngoại trong cơ sở dữ liệu áp đặt tính toàn vẹn tham chiếu trên bảng, có nghĩa là nếu cột A tương ứng với cột B, thì cột B phải xảy ra.
Bàng đầu tiên:
S_Id | LastName | FirstName | CITY |
1 | MAURYA | AJEET | ALLAHABAD |
2 | JAISWAL | RATAN | GHAZIABAD |
3 | ARORA | SAUMYA | MODINAGAR |
Bảng thứ hai:
O_Id | OrderNo | S_Id |
1 | 99586465 | 2 |
2 | 78466588 | 2 |
3 | 22354846 | 3 |
4 | 57698656 | 1 |
Ở đây bạn thấy cột “S_Id” trong bảng “Đơn hàng” trỏ đến cột “S_Id” trong bảng “Sinh viên”.
Nó cũng ngăn không cho nhập dữ liệu không hợp lệ vào cột khóa ngoại.
Ràng buộc SQL FOREIGN KEY TRONG TẠO BẢNG:
(Xác định ràng buộc khóa ngoại trên cột đơn)
Để tạo khóa ngoại trên cột “S_Id” khi tạo bảng “Đơn hàng”:
MySQL:
Các trình SQL còn lại
Ràng buộc SQL FOREIGN KEY cho ALTER TABLE:
Nếu bảng Đơn hàng đã được tạo và bạn muốn tạo ràng buộc NGOẠI KHÓA trên cột “S_Id”, bạn nên viết cú pháp sau:
MySQL / Các trình SQL còn lại
MySQL:
Các trình SQL còn lại
Các khóa thay thế trong SQL
Nếu bất kỳ bảng nào có nhiều hơn một khóa ứng viên, thì sau khi chọn khóa chính từ khóa ứng viên đó, phần còn lại của khóa ứng viên được gọi là khóa thay thế của bảng đó. Giống như ở đây, chúng ta có thể lấy một ví dụ rất đơn giản để hiểu khái niệm về khóa thay thế.
Giả sử chúng ta có một bảng tên là Employee có hai cột <EmpID> và <EmpMail>, cả hai đều không có thuộc tính null và giá trị duy nhất. Vì vậy, cả hai cột đều được coi là khóa ứng viên. Bây giờ chúng ta tạo <EmpID> làm khóa chính cho bảng đó thì EmpMail được gọi là khóa thay thế.
Khóa thay thế = {{Khóa ứng viên} – PK}