当前位置: 首页 > article >正文

【重学 MySQL】六十四、主键约束的使用

【重学 MySQL】六十四、主键约束的使用

  • 主键约束的特性
  • 主键约束的创建
    • 创建单列主键
    • 创建联合主键
    • 在表创建后添加主键
  • 主键约束的删除
  • 主键约束的特点
  • 主键约束与自增长约束
  • 注意事项

在这里插入图片描述
在MySQL中,主键约束(PRIMARY KEY)用于唯一标识表中的每一行数据。

主键约束的特性

  1. 唯一性:主键约束列的值必须是唯一的,不能有重复的值。
  2. 非空性:主键约束列的值不能为空(NULL)。
  3. 自动索引:当创建主键约束时,系统默认会在所在的列或列组合上建立对应的唯一索引,从而加快数据检索速度。

主键约束的创建

创建单列主键

单列主键是指主键约束只作用于一个列。创建单列主键有两种方式:

  • 在定义字段的同时指定主键
CREATE TABLE table_name (
    id INT PRIMARY KEY,
    column1 VARCHAR(50),
    column2 INT
);

在这个例子中,id列被指定为主键列。

  • 在定义字段之后再指定主键
CREATE TABLE table_name (
    id INT,
    column1 VARCHAR(50),
    column2 INT,
    PRIMARY KEY (id)
);

这种方式也是将id列指定为主键列,但主键约束的声明放在了字段定义之后。

创建联合主键

联合主键是指主键约束作用于多个列的组合。创建联合主键的语法如下:

CREATE TABLE table_name (
    column1 INT,
    column2 INT,
    -- 其他字段定义
    PRIMARY KEY (column1, column2)
);

在这个例子中,column1column2两列被组合为复合主键。需要注意的是,一张表只能有一个主键,无论是单列主键还是联合主键。

在表创建后添加主键

如果表已经创建但还没有主键,可以通过ALTER TABLE语句来添加主键。语法如下:

ALTER TABLE table_name ADD PRIMARY KEY (column_list);

其中,column_list是主键约束要作用的列名列表。如果是联合主键,则列出所有要组合的列名。

主键约束的删除

如果不再需要主键约束,可以通过ALTER TABLE语句来删除它。语法如下:

ALTER TABLE table_name DROP PRIMARY KEY;

无论是单列主键还是联合主键,都可以使用这条语句来删除主键约束。

主键约束的特点

  • 主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值。
  • 一个表最多只能有一个主键约束,建立主键约束可以在列级别创建,也可以在表级别上创建。
  • 主键约束对应着表中的一列或者多列(复合主键)
  • 如果是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。
  • MySQL的主键名总是PRIMARY,就算自己命名了主键约束名也没用。
  • 当创建主键约束时,系统默认会在所在的列或列组合上建立对应的主键索引(能够根据主键查询的,就根据主键查询,效率更高)。如果删除主键约束了,主键约束对应的索引就自动删除了。
  • 需要注意的一点是,不要修改主键字段的值。因为主键是数据记录的唯一标识,如果修改了主键的值,就有可能会破坏数据的完整性。

主键约束与自增长约束

在MySQL中,主键约束通常与自增长约束(AUTO_INCREMENT)一起使用。自增长约束用于在插入新记录时自动生成一个唯一的值(通常是整数),这个值会自动填充到主键列中。这样,就不需要手动为每条记录指定主键值了。

需要注意的是,自增长约束的字段必须是主键或主键的一部分,并且该字段的数据类型必须是整数类型(如TINYINT、SMALLINT、INT、BIGINT等)。

注意事项

  1. 唯一性检查:在插入或更新数据时,MySQL会检查主键约束列的值是否唯一。如果发现有重复的值,则会报错并拒绝插入或更新操作。
  2. 非空性检查:在插入数据时,MySQL会检查主键约束列的值是否为空。如果为空,则会报错并拒绝插入操作。
  3. 性能考虑:由于主键约束会创建唯一索引,因此在查询数据时可以利用这个索引来加快检索速度。但是,过多的索引也会影响插入、更新和删除操作的性能。因此,在设计表结构时需要权衡利弊。

总之,主键约束是MySQL中非常重要的一种约束类型,它保证了表中数据的唯一性和完整性。在创建表时,应该根据实际需求合理地选择主键列并添加主键约束。


http://www.kler.cn/a/353345.html

相关文章:

  • 青少年编程与数学 02-006 前端开发框架VUE 18课题、逻辑复用
  • 小目标检测难点分析和解决策略
  • 相加交互效应函数发布—适用于逻辑回归、cox回归、glmm模型、gee模型
  • STM32嵌入式移植GmSSL库
  • 利用Spring Boot构建大创项目资源规划平台
  • 医药追溯码是什么?
  • Java多线程--实现跑马小游戏
  • 《学习方法报》是什么级别的报纸?
  • 鸿蒙网络编程系列4-实现Smtp邮件发送客户端
  • 海康NVR管理平台EasyNVR多品牌NVR管理工具实现智能化视频管理介入现代化工厂
  • vue 音频播放控件封装
  • [已解决]DockerTarBuilder永久解决镜像docker拉取异常问题
  • Redis --- 第四讲 --- 常用数据结构 --- string类型
  • IntelliJ IDEA插件开发-开发环境搭建
  • 关于C语言中局部变量与全局变量——超详细解释篇
  • 元数据 -BWF 广播音频扩展 (bext)
  • redis--过期策略和内存淘汰策略
  • 灵当CRM index.php 任意文件上传漏洞复现
  • 我也要!赚钱是分层的:这就是你又累又穷的原因——早读(逆天打工人爬取热门微信文章解读)
  • 小猿口算炸鱼脚本
  • Python爬虫中的多线程技术:提升数据采集效率
  • 利用FnOS搭建虚拟云桌面,并搭建前端开发环境(一)
  • Free RTOS实时操作系统