不会2023年你还不知道Mysql中index、primary key、unique key、foreign key是什么和如何创建吧?

首先了解一下什么是索引,索引通常用来快速定位到某一行的数据,MySQL的索引是存在B树中的。

  • 候选码 : 若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何、子集都不能再标识,则称该属性组为候选码。例如:在学生实体中,“学号”是能唯一的区分学生实体的,同时又假设“姓名”、“班级”的属性组合足以区分学生实体,那么{学号}和{姓名,班级}都是候选码。
  • 主码 : 主码也叫主键。主码是从候选码中选出来的。 一个实体集中只能有一个主码,但可以有多个候选码。
  • 外码 : 外码也叫外键。如果一个关系中的一个属性是另外一个关系中的主码则这个属性为外码。
  • 主属性 : 候选码中出现过的属性称为主属性。比如关系 工人(工号,身份证号,姓名,性别,部门). 显然工号和身份证号都能够唯一标示这个关系,所以都是候选码。工号、身份证号这两个属 性就是主属性。如果主码是一个属性组,那么属性组中的属性都是主属性。
  • 非主属性: 不包含在任何一个候选码中的属性称为非主属性。比如在关系——学生(学号,姓名,年龄,性别,班级)中,主码是“学号”,那么其他的“姓名”、“年龄”、“性别”、“班级”就都可以称为非主属性

index(唯一索引)

1.一般为普通索引,没啥特殊,通常是作为辅助查询

使用语法:

ALTER TABLE 表名 ADD INDEX 索引名称(索引字段);

primary key(主键约束)

1.可以为一列或者多列为主键,但主键只能有一个

2.没有重复值且不允许为空(NULL)

3.可以作为外键

4.一般不会去更新,因为更新的代价很大,对损耗很多性能

使用语法:

  • 在表中
PRIMARY KEY (`id`) USING BTREE

 

unique key(唯一性约束)

1.一张表可以有多个唯一性约束,通常限制非主键列

2.没有重复值但允许为空(NULL)

3.不可作为外键

4.只要唯一就可以更新

使用语法:

CREATE [ UNIQUE | FULLTEXT ] INDEX index_name ON table_name (index_col_name, ...);

foreign key

1.起约束作用(constraint)

2.通常是联系其他表(两个以上)的主键,组合在一起成为本表的主键

使用语法:

FOREIGN KEY(user_id) REFERENCES user(id),

 

primary key和unique key区别

primary key = unique key +不能为null

index(唯一索引)和unique key(唯一性约束)区别

 唯一约束是通过创建唯一索引来实现,删除唯一约束时可以只删除约束而不删除对应的索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kkoneone11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值