mysql 组合键简介
今天的教程是对 mysql 组合键的介绍。本课还讨论了使用 create
和 alter
语句创建复合主键和外键。
mysql 组合键简介
组合键是候选键的一种类型,它是表中多个列的组合,让我们可以唯一地标识表的每一行。有两种类型的组合键。
- 复合主键
- 复合外键
mysql 复合主键
复合主键是表中多个列的组合,用作主键,让我们唯一地标识表的每一行。同一表中复合主键的各个列可以是或不能是外键,它们是父表中的主键。
让我们看看下面的实体关系图 (erd),其中我们使用列 id
、customer_id
和 product_id
在表 tb_order
中创建复合主键,其中 customer_id
和 product_id
是外键在列级别,但在其父表中的主键。
有些人可能会对 tb_order
表中键的颜色感到困惑,因为黄色用于主键,红色表示外键。要确保我们有一个复合主键,请单击 tb_order
表中的单词 primary
。
它将突出显示制作复合主键所涉及的所有列(请参见以下屏幕截图作为演示)。
mysql 复合外键
包含多个列的外键称为复合外键。外键中的所有字段(也称为属性或列)必须指向确切的表。
我们不能创建一个复合外键,其中一列引用表 a,第二列引用表 b。请参阅以下演示,其中复合外键的两列 (reference_number
& reference_type
) 引用列 (account_number
& account_type
) 的 accounts
表。
在 mysql 中,只有当我们组合它们时,才能保证列的唯一性。否则,无法在个人层面上保持唯一性。
主键、超键或候选键也可以称为组合键,如果它们是通过使用多个属性(列)构成主键/外键而形成的。
每当表需要唯一标识具有多列的每一行时,我们都可以使用组合键以达到最佳研究目的。但是,我们将用于形成组合键的列可以具有各种数据类型。
因此,用于制作 mysql 组合键的列具有相同的数据类型不是强制性的。
在 mysql 中创建组合键
在 mysql 中,我们可以通过以下两种方式创建复合主键和复合外键。
- 使用
create
语句 - 使用
alter
语句
使用 create
语句创建复合主键
我们将在使用 mysql 复合主键
中提供的相同数据库创建的表中创建一个复合主键。
代码:
createtable`db_ms20`.`tb_order`(idintnotnull,customer_idintnotnull,product_idintnotnull,constraintfk_customer_idforeignkey(customer_id)referencestb_customer(id),constraintfk_product_idforeignkey(product_id)referencestb_product(id),primarykey(id,customer_id,product_id));
使用 create
语句创建复合外键
接下来,我们使用相同的数据库来创建上面在 mysql 复合外键
中介绍的复合外键。
代码:
createtable`ms20`.`sub_accounts`(sub_accountintegerprimarykey,reference_numberintegernotnull,reference_typeintegernotnull,sub_acc_descriptionchar(20),foreignkey(reference_number,reference_type)referencesaccounts(account_number,account_type));
使用 alter
语句创建复合主键
假设我们已经创建了名为 tb_order
的表。
代码:
createtable`db_ms20`.`tb_order`(idintnotnull,customer_idintnotnull,product_idintnotnull,constraintfk_customer_idforeignkey(customer_id)referencestb_customer(id),constraintfk_product_idforeignkey(product_id)referencestb_product(id));
输出:
tb_order
表中没有任何主键。因此,我们可以在表创建后使用 alter
语句创建复合主键,因为 alter
语句用于修改现有表。
请记住,如果我们将 id
作为主键,我们将无法创建复合主键,因为一张表不能有两个主键。
alter
声明:
altertable`db_ms20`.`tb_order`addprimarykey(id,customer_id,product_id);
输出:
我们已经成功地创建了一个复合主键。
使用 alter
语句创建复合外键
假设我们创建了一个名为 sub_accounts
的表。
代码:
createtable`ms20`.`sub_accounts`(sub_accountintegerprimarykey,reference_numberintegernotnull,reference_typeintegernotnull,sub_acc_descriptionchar(20));
输出:
我们在上面给出的输出中没有复合外键。让我们使用 alter
语句创建它,如下所示:
altertable`ms20`.`sub_accounts`addforeignkey(reference_number,reference_type)referencesaccounts(account_number,account_type);
输出:
将此输出与前一个输出进行比较,观察我们成功创建了复合外键。
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
如何在 mysql 中声明和使用变量
发布时间:2024/03/26 浏览次数:115 分类:mysql
-
当你需要在 mysql 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。
发布时间:2024/03/26 浏览次数:176 分类:mysql
-
本教程演示了如何在 mysql 中重置自动增量。
在 mysql 中使用 mysqladmin 刷新主机解除阻塞
发布时间:2024/03/26 浏览次数:82 分类:mysql
-
你将了解阻止主机的原因。此外,通过使用 phpmyadmin 和命令提示符刷新主机缓存来解除阻塞的不同方法和效果。
发布时间:2024/03/26 浏览次数:199 分类:mysql
-
本教程演示如何在 mysql 中转换为整数。