MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL 复合键

MySQL中的复合键是表中两列或多于两列的组合,使我们能够唯一地标识表的每一行。它是一种 候选关键字,由多列组成。 MySQL仅在将列组合时才保证该列的唯一性。如果它们是单独使用的,则不能保持唯一性。
任何键(例如主键,超级键或候选键)与多个属性组合时,可以称为复合键。当表需要唯一标识具有多个属性的每条记录时,组合键非常有用。复合键中使用的列可以具有不同的数据类型。因此,在 MySQL 中,不需要为列提供相同的数据类型就可以使用复合键。
可以通过两种方式添加组合键:
使用CREATE语句 使用ALTER语句
让我们详细介绍两种方式。

使用CREATE语句的复合键

在这里,我们将了解复合键的工作原理在MySQL中。让我们首先使用以下语句创建表 "产品" :
CREATE TABLE Product (
    Prod_ID int NOT null, 
    Name varchar(45), 
    Manufacturer varchar(45),
    PRIMARY KEY(Name, Manufacturer)
);
在上面的语句中,我们创建了一个复合主数据库,其列名称为 Name Manufacturer
我们可以使用进行验证命令如下:
DESCRIBE Product;
成功执行后,我们可以看到Key列具有两个 PRI 。这意味着我们已经成功在Name和Manufacturer列上添加了组合主键。
MySQL Composite Key
下一步,我们需要将值插入到此表中,如下所示:
INSERT INTO Product (Prod_ID, Name, Manufacturer)
VALUES (101, 'Soap', 'Hamam'),
(102, 'Shampoo', 'Teresme'),
(103, 'Oil', 'Daber Almond');
接下来,执行以下命令以显示表数据:
SELECT * FROM Product;
它将给出以下输出:
MySQL Composite Key
再次执行以下命令插入语句以更清楚地了解组合键:
INSERT INTO Product (Prod_ID, Name, Manufacturer)
VALUES (101, 'Soap', 'Hamam');
INSERT INTO Product (Prod_ID, Name, Manufacturer)
VALUES (101, 'Soap', 'LUX');
在下面的输出中,我们可以看到,如果我们尝试添加具有相同产品名称和制造商的组合,则将抛出一个错误消息: product.primary的重复条目
如果执行第二个insert语句,它将成功添加到表中。这是因为我们可以在product列中插入任意数量的肥皂,但制造商列应该不同。
MySQL复合键
因此,可以说复合键始终强制该表的列具有两个键。

使用ALTER TABLE的复合键语句

ALTER语句始终用于对现有表进行修改。有时需要添加组合键来唯一标识具有多个属性的表的每个记录。在这种情况下,我们使用 ALTER TABLE语句。
首先让我们创建一个表"学生"使用以下语句:
CREATE TABLE Student(
  stud_id int NOT null,
  stud_code varchar(15),
  stud_name varchar(35),
  subject varchar(25),
  marks int
);
现在,执行ALTER TABLE语句以添加复合主键,如下所示:
ALTER TABLE Student add primary key(stud_id, subject);
我们可以使用以下命令验证是否添加到表中的复合主键:
DESCRIBE Student;
在输出中,我们可以看到键列具有PRI,这意味着我们已成功将复合主键添加到 stud_id subject 列中。
MySQL Composite Key
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4