mysql中的约束和索引

本文详细介绍了MySQL中的约束,包括主键约束、唯一性约束、默认值约束和外键约束,以及它们的区别和用途。同时,阐述了索引的作用、类型如普通索引、唯一索引和复合索引,并探讨了主键约束与索引的联系。文章指出,虽然约束确保数据完整性,索引提升查询效率,但在高并发场景下,过多外键可能导致性能下降。
摘要由CSDN通过智能技术生成

本文内容仅在 MariaDB-10.2.15 版本下验证,其它环境下可能略有差异。

简单来说,约束是为了实现业务规则、保证数据的完整性,索引是为了查询高效,二者原本是两个不同的东西,只是在 mysql 中实现方法有类似之处,所以经常会让人感到迷惑。

一、约束(Constraint)

约束,是为了实现非空、非重等常见业务规则,在定义数据时对表或某些字段增加的特定的约束规则。

常见的约束类型有主键约束、唯一约束、非空约束、默认值约束、外键约束等。

1、主键约束(primary key)

  • primary key,用于定义表的主键,是唯一确定表中每一条记录的标识符
  • 主键不能为空,也不能重复
  • 一张表中只能有一个主键

设置主键:

  • 创建表的同时设置主键
create table student1 (
	sid int(10) primary key,  -- 对 sid 字段设置主键约束
	sname varchar(20) not null  -- 对 sname 字段设置非空约束
)
  • 创建表以后,追加主键
create table student2(
	sid int(10) not null,
	sname varchar(10) not null
)

# 追加主键,并设置主键名称
ALTER TABLE student2 ADD CONSTRAINT pks2 PRIMARY KEY(sid);
<
MySQL约束索引是用于确保数据完整性和提高查询性能的两个不同的概念。 1. 约束Constraints): 约束是用于强制实施特定规则或限制数据的条件。它们定义了对表数据的有效性和一致性要求。常见的约束类型包括主键、唯一键、外键和检查约束。 - 主键(Primary Key):用于唯一标识表的每一行数据,确保每行都具有唯一的标识符。 - 唯一键(Unique Key):确保列或列组合的值唯一,但可以包含空值。 - 外键(Foreign Key):用于建立表之间的关系,确保引用其他表存在的正确数据。 - 检查约束(Check Constraint):定义了对列值的限制条件,只允许满足条件的值插入或更新。 2. 索引(Indexes): 索引是用于提高查询性能的数据结构。它们是按特定列或列组合创建的,以加快对表数据的访问速度。索引可以使查询更快,但会增加插入、更新和删除操作的开销。 - B-Tree索引:最常见的索引类型,适用于等值查询、范围查询和排序操作。 - 唯一索引:类似于唯一键,确保列或列组合的值唯一。 - 全文索引:适用于在文本数据进行全文搜索。 - 空间索引:适用于处理空间数据类型(如地理位置)。 需要注意的是,索引是通过占用额外的存储空间来提高查询性能的,而约束是用于强制实施数据完整性的。因此,在设计数据库时需要根据具体需求和考虑权衡来选择适当的约束索引
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值