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 中的一个表设置多个主键。
相关文章
MySQL 中的减法运算
发布时间:2024/03/25 浏览次数:140 分类:MySQL
-
本教程将指导你如何在 MySQL 中模拟 MINUS 操作。它还通过不同的示例教你各种模拟 MINUS 操作的方法。
MySQL 中的 MUL vs PRI vs UNI
发布时间:2024/03/25 浏览次数:190 分类:MySQL
-
本教程将指导你了解 MySQL 中 MUL、PRI 和 UNI 键之间的区别。它还强调了它们中的每一个的使用。
MySQL 中的 DATETIME 与 TIMESTAMP 的比较
发布时间:2024/03/25 浏览次数:155 分类:MySQL
-
本教程将向你介绍 DATETIME 和 TIMESTAMP 数据类型。你还将了解在哪里使用它们以及它们的异同。
在 MYSQL 中的一个查询中执行多个连接
发布时间:2024/03/25 浏览次数:161 分类:MySQL
-
本教程展示了如何在 MySQL 中的一个查询中合并多个连接;无论是内部的还是外部的。我们还展示了定义连接条件的不同方法。