1、键:key,数据库的物理结构,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括:primary key, unique key, foreign key(主键/唯一键/外键)。

1)primary key(主键):
一个表只允许有一个主键;
可以定义一列或多列为主键;
不允许为null,不允许有重复值;
可以作为外键;
主键自动创建聚簇索引;
选择:主键值应该不发生更改,否则外键相关的表都要修改
2)unique key(唯一键):
一个表可以有多个唯一键;
可以定义一列或多列为唯一键;
只能有一个null值记录;不允许有重复值;
可以作为外键;
自动创建非聚簇索引;
选择:唯一键应该很少发生更改。
3)foreign key(外键):使得两张表关联,保证数据的一致性和级联操作
必须是另外一张表的主键或唯一键;
2、索引 :index,数据库的物理结构,它只是辅助查询的,创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储。如下:

建库时都会有一个默认的schema规范库,库里包括键、索引等表。包括主键索引、唯一索引、普通索引、全文索引。

1)主键索引:
不允许有null,值唯一,聚合索引(索引直接找到一条记录)
建表时指定了主键,就会自动创建主键索引;
  一张表只有一个主键索引;
2)唯一索引:
允许有null,索引列值唯一;
一张表可以有多个唯一索引;
3)普通索引:
允许null,不唯一,非聚合索引(索引直接找到主键值,根据主键索引找到一条记录)
4)全文索引:
仅适用于 CHAR, VARCHAR和 TEXT列
5)聚簇索引:一个索引项直接对应实际数据记录的存储页,可谓“直达”;一个表只能有一个聚簇索引(理由:数据一旦存储,顺序只能有一种)。
6)非聚簇索引:非聚簇索引的二级索引首先查到是主键值,然后InnoDB再根据查到的主键值通过主键索引找到相应的数据块。查找数据块不是“直达”。
3、建索引的条件:
表的主键、外键必须有索引;
经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替;
频繁进行数据操作的表,不要建立太多的索引;
索引多建在查询条件的字段和经常用于排序的字段。

数据库键(key)、主键(primaryKey)、索引(index)、唯一索引(uniqueIndex)区别相关推荐

  1. 数据库的几个概念:主键,外键,索引,唯一索引

    主键: 主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从学生表中搜索一条纪录如查找一个人,就只能根据学号去查找,这才能找出唯一的一个,这就是主键;如:id ...

  2. 数据库表的主键、唯一约束和索引

    目录 1.MySQL的主键. 2.MySQL的唯一约束. 3.MySQL的索引. 4.主键.唯一约束和唯一索引的区别. 1.MySQL 的 主键. "主键" 的完整称呼是 &quo ...

  3. mysql getgeneratedkeys,JDBC获得数据库生成的主键(JDBC、Primary Key)

    JDBC获得数据库生成的主键 佟强 http://blog.csdn.net/microtong 在实际开发中,数据库中表的主键经常会由数据库负责生成,INSERT语句插入数据时插入除了主键以外的字段 ...

  4. 数据库基础知识---主键和索引的关系

    主键和索引的关系 一. 主键 二. 索引 三. 主键和索引总结 一. 主键 主键的唯一作用就是唯一标识表中的某一行数据. 分为单一主键和联合主键 单一主键:只用一列就能唯一标识一行. 联合主键:当使用 ...

  5. MySQL的几个概念:主键,外键,索引,唯一索引

    一.概念: 1.主键(primary key) 能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录 ...

  6. oracle 主键约束重名,主键及主键索引的关系及相互影响

    主键的定义:列或多列的集合,用于唯一的标识表中的一行.一个表上只允许有一个主键. 我们在数据库中指定主键时,是通过主键约束来定义的.而创建主键约束时,又是需要有相应的索引来配合实现的.所以,本文的目的 ...

  7. python字典添加主键_Python--MySql(主键的创建方式、存储引擎、存储过程、索引、pymsql)...

    主键的创建方式 1. create tablestud( idint not null unique, namevarchar(20) ); mysql> descstud;+-------+- ...

  8. 浅谈主键索引与唯一索引

    主键索引与唯一索引 一.主键索引定义 主键索引是唯一索引的特殊类型. 数据库表通常有一列或列组合,其值用来唯一标识表中的每一行.该列称为表的主键. 在数据库关系图中为表定义一个主键将自动创建主键索引, ...

  9. 主键索引、唯一索引、普通索引、全文索引、组合索引的区别

    Mysql索引概念: 索引是一种可以加快查询的数据结构. 索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这本书1000页,有500也是目录,它当然效率低,目录是要 ...

  10. 主键索引和唯一索引的区别

    -- 区别 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的. 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键. 唯一性索引列允许空值,而主键列不允许为空值. 主键列在创建时,已 ...

最新文章

  1. 计算机硬件带软件怎么入账,小企业购置计算机硬件所附带的、未单独计价的软件,通过( )科目核算。A.无形资产B.固定资产C.在 - 赏学吧...
  2. 4G EPS 中的消息类型
  3. 基于Boost::beast模块的同步WebSocket客户端
  4. 浅谈面向对象编程与面向过程编程
  5. [NOIP2006] 能量项链
  6. Mybtis进行mysql数据库的修改表名操作
  7. 最新米酷6.26影视源码+解析接口+步骤
  8. gre词汇精选最新版
  9. 思维导图c语言java区别_C语言基本数据类型的思维导图
  10. (最新)mmdetection测试单张/多张图片并保存
  11. 学mysql后的收获_数据库课程学习的收获和心得体会
  12. 解密古代五大美男的凄惨结局
  13. Wireshark之流量包分析+日志分析 (护网:蓝队)web安全 取证 分析黑客攻击流程(上篇)
  14. python如何对两个矩阵进行拼接_Python:合并两个numpy矩阵的实现
  15. 不能同吃的食物组合(你知道吗?)
  16. 【控制篇 / 应用】(6.0) ❀ 02. 只允许使用 QQ 和微信 (下) ❀ FortiGate 防火墙
  17. 解决bug问题,查找bug的方法
  18. 中国科技大学科学岛计算机系,招生信息 | 中国科学技术大学科学岛优秀大学生夏令营通知...
  19. 涪陵创新计算机学校是什么专业,重庆市涪陵创新计算机学校开展增材制造技术教学研讨会...
  20. java英语面试自我介绍_java面试英语自我介绍范文

热门文章

  1. Apache Knox代理各个服务组件的UI
  2. Grammarly注册注意事项
  3. 2016年全国大学生数学建模B题优秀论文
  4. Linux系统移植:NXP 官板 uboot 移植
  5. iOS UIAnimation动画总结
  6. Edge-perserving tech
  7. 【视频课笔记】相位裕度 相位补偿 开环增益与相移 运放带宽压摆率
  8. 有哪些你追了很多女生才明白的道理?
  9. 算法设计与分析 —— 6-6 RNA二级结构预测
  10. MyBatisPlus03_MyBatisPlus的增删改查CRUD