精华内容
下载资源
问答
  • 聚集索引和主键的区别有哪些

    千次阅读 2014-08-16 13:13:58
     一、主键   主关键字(主键,primary key)是被挑选出来,作表的行的唯一标识的候选关键字。一个表只有一个主...主键是唯一的,所以创建了一个主键的同时,也就这个字段创建了一个唯一的索引, 唯一索引
    

    一、主键

     

    主关键字(主键,primary key)是被挑选出来,作表的行的唯一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。又称主码。并且它可以唯一确定表中的一行数据,或者可以唯一确定一个实体。

     

    主键是唯一的,所以创建了一个主键的同时,也就这个字段创建了一个唯一的索引, 唯一索引实际上就是要求指定的列中所有的数据必须不同。这个索引可以是聚集索引,也可以是非聚集索引。所以在一个(或一组)字段上有主键,只能说明他上面有个索引,但不一定就是聚集索引。如果不加NONCLUSTEREDCLUSTERED关键字,默认建的是聚集索引。




    二、聚集索引



    聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。



    聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节省成本。





    参考资料:    聚集索引和主键的区别   http://www.studyofnet.com/news/543.html


    展开全文
  • 本篇文章简单介绍一下聚集索引和主键的区别1主键的概念主关键字(主键,primary key)是被挑选出来,作表的行的唯一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以....

    表通常具有包含唯一标识表中每一行的值的一列或一组列,这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性。聚集索引是一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。本篇文章简单介绍一下聚集索引和主键的区别

    1

    主键的概念

    主关键字(主键,primary key)是被挑选出来,作表的行的唯一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。又称主码。并且它可以唯一确定表中的一行数据,或者可以唯一确定一个实体。

    主键是唯一的,所以创建了一个主键的同时,也就这个字段创建了一个唯一的索引, 唯一索引实际上就是要求指定的列中所有的数据必须不同。这个索引可以是聚集索引,也可以是非聚集索引。所以在一个(或一组)字段上有主键,只能说明他上面有个索引,但不一定就是聚集索引。如果不加NONCLUSTERED和CLUSTERED关键字,默认建的是聚集索引。

    1、主键一唯一索引的区别:

    (1)、一个表的主键只能有一个,而唯一索引可以建多个。(2)、主键可以作为其它表的外键。(3)、主键不可为null,唯一索引可以为null。

    2、主键的用途

    1)保证实体的完整性;

    2)加快数据库的操作速度;

    3)在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;

    4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

    2

    聚集索引

    聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。

    聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节省成本。

    1、索引的用途

    1、帮助检索数据;

    2、提高联接效率;

    3、节省ORDER BY、GROUP BY的时间;

    4、保证数据唯一性(仅限于唯一索引)。

    2、适用场景

    1、含有大量非重复值的列。

    2、使用BETWEEN,>,>=,

    3、被连续访问的列

    4、返回大型结果集的查询

    5、经常被使用连接或GROUP BY子句的查询访问的列

    6、聚集索引尽量建立在值不会发生变更的列上,否则会带来非聚集索引的维护

    3

    聚集索引和主键的区别

    主键

    聚集索引

    用途

    强制表的实体完整性

    对数据行的排序,方便查询用

    一个表多少个

    一个表最多一个主键

    一个表最多一个

    是否允许多个字段来定义

    可以

    可以

    是否允许 null 数据行出现

    如果要创建的数据列中数据存在null,无法建立主键。创建表时指定的 PRIMARY KEY 约束列隐式转换为 NOT NULL。

    没有限制建立聚集索引的列一定必须 not null .也就是可以列的数据是 null参看最后一项比较

    是否要求数据必须唯一

    要求数据必须唯一

    数据即可以唯一,也可以不唯一。看你定义这个索引的 UNIQUE 设置。

    创建的逻辑

    数据库在创建主键同时,会自动建立一个唯一索引。如果这个表之前没有聚集索引,同时建立主键时候没有强制指定使用非聚集索引,则建立主键时候,同时建立一个唯一的聚集索引

    如果未使用 UNIQUE 属性创建聚集索引,数据库引擎 将向表自动添加一个四字节 uniqueifier 列。必要时,数据库引擎 将向行自动添加一个 uniqueifier 值,使每个键唯一。此列和列值供内部使用,用户不能查看或访问。

    展开全文
  • 主键和数据库的区别

    2020-07-20 11:26:35
    会新创建一个索引表来记录一片数据信息,目的是为了查找快速,(但增删改会很慢,因为要在索引表里也增删改索引,每个数据变动两个表)索引表形式一般为(关键字,地址),关键字能唯一识别一个节点数据,(一个...

    1、主键
    不仅唯一,还只能有一列。
    主键ID,主键既是约束也是索引,同时也用于对象缓存的键值。

    2、索引
    会新创建一个索引表来记录一片数据的信息,目的是为了查找快速,(但增删改会很慢,因为要在索引表里也增删改索引,每个数据变动两个表)索引表的形式一般为(关键字,地址),关键字能唯一识别一个节点数据,(一个关键之识别一个节点数据是稠密索引,一个关键字识别一组节点数据的第一个,(因为这一组节点是用链表存储,可以这么干)那就是稀疏索引)。没错,就是数据库索引
    数据库创建索引相当于又创建了一张表

    问:给数据库表创建索引有什么缺点?(确实有缺点的)

    答:创建索引是为了,在数据量大的情况下,查询更快,但是在增删改数据情况下,不仅需要修改数据表,还要修改索引表,很耗时的。另外索引表也占据内存空间。

    问:创建一个带有索引的表。

    答:CREAT TABLE table_name (id INT, name varchar(125)) UNIQUE [iname] name; (注意创建表时varchar类型必须指定长度,这是该字段的最长长度,不是占用这么长的内存)

    展开全文
  • 文章目录Java进阶 主键和外键使用区别一、主外键定义二、主外键用法&意义三、如何创建外键 Java进阶 主键和外键使用区别 一、主外键定义 主键,primary key:是被挑选出来,作表惟一标识候选关键字,一...

    Java进阶 主键和外键的使用区别

    一、主外键定义

    主键,primary key:是被挑选出来,作表的惟一标识的候选关键字,一个表只有一个主键。比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。注意,主键可以是一个字段,也可以是多个字段组合成的多字段联合主键,看下面这个例子:

    #将name和deptId字段组合成为表temp的多字段组合主键
    CREATE TABLE temp
    (
        name VARCHAR(32),
        deptId INT,
        salary FLOAT,
        PRIMARY KEY(name,deptId)
    )
    

    外键:外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

    二、主外键用法&意义

    在以后我们统一将外部关键字叫做外键,外键就是另一张表中的主键

    问:外键有啥用啊?
    答:外键的主要作用就是保持数据的一致性,完整性。

    再问:怎么保证的呢?
    答:看下图。

    Student:\textcolor{RedOrange}{表Student:}

    stuId name classId
    1 张三 1
    2 李四 2

    Class:\textcolor{RedOrange}{表Class:}

    calssId className
    1 计算机1班
    2 计算机2班

    看上图有两张表,classIdStudent的外键,是Class 表的主键, 如果我们要删除Class 表中classId1的字段,程序是会报错的,因为Student表中有数据和classId1的字段关联了,是不能删除的,这样子就保证了数据的一致性和完整性

    继续问: 那怎么才能删除呢?
    答: 需要先删除Student表中classId为1的两个字段。

    三、如何创建外键

    在MySQL中给表中字段添加外键约束的语法规则如下:

    CONSTRAINT 外键名 FOREIGN KEY 字段名 REFERENCES 主表名(主键名)
    

    举个例子,现在有两张表,一张学生表,一张班级表,内容看上面的表:

    CREATE TABLE student
    (
        stuId INT PRIMARY KEY,
        name VARCHAR(22),
        classId INT,
        CONSTRAINT student_class_id FOREIGN KEY(classId) REFERENCES class(classId)
    );
    CREATE TABLE class
    (
        classId INT PRIMARY KEY,
        className VARCHAR(22)
    );
    
    展开全文
  • MySQL表中索引、主键和唯一性的区别

    千次阅读 2017-07-26 11:23:33
    PRIMARY 主键: 就是 唯一 且 不能为空。 INDEX 索引: 普通的 ...在建立主键的时候,系统会自动建立一个唯一性索引。在一张表中只能定义一个主键索引,使用关键字 PRIMARY KEY 来创建。 2.索引(INDEX ):
  • 首先我们知道MyISMInnoDB索引都是由B+树实现,但...但是辅助索引需要两次查询,因为辅助索引是以建索引字段为关键字索引到主键,所以需要两次,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大...
  • 普通索引(由关键字KEY或INDEX定义索引)唯一任务是加快对数据访问速度。普通索引允许被索引数据列包含重复值。如果能确定某个数据列将只包含彼此各不相同值,在为这个数据列创建索引时候就应该用关键字...
  • 主键、外键索引的区别主键外键索引定义:唯一标识一条记录,不能有重复的,不允许为空表的外键是另一表的主键,外键可以有重复的,可以是空值主索引(由关键字PRIMARY定义的索引),用于表的主键上,不可重复,不可...
  • 在数据库中,表与表连接是通过主外键来连接,一张表...内连接又分为显示内连接隐式内连接,区别在于有没有用join关键字。 隐式内连接(使用where实现) 现有如下两张表员工表(emp)部门表(dept): ...
  • count(*),count(1),count(主键),count(rowid)的区别如下: count(1)count(主键)效果类型, 这两个只扫描主键Index就可以得到数据。 count(ROWID)这也是只扫描Index的,效率高。 count(*)是扫描表的。 所以...
  • 最近在学习SQLServer时,发现里面有个主键的概念作用总是模糊不清,因此上网去搜索了一些主键的一些意义,加深一下理解 什么是主键 按照百度百科的定义,主键(primary key)是数据表中的一个或多个字段,其值用于...
  • 文章目录一、考点1、MySQL索引基础类型1)索引基础2)索引对性能影响3)索引使用场景4)索引类型常考题:唯一索引 与主键索引 当前区别是什么?2、延伸1)MySQL索引创建原则① 最适合索引列是出现在...
  • 首先我们知道MyISMInnoDB索引都是由B+树实现,但在索引管理数据方式上却有所...但是辅助索引需要两次查询,因为辅助索引是以建索引字段为关键字索引到主键,所以需要两次,先查询到主键,然后再通过主键查询...
  • zt: 主键和外键

    2012-02-22 16:47:02
    如果表A的主关键字是表B中的字段,则该字段称为表B的...这里以MySQL为例,总结一下3种外键约束方式的区别和联系。  这里以用户表用户组表为例,这是一个典型的多对一关系,多个用户对应于一个用户组。  首
  • 1、 字段类型对应。2、表名字段名长度,oracle不能超过30,mysql无这个限制。3、字段默认值问题。4、索引问题。5、自增字段问题。...7、语法问题结尾分号:双引号:大小写:关键字主键自增字段
  • 伪类伪元素的区别

    2019-04-08 10:45:06
    是一个以冒号:作为前缀,被添加到一个选择器末尾的关键字。 伪类 描述 :link 用来选中元素当中链接。它将会选中所有尚未访问链接。 :visited 表示用户已访问过链接。 :hover 滑过元素时,pc端指...
  • 常用存储引擎索引结构 ...非叶子节点存储都是关键字 假设我们以Col1为主键,则上图是一个MyISAM表主索引(Primary key)示意。可以看出MyISAM索引文件仅仅保存数据记录地址。 辅助索引: ...
  • 主键区别主键MySQL一般用自动增长型,Orcale没有自动增长型,主键 一般使用序列 单引号处理:MySQL里可以用双引号包起来字符串,ORA必须用单引号 翻页处理:MySQL limit关键字 开始位置,记录个数;Orcale用...
  • 仅从程序员开发角度...在实际中,一般会使用自己定义的主键,可以代表某些实际意义,上述可以作为物理主键,不具有任何实际意义。 2.分页处理: mysql在分页查询上相对比较容易,使用limit关键字,例如:selecct
  • MySqlOracle数据库明显区别 1、Oracle是大型数据库,而MySQL是中小型数据库。但是MySQL是开源,但是Oracle是收费,而且比较贵。 2、Oracle内存占有量非常大,而mysql非常小 3、MySQL支持主键自增长,指定...
  • 1.一个表只能有一个主索引-PRIMARY,且只有是数据库表才有主索引,后缀为.CDX,索引关键字是不可以重复的.哪怕是空记录也只可以有一条.2.候选索引可以有很多个,...主键与唯一索引的区别主键是一种约束,唯一索引是一...
  • mysql中关键字 key几个用法: ①、用在列定义中,表示主键,这里 key = primary key ②、用在create table 所有列定义后,这里key=index,表示索引 ③、用在create key中,key = index ④、用在alter table...
  • ◎ oraclemysql区别

    2021-04-15 09:27:30
    ◦ 1、大小:Oracle是大型数据库,而MySQL是中小型数据库。...◦ 5、分页:MySQL分页用limit关键字,而Oracle使用rownum字段表明位置,而且只能使用小于,不能使用大于。 ◦ 6、处理长字符串:Oracle
  • 返回参数:get 返回值是一个定义model对象,只有一条记录返回时候才正常,也就说明get查询字段必须是主键或者唯一约束字段。当返回多条记录或者是没有找到记录时候都会抛出异常. 2、filter 输入参数:...
  • (1)以公共关键字主键的表为主键表(父表,主表) (2)以公共关键字作外键的表为外键表(从表,外表) 外键的作用:保证数据的完整性一致性。 主键、外键索引的区别 CASCADE:级联 什么是级联操作: 在修改...
  • 分页关键字 方式不同 Oracle是rownum   还有一个区别 Mysql没有序列 但是可以使用默认递增 插入时候用default 代替主键   约束 constraints(oracle) constraint(mysql)     PD安装及使用...
  • MySQL问题简述

    2020-03-24 22:28:19
    目录 事务 事务的4大特性(ACID): 事务的隔离级别: 并发事务带来的问题: 数据库的索引 ...索引的底层实现原理优化 ...MyISAMInnoDB区别 ...主键、外键索引的区别? 对SQL语句优化有哪些方法?...
  • B+树MySQL

    2018-01-16 17:31:46
    在mysql数据库中,MyISAM引擎和InnoDB引擎的主键和索引都使用了B+树,但是二者对B+树使用略有区别,分别介绍如下。 注:B+树叶子节点包含关键字和数据部分,还有指向下一个兄弟叶子节点指针。非叶子节点只...
  • MySql的初学习 -- 第五章 -- 了解约束什么是约束主键约束主键约束的添加与删除主键的自增 与 修改自增初始值delete(DELETE)truncate(TRUNCATE)对自增长的影响非空约束唯一约束主键约束唯一约束的区别外键约束 ...
  • 主键、外键索引的区别? 主键外键索引定义:唯一标识一条记录,不能有重复的,不允许为空表的外键是另一表的主键, 外键可以有重复的, 可以是空值主索引(由关键字PRIMARY定义的索引),用于表的主键上,不可...

空空如也

空空如也

1 2 3 4 5
收藏数 99
精华内容 39
关键字:

关键字和主键的区别