认识主键和索引

主键

系数据库依赖于主键,它是数据库物理模式的基石。

主键在物理层面上只有两个用途:

惟一地标识一行。
作为一个可以被外键有效引用的对象。

索引

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键和索引的一些区别与联系。


2.主键和索引关系

1.主键一定是唯一性索引,唯一性索引并不一定就是主键。

所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。数据库在设计时,主键起到了很重要的作用。

主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。

2.一个表中可以有多个唯一性索引,但只能有一个主键。

3.主键列不允许空值,而唯一性索引列允许空值。

4.索引可以提高查询的速度。

其实主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在在数据库中,主键一般都要建,主要是用来避免一张表中有相同的记录,索引一般可以不建,但如果需要对该表进行查询操作,则最好建,这样可以加快检索的速度。


3.FAQ:常见的问题项目与对应问题的解答

1. 主键是个什么?

我来来具体的东西说吧,书大家都看过吧,没看过的找本翻一下,看下它每页是不是有个页码,我们的数据表主键就相当于是这个页码,明白了吧。

2. 那么索引是什么呢?

我们还拿书来说,索引相当于书的目录,有了目录我们可以很快的知道这本书的基本内容和结构,数据索引也一样,它可以加快数据表的查询速度。

3. 主键主索引类比,及其他们的作用?

主键

1)主键是为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊索引。
2)数据表中只允许有一个主键,但是可以有多个索引。
3)使用主键会数据库会自动创建主索引,也可以在非主键上创建索引,方便查询效率。

索引

1)索引可以提高查询速度,它就相当于字典的目录,可以通过它很快查询到想要的结果,而不需要进行全表扫描。
2)主键索引外索引的值可以为空。

主键也可以由多个字段组成,组成复合主键,同时主键肯定也是唯一索引。
唯一索引则表示该索引值唯一,可以由一个或几个字段组成,一个表可以有多个唯一索引。

Mysql 主外键与索引之间的区别和联系相关推荐

  1. MySQL 主外键约束与标准SQL不同的地方

    [标准SQL的外键约束条件] 1): 子表引用父表的主键 drop table if exists child,parent;create table if not exists parent(id ...

  2. mysql主外键引用关系,关于mysql:数据主/外键关系

    我想对于那些已经开发了许多数据库模式的人来说,这将是一个简单的答案,但是我最近发现自己承担了优化(或尝试优化)数据库模式的任务,并且一直在阅读"高性能MySQL",并且剩下一个关于 ...

  3. MySQL主外键表关联表数据的同时删除

    今天遇到这样的问题,用mysql数据库,删除主表的数据时,删除不了报错.原来是主外键的关联关系. 遇到的错误和解决方法如下: 问题解决后,我又从网上找到了一篇讲解非常优秀的博文,转载至此,作者原文地址 ...

  4. MySQL主外键设置

    Q:主外键的关系 pr:ALTER TABLE tb_UserAndRole ADD CONSTRAINT FK__tb_UandR_Role FOREIGN KEY (RoleID) referen ...

  5. mysql 主外键_mysql中主外键关系

    一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, ...

  6. MySQL主外键以及基本查询

    主键 主键:primary key,主要的键.一张表中只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复:这种称之为主键.一张表中只能有最多一个主键. 增加主键 SQL操作中有多 ...

  7. mysql 主外键 策略_mysql外键策略

    1.外键 建表时添加外键:constraint 外键名 foreign key 从表字段 references 主表字段 级联操作 create table dage( create table xi ...

  8. mysql主外键添加_mysql 增加外键:(+创建主键)

    MySQL是开源免费的数据库软件,是一款很优秀的软件,作为我们的学生或者科研人员在开发软件的时候,最好用也是最省钱的.所以MySQL学好是至关重要的! SQL语言包含4个部分: ※ 数据定义语言(DD ...

  9. 查看mysql主外键信息

    SELECT  * FROM information_schema.key_column_usage t WHERE t.constraint_schema = '库名称' AND t.constra ...

最新文章

  1. 使用 Navicat Premium 将 sql server 的数据库迁移到 mysql 的数据库中
  2. 使用 XML Schema 定义元素的基本知识
  3. win10 vscode 无法激活python 虚拟环境的解决办法
  4. MySQL常用语法记录
  5. Jmeter+jenkins+ant自动化测试环境搭建
  6. c语言的时间函数的介绍,c语言中时间函数介绍
  7. 浅析libuv源码-node事件轮询解析(1)
  8. matconvnet在MATLAB2013配置过程中遇到的问题
  9. 索尼SONY 820E摄像机内置64G存储卡无法识别拆MMC芯片完整恢复数据
  10. 关于微信精选留言点赞刷赞之公众号评论点赞及文章评论点赞软件使用方法
  11. 如何选择VC界面库产品?(二)– DSkinLite界面库介绍
  12. ue4水墨材质_PS使用水墨烟雾笔刷临摹一匹水墨烟雾骏马_资源库
  13. XMAPP启动apache和mysql失败的问题
  14. 区块链开发者平台-u deserved it
  15. Docker 配置 nvidia-docker 和 pytorch 的一些想法
  16. 模拟手机定位软件有哪些,推荐几款
  17. 酷派COOL20s什么时候发布 酷派COOL20s配置如何
  18. 写给喜欢数学和不喜欢数学的朋友们
  19. 【Plant Biotech. J.】MdBBX22–miR858– MdMYB9/11/12模块调节苹果皮中原花青素的生物合成
  20. 3dm显卡测试软件,3DMark新版发布:全球第一个DirectX 12测试工具

热门文章

  1. R语言:预测算法常用包总结
  2. 设计模式总结 (1)模式分类
  3. C++ Primer 5th笔记(chap 16 模板和泛型编程)转发
  4. 【Flask】Jinja2之模板继承
  5. 06-密码学基础-混合密码系统
  6. 04-CA/TA编程:hash demo
  7. [How TO]-堡垒机快捷登陆SSH服务器-expect自动输密码
  8. TLS调试检测和反调试
  9. linuxdeployqt打包
  10. 红队攻防之从边界突破到漫游内网(无cs和msf)