数据库的主键和外键,与索引的区别。

作者&投稿:汝卫 (若有异议请与网页底部的电邮联系)
主键,外键和索引的区别~

通俗的说吧先说说主键(primarykey)吧:一张表(关系)的一个列(属性)或多个列可以作为主键,但是前提是让这个列作主键,这个列就能保证该列下的各个行(元组)的值不能相同,比如说你用姓名属性作主键的话,那么这个主键就不一定可以,如果有两个人是同样的名字的话,就不能做到该属性下的各个元组数据的值不同,如果用阿拉伯数字作主键就是一个很好的选择。再说说外键(foreignkey):一张表(关系)的列(属性)它同时存在表1和表2中,它不是表1的主键,而是表2的主键,就可以说他是表1的外键。那么什么是候选键(CandidateKey)呢:能唯一标识表(关系)中行(元组)的列(属性),则称该属性为候选键,也称候选关键字或候选码;由此来看候选键可以不只一个,还看一看得出的就是主键同时它也是候选键

关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键
比如
学生表(学号,姓名,性别,班级)
其中每个学生的学号是唯一的,学号就是一个主键
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键

成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键

同理 成绩表中的课程号是课程表的外键

定义主键和外键主要是为了维护关系数据库的完整性,总结一下:
主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。二、 主键、外键和索引的区别 收藏主键、外键和索引的区别?


主键
外键
索引

定义:
唯一标识一条记录,不能有重复的,不允许为空
表的外键是另一表的主键, 外键可以有重复的, 可以是空值
该字段没有重复值,但可以有一个空值

作用:
用来保证数据完整性
用来和其他表建立联系用的
是提高查询排序的速度

个数:
主键只能有一个
一个表可以有多个外键
一个表可以有多个惟一索引





聚集索引和非聚集索引的区别?

聚集索引一定是唯一索引。但唯一索引不一定是聚集索引。

聚集索引,在索引页里直接存放数据,而非聚集索引在索引页里存放的是索引,这些索引指向专门的数据页的数据。

设置主键是为每条数据进行一次单一的编排,在表中设置主键说明在这表中的每条数据都是唯一性的,即使有些内容会相同,但是主键这一列是唯一的,具有唯一性。外键是在主表列中的数据和外表列中的数据相关联,主表中的数据存在时,外表中列的数据与主表相对应,数据不能与主表列中其他数据不同的,具有约束性。索引就是一种按某种数据的查询规律,具有书的目录一样的检索功能。索引按存储顺序分为:簇索引和非簇索引,按属性分为:唯一索引,主关键字索引和普通索引,主键是簇索引,也是唯一索引。

主键就是:表中经常有一个列或列的组合,其值能唯一地标识表中的每一行,不允许重复外键就是其他表的主键,引用了外键,也就是说这两张表通过主外键进行了关联
唯一索引:添加索引是为了提高查询的速度,查询的时候根据索引来查询,主键可以看成是唯一的索引。主键和唯一索引的最大区别就是主键不可以为空,唯一索引可以为空

你说主键和索引有什么区别,个人认为没区别,因为主键是索引的一种,而且是最严格的一种索引,所以个人认为主键和索引没什么区别。
唯一让人感觉有区别的就是主键有约束性(也就是非空和唯一),一般的索引没有约束性。但是也有唯一索引,这些索引也有约束性,所以个人感觉如果非要说主键和索引的区别那么可能就是非空了,不过因为数据库的不同,有些数据库产品在唯一索引上也不允许为空,所以这样二者就没什么区别了。
当然,如果非要说主键和一般索引的区别,那么个人认为就在于主键的约束性上。
外键,外键是依存于主键存在的,没有主键也就没有外键。外键是两张表建立的一种约束与联系,是“强制约束”,类似于“A表有B表才能有,A表没有B表不能有”。外键更多的偏向于约束,并不是索引(个人理解)
至于索引的概念那就多了,有约束(比如非空就是一种约束,但是在某些数据库上将这类约束也作为一个索引单独保存),有一般索引(也就是查询索引),也有索引+约束(比如主键),还有位图索引(oracle有,其他数据库不知道),分区(其实oracle的分区也是一种索引),还有合并索引(这个名字忘记了,类似两张表何用一个字段的那种,好像叫这个)以及反索引等等,这些都叫做索引。
综上个人认为,主键和索引的区别一般来说是体现在约束上,当然索引不能被引用为外键,主键可以,这个是在应用上的一个区别。而外键则不是索引,仅仅是依存于主键的一种便捷检查(约束)方式。

索引的主要作用为了提高查询速度。
主键就是唯一索引。
外键是两张表之间做连接关系时用的。一般是某一张表的一个外键字段引用另一张表的主键。

主键:唯一标识一条记录
外键:关联其它表的记录,是其它表的主键
索引:可以提高查询效率

数据库的主键和外键,与索引的区别。
答:设置主键是为每条数据进行一次单一的编排,在表中设置主键说明在这表中的每条数据都是唯一性的,即使有些内容会相同,但是主键这一列是唯一的,具有唯一性。外键是在主表列中的数据和外表列中的数据相关联,主表中的数据存在时,外表中列的数据与主表相对应,数据不能与主表列中其他数据不同的,具有...

如何理解数据库中的主键,外键以及索引
答:数据库中的主键指的是能够唯一标识一条记录的属性或属性组,外键指的是另一张表中的主键起到与其他表建立联系的作用,索引是用来快速查找具有特定值的记录【推荐课程:数据库教程】数据库中的主键数据库中的主键指的是在一个属性组中能够唯一标识一条记录的属性或属性组。在一个表中只能有一个主键而且...

主键 外键 索引 为什么主键只有一个 主键与索引是什么关系
答:外键:是关联另外一个表主键的一个键,保证两个表之间的关联性索引:加快搜索效率首先主键和索引从目的上来讲不是一个概念,主键是为了保证数据唯一性,索引是为了加快检索速度。但是,从实现方式上主键主键却达到了唯一 非空聚类索引的效果。所以1. 从实现目的来看(约束)主键约束=唯一非空 约束2. 从...

MySQL的几个概念:主键,外键,索引,唯一索引
答:主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。外键(foreign key)是用于建立和加强两个表数据之间的链接的一列或多列。外键约束主要用来维护两个表之间数据的一致性。简言之,表的外键就是另一表的主键,外键将两表联系起来。一般情况下,要删除一张表中...

如何深刻理解主键,外键,索引?
答:深入理解数据库设计的灵魂:主键、外键与索引的艺术 在构建高效且稳健的数据结构时,主键和外键扮演着至关重要的角色。它们不仅影响数据的一致性和查询性能,还对数据库的可用性产生深远影响。设计时,首要任务是确保主键的特性:它必须唯一标识每一行,且无实际业务含义,单列设计可提升插入和查询的效率。...

主键、外键和索引的区别?
答:外键,外键是依存于主键存在的,没有主键也就没有外键。外键是两张表建立的一种约束与联系,是“强制约束”,类似于“A表有B表才能有,A表没有B表不能有”。外键更多的偏向于约束,并不是索引(个人理解)至于索引的概念那就多了,有约束(比如非空就是一种约束,但是在某些数据库上将这类约束也...

SQL数据库中的主键与外键介绍
答:定义主键和外键主要是为了维护关系数据库的完整性,总结一下:主键是能确定一条记录的唯一标识,比如,一条记录包括身份证号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段...

数据库的几个概念:主键,外键,索引,唯一索引
答:主键: 主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从学生表中搜索一条纪录如查找一个人,就只能根据学号去查找,这才能找出唯一的一个,这就是主键;如:id int(10) not null primary key auto_increment 主键: 主键是数据表的唯一索引,比如学生表里有学号和姓名,...

什么是关系型数据库,主键,外键,索引分别是什么?
答:1、关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。2、主关键字(primary key)是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录 3、外键表示了两个关系之间的相关联系。以另一个关系...

数据库中主键和索引的区别以及使用场景分别是什么?
答:关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途:惟一地标识一行。作为一个可以被外键有效引用的对象。索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键和索引的一些区别与联系。1. 主键一定是...