MySQL:约束-主键

在 MySQL 中,主键约束(PRIMARY KEY constraint)是一种特殊类型的约束,用于唯一标识表中的每一行记录。主键确保每一行都有唯一的标识符,并且不允许 `NULL` 值。以下是主键约束的详细说明、特性和用法示例。

一、主键约束的特性

1. 唯一性

        主键中的每个值必须是唯一的,不能重复。这确保了每一行都有一个唯一的标识符。

2. 非空性

        主键列不能包含 `NULL` 值。这意味着每个记录都必须有一个有效的标识符。

3. 单个主键

        每个表只能有一个主键。主键可以是一个列也可以是多个列(复合主键)。

4. 索引

        创建主键时,MySQL 会自动为主键列创建一个唯一索引,便于快速查找和访问数据。

二、如何定义主键

1. 在创建表时定义主键

在创建表时,可以直接在列定义中指定主键:

示例:创建部门表并为其添加主键:

create table tb_department
(
    department_id int primary key not null,  -- 定义主键
    manager_id    int             not null,
    created_at    timestamp       not null,
    updated_at    timestamp       not null
) default charset = utf8;

也可以将主键放在表的最后部分:

create table tb_department
(
    department_id int       not null,
    manager_id    int       not null,
    created_at    timestamp not null,
    updated_at   timestamp null,
    primary key (department_id) -- 定义主键
) default charset = utf8;

2. 在已有表中添加主键

如果表已经存在,可以使用 `ALTER TABLE` 语句来添加主键:

示例:为tb_employees表添加主键

alter table tb_employees
    add primary key (employee_id);


3. 复合主键

如果需要通过多个列来唯一标识记录,可以定义复合主键:

示例:

create table project_assignments
(
    employee_id int not null,
    project_id  int not null,
    role        varchar(50),
    primary key (employee_id, project_id) -- 复合主键
) default charset = utf8;

三、主键的优点

        数据完整性:通过强制唯一性和非空性规则,确保数据的完整性和可靠性。
        提高查询效率:主键自动创建的索引加速了对数据的查询。
        便于数据关联:主键常用于与其他表建立外键关系,帮助维护数据之间的联系。

四、主键相关的操作

1. 删除主键

要删除主键,可以使用 `ALTER TABLE` 语句:

示例:
 

alter table tb_employees drop primary key;

2. 修改主键

修改主键需要先删除先前的主键,然后再添加新的主键:

ALTER TABLE tb_employees
DROP PRIMARY KEY,
ADD PRIMARY KEY (new_column);

五、总结

主键约束在关系数据库中是非常重要的,它用于唯一标识表中的每一行记录,并确保数据的完整性和可靠性。在设计数据库时,合理规划主键的使用可以提高数据库的性能和可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值