精华内容
下载资源
问答
  • 2019-02-13 14:01:16

    mysql数据库: 主键 索引 关系

    1.主键:主键的唯一作用就是唯一标识表中的某一行数据。分为单一主键和联合主键:
     单一主键:只用一列就能唯一标识一行。
     联合主键:当使用一列已经不能唯一标示一行的时候,就要采用多列唯一标识一行,就是联合主键。
     

    2.索引:索引的作用就是提高数据的检索速度,分为单一索引和联合索引:
      单一索引:只是用某一列数据作为索引,默认是index索引,这一列可以包含重复数据;如果某一列不存在重复数据最好设置成unique形式的索引,比index的索引速度更快,在text数据上要使用fulltext索引。
      联合索引:为了更进一步提高检索速度,每次检索都需要用多列同时进行时,就可以把这多列设为联合索引,提高索引速度,根据多列是否唯一,也分为index索引和unique索引。
     联合索引的使用必须注意:不能垮字段使用,比如a b c联合索引 只有a|ab|abc 才能用上联合索引字段。

    3.主键一定是索引,但是索引不一定是主键。一个表只能有一个主键或联合主键,但是可以有多个索引。
       主键字段必须不能为空,但是索引字段可以为空。
    --------------------- 
    转自:https://blog.csdn.net/kangsenkangsen/article/details/51234600 

    更多相关内容
  • 下面是主键和索引的一些区别与联系。 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。 所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一...
  • 主键和索引关系一. 主键二. 索引三. 主键和索引总结 一. 主键 主键的唯一作用就是唯一标识表中的某一行数据。 分为单一主键和联合主键 单一主键:只用一列就能唯一标识一行。 联合主键:当使用一列已经不能...

    一. 主键

    • 主键的唯一作用就是唯一标识表中的某一行数据。

    分为单一主键和联合主键

    • 单一主键:只用一列就能唯一标识一行。
    • 联合主键:当使用一列已经不能唯一标示一行的时候,就要采用多列唯一标识一行,就是联合主键。

    二. 索引

    • 索引的作用就是提高数据的检索速度。

    分为单一索引和联合索引:

    • 单一索引:只是用某一列数据作为索引,默认是index索引,这一列可以包含重复数据;如果某一列不存在重复数据最好设置成unique形式的索引,比index的索引速度更快,在text数据上要使用fulltext索引。
    • 联合索引:为了更进一步提高检索速度,每次检索都需要用多列同时进行时,就可以把这多列设为联合索引,提高索引速度,根据多列是否唯一,也分为index索引和unique索引。

    三. 主键和索引总结

    • 主键一定是索引,但是索引不一定是主键。
    • 一个表只能有一个主键或联合主键,但是可以有多个索引。
    • 主键字段必须不能为空,但是索引字段可以为空。
    展开全文
  • 联合主键和索引

    千次阅读 2022-03-30 11:13:59
    主键和索引关系为: 1)主键一定是索引; 2)索引是可以自建的,非主键; 3)索引是一种数据结构,方便查找。 联合主键的本质,就是一个联合起来造成的索引,用来作为表的主键。 但联合主键要想用起来,必须...

    今天,看到一个表,是联合主键的。以前,确实也看到过联合主键,还建立过联合主键。今天,正好看到了,就对联合主键和索引的知识进行重新整理下。

    主键和索引的关系为:

    1)主键一定是索引;

    2)索引是可以自建的,非主键;

    3)索引是一种数据结构,方便查找。

    联合主键的本质,就是一个联合起来造成的索引,用来作为表的主键。

    但联合主键要想用起来,必须采用如下原则:“大哥不能丢,兄弟不能断”。如下所示:

    create table test
    
    (
    
       name varchar(21),
    
       id number,
    
       value varchar(20),
    
       primary key (name,id,value)
    
    )

    要想让联合主键生效,必须让第一个索引项name(大哥)存在;同时,如果想用name和value的索引,中间必须用id(兄弟不能断)。

    即:

    1)用name、id、value,可以用主键索引;(大哥在,兄弟没断)

    2)用name、id,,可以用主键索引;(大哥在,兄弟没断)

    3)用name,,可以用主键索引;(大哥在)

    4)用id、value,不可以用主键索引;(大哥不在)

    5)用id,不可以用主键索引;(大哥不在)

    6)用value,不可以用主键索引;(大哥不在)

    7)用name、value,不可以用主键索引;(大哥在,但兄弟断了)

    之所以会存在上门原因,是因为,索引的建立,是通过顺序建立的(先name,再id,再value);如果顺序出现偏误,则无法使用。

    展开全文
  • 聚簇索引与主键的选择一、什么是聚簇索引?二、什么是非聚簇索引?1. InnoDB引擎中2. MyISAM引擎中三、聚簇索引的优劣与主键选择的关系 ...主键索引就是一种聚簇索引,而其他创建出来的前缀索引、联合索引,唯
  • oracle的主键和索引关系是什么?

    千次阅读 2021-05-04 03:13:34
    删除主键,则主键约束对应的唯一索引都删除了。这是我们经常见到的现象。发出一个创建主键的sql,oracle其实执行了两步:创建主键约束、创建/关联 唯一索引。步骤是这样的:创建主键约束时,检查该主键字段上是否...

    满意答案

    02ae427d08e371d7e90d5b995e828d6d.png

    heteCreardy

    推荐于 2019.10.27

    02ae427d08e371d7e90d5b995e828d6d.png

    采纳率:42%    等级:12

    已帮助:5778人

    在oracle中,我们创建一个主键,则同时自动创建了一个同名的唯一索引;删除主键,则主键约束和对应的唯一索引都删除了。这是我们经常见到的现象。

    发出一个创建主键的sql,oracle其实执行了两步:创建主键约束、创建/关联 唯一索引。步骤是这样的:

    创建主键约束时,检查该主键字段上是否已经存在唯一索引。若不存在,则自动创建同名唯一索引;若存在,则直接创建主键约束,并将该约束和已经存在的唯一索引对应上。

    删除主键约束时,可以决定是否保留对应的索引;删除唯一索引时,若存在对应的主键约束,则不能删除。

    总之,存在主键约束,则肯定存在与之对应的唯一索引,而存在唯一索引,不一定对应着有主键约束。

    下面我们验证一下:

    SQL> create table test_pri(a number(1), b number(1));

    表已创建。

    --1.创建主键,则自动创建同名唯一索引

    --1.1创建主键,主键约束和唯一索引同时创建

    SQL> alter table test_pri add constraint pk_test_pri_a primary key(a);

    表已更改。

    SQL> select CONSTRAINT_NAME, TABLE_NAME, INDEX_NAME

    2 from user_constraints where table_name = 'TEST_PRI';

    CONSTRAINT_NAME TABLE_NAME INDEX_NAME

    ----------------- ------------ -------------

    PK_TEST_PRI_A TEST_PRI PK_TEST_PRI_A

    SQL> select INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS

    2 from user_indexes where table_name = 'TEST_PRI';

    INDEX_NAME INDEX_TYPE TABLE_NAME UNIQUENES

    ---------------- ------------ ------------ ---------

    PK_TEST_PRI_A NORMAL TEST_PRI UNIQUE

    --1.2 删除主键,主键约束和对应的唯一索引都删除了

    SQL> alter table test_pri drop constraint pk_test_pri_a;

    表已更改。

    SQL> select CONSTRAINT_NAME, TABLE_NAME, INDEX_NAME

    2 from user_constraints where table_name = 'TEST_PRI';

    未选定行

    SQL> select INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS

    2 from user_indexes where table_name = 'TEST_PRI';

    未选定行

    --1.3其实删除主键时可以选择保留索引的

    SQL> alter table test_pri add constraint pk_test_pri_a primary key(a);

    表已更改。

    SQL> alter table test_pri drop constraint pk_test_pri_a keep index;

    表已更改。

    SQL> select CONSTRAINT_NAME, TABLE_NAME, INDEX_NAME

    2 from user_constraints where table_name = 'TEST_PRI';

    未选定行

    SQL> select INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS

    2 from user_indexes where table_name = 'TEST_PRI';

    INDEX_NAME INDEX_TYPE TABLE_NAME UNIQUENES

    --------------- ----------- ----------- ---------

    PK_TEST_PRI_A NORMAL TEST_PRI UNIQUE

    --2.在存在唯一索引的列上创建主键,则只创建主键约束,同时将该约束与已有唯一索引关联上(名称可以不一致)

    SQL> drop index pk_test_pri_a;

    索引已丢弃。

    --2.1 先创建唯一索引,再创建主键,名称可以不一致

    SQL> create unique index pk_test_pri_a on test_pri(a);

    索引已创建。

    SQL> alter table test_pri add constraint pk_test_pri primary key(a);

    表已更改。

    SQL> select INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS

    2 from user_indexes where table_name = 'TEST_PRI';

    INDEX_NAME INDEX_TYPE TABLE_NAME UNIQUENES

    --------------- ----------- ------------ ---------

    PK_TEST_PRI_A NORMAL TEST_PRI UNIQUE

    SQL> select CONSTRAINT_NAME, TABLE_NAME, INDEX_NAME

    2 from user_constraints where table_name = 'TEST_PRI';

    CONSTRAINT_NAME TABLE_NAME INDEX_NAME

    ------------------ ------------ -------------

    PK_TEST_PRI TEST_PRI PK_TEST_PRI_A

    --2.2 不可删除存在主键约束的唯一索引

    SQL> drop index PK_TEST_PRI_A;

    drop index PK_TEST_PRI_A

    *

    ERROR 位于第 1 行:

    ORA-02429: 无法删除用于强制唯一/主键的索引

    --2.3虽然两者名称不一致,但也是关联在一块的:删除约束,则对应的索引同时删除

    SQL> alter table test_pri drop constraint pk_test_pri;

    表已更改。

    SQL> select INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS

    2 from user_indexes where table_name = 'TEST_PRI';

    未选定行

    SQL> select CONSTRAINT_NAME, TABLE_NAME, INDEX_NAME

    2 from user_constraints where table_name = 'TEST_PRI';

    未选定行

    SQL>

    10分享举报

    展开全文
  • 三、主键和聚集索引的区别四、复合主键的重复值 版权声明 本文原创作者:清风不渡 博客地址:https://blog.csdn.net/WXKKang   此篇博客主要是为了将主键索引的知识进行一个系统的总结,并将他们的关系与...
  • 之前松哥在前面的文章中介绍 MySQL 的索引时,有小伙伴表示被概念搞晕了,主键索引、非主键索引、聚簇索引、非聚簇索引、二级索引、辅助索引等等,今天咱们就来捋一捋这些概念。 1. 按照功能划分 按照功能来划分,...
  • 聚簇索引和主键索引聚簇索引并不是一种单独的索引类型,而是一种数据存储方式,具体细节依赖于其实现方式。MySQL数据库中innodb存储引擎,B+树索引可以分为:聚簇索引(也称聚集索引,clustered index)辅助索引(有时...
  • Mysql主键索引与非主键索引前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 Mysql使用B+树存储索引。 什么是B树: B树也叫B-树,是一棵多路平衡查找树,平衡的意思是左边右边分布均匀。多路的...
  • 在这种关系表中,我们可以确定的是,学生课程关系虽然是多对多,但一个确定的学生id一个确定的课程id在关系表中只能存在一个。如下图所示:,业务逻辑就是一个学生只能有当前课程的一个分数。 t_stu...
  • 主键和索引区别

    2019-03-18 16:38:48
    关系数据库依赖于主键,它是数据库物理模式的基石。...下面是主键和索引的一些区别与联系。 主键一定是唯一性索引,唯一性索引并不一定就是主键。 所谓主键就是能够唯一标识表中某一行的属性或属性组,一个...
  • 数据库之主键索引

    2020-06-02 18:52:52
    关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如: 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 ...
  • 关系数据库依赖于主键,它是数据库物理模式的...下面是主键和索引的一些区别与联系。1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主...
  • Mysql的主键和索引

    千次阅读 2018-11-19 11:28:51
    关系数据可依赖于主键主键在物理层面上主要有两个用途: 唯一的标识一行 因为主键可以唯一标识一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。 作为一个可以被外键引用的对象 一个表的...
  • MySQL添加主键索引

    千次阅读 2021-01-18 19:42:03
    查看索引SHOW INDEX FROM ...添加索引alter table 数据库add index 索引名称(数据库字段名称)主键索引ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )比如:ALTER TABLE order_info ADD PRIMARY KEY (o...
  • 主键索引的区别

    千次阅读 2020-10-16 10:33:53
    在数据库关系图中为表定义主zhi键将dao自动创建主键索引主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。 2、种类不同: 根据数据库的...
  • 对于关系表,有个很重要的约束,就是任意两条记录不能重复。不能重复不是指两条记录不完全相同,而是指能够通过某个字段唯一区分出不同的记录,这个字段被称为主键。 对主键的要求,最关键的一点是:记录一旦插入...
  • 复合主键与联合主键索引与联合(复合)索引

    万次阅读 多人点赞 2018-09-24 22:11:31
    前几天面试时被问到了MySql中联合索引使用与生效问题;回来顺便看了一下复合主键与联合主键,查漏补缺,慢慢学习吧。 一、复合主键与联合主键 1、复合主键:指表的主键含有一个以上的字段组成,不使用无业务含义的...
  • MySQL 主键索引的联系与区别

    千次阅读 2017-09-07 19:43:48
    关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有...下面是主键和索引的一些区别与联系。 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。 所谓主键就是能够唯一标识表中某一行的
  • 主键 ...作用:用来其他表建立联系用的 作用:一个表可以有多个外键 索引 定义:该字段没有重复值,但是可以有一个空值 作用:是提高查询排序的速度 作用:一个表可以有多个唯一索引 ...
  • mysql 主键和默认 设为索引的规则

    千次阅读 2021-01-19 04:13:09
    一、mysql 表中如果是单主键的话,那这个主键也会被 系统默认建为 索引二、mysql 表中如果是复合主键的话,那系统会遵循左对齐原则,即如复合主键 a b字段c字段..., 默认建的主键索引是abc即主键全有,把所有...
  • 主键和唯一索引区别

    千次阅读 2019-03-06 15:06:02
    1.主键为一种约束,唯一索引为一种索引,本质上就不同; 2.主键创建后一定包含唯一性索引,而唯一索引不一定就是主键;...6.主键和索引都是键,主键是逻辑键,索引为物理键,即主键不实际存在。 ...
  • 很多小伙伴在面试的时候会碰到如下一些数据库设计方面的...一般现代关系数据库中,从索引结构角度分,有以下几种索引: B树索引、哈希索引、全文索引 其中本篇文章主题只涉及B树索引,其他两种另外再写,现在先把...
  • clickhouse 主键索引的工作机制

    千次阅读 2021-03-24 09:38:12
    MergeTree的稀疏索引 数据按照主键排序后存储的 每个索引记录对应8192条(由index——grandularity指定) 记录索引是常驻内存的...根据主键的查询条件,确定索引范围。 id in (‘A02’,‘A08’),转化为索引范围区间[A01
  • 主键主键(PRIMARY KEY)的完整称呼是“主键约束”,是MySQL中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键。在创建数据表时设置主键约束,既可以为表中的一个...
  • mysql主键索引、非主键索引、联合索引、覆盖索引、最左匹配、索引下推

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 126,771
精华内容 50,708
关键字:

主键和索引的关系

友情链接: XianLuZiDongChongHeZa.zip