MySQL 中的多个主键
在本教程中,我们的目标是探索 MySQL 中表的多个主键的概念。很多时候,企业和组织必须将某些列分配为主键。
这个 primary
键有多种用途和理由来困扰它的设置。它本质上用于确保分配为主键的每个列条目都是唯一的。
如果已将多列指定为主
键,则这些值的组合应该是唯一的。请注意,primary
键不能在其列中拥有 Null
值。
如果我们在此列中推送或插入 Null
值,我们肯定会收到错误。有时,组织有必要摆脱这个键来插入多个相似的值或 null
值。
该表可以有多个主
键。这些附加键称为复合主键
。
准确地说,多个主键没有分配给列,但是可以在声明 primary
键时描述多个列。让我们了解此键的工作原理,并将多列分配给 primary
键。
在 MySQL 中使用 student_details_table
创建表
在开始之前,我们创建一个虚拟数据集来使用。在这里,我们创建了一个表 student_details_table
以及几行。
-- create the table student_details_table
CREATE TABLE student_details_table(
stu_id int,
stu_firstName varchar(255),
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id, stu_firstName)
);
-- insert rows to the table student_details_table
INSERT INTO student_details_table(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
如我们所见,我们已经将 stu_id
和 stu_firstName
设置为我们的表 student_details
的主键。这将确保此列中的值不能重复或 NULL
。
上面的查询创建了一个包含名字和姓氏的行的表。要查看数据中的条目,我们使用以下代码。
SELECT * FROM student_details;
上面提到的查询将给出以下输出。
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
使用 DESCRIBE
语句显示 MySQL 中表的结构
现在让我们使用 DESCRIBE
语句,看看我们是否有多个列与主键关联。
DESCRIBE name_of_the_table;
在我们的例子中,我们需要编写以下查询来了解表 student_details_table
的详细信息。
DESCRIBE student_details_table;
该语句将帮助我们获取表的复杂详细信息,例如与每列关联的数据类型、不同列及其名称、与每列关联的键以及与表相关的任何额外信息。
Field Type Null Key Default Extra
stu_id int NO PRI
stu_firstName varchar(255) NO PRI
stu_lastName varchar(255) YES
上表显示字段 stu_id
和 stu_firstName
被视为主键。
可能需要这样做,因为很多时候,企业需要维护记录,以便不存在某些列的重复组合。
例如,假设一家以产品为基础的公司每天需要限制客户订单和与客户相关的产品数量。
在这种情况下,他们可能需要设置两个主键作为客户 ID 和产品 ID,以匹配数据并执行任何必要的操作,而无需任何重复的组合。
因此,借助上面的查询,我们可以高效地为 MySQL 中的一个表设置多个主键。