精华内容
下载资源
问答
  • 主键一定是唯一索引唯一索引并不一定主键主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。主键创建后一定包含一个唯一性索 引,唯一索引并不一定就是主键唯一索引列允许空值,而主键列...

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

    主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。主键创建后一定包含一个唯一性索 引,唯一性索引并不一定就是主键。唯一性索引列允许空值,而主键列不允许为空值。主键列在创建 时,已经默认为空值 + 唯一索引了。主键可以被其他表引用为外键,而唯一索引不能。一个表最多只能 创建一个主键,但可以创建多个唯一索引。主键更适合那些不容易更改的唯一标识,如自动递增列、身 份证号等。在 RBO 模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。

    Mysql常见索引有:主键索引、唯一索引、普通索引、全文索引、组合索引

    PRIMARY KEY(主键索引)  ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) UNIQUE(唯一索引)     ALTER TABLE `table_name` ADD UNIQUE (`column`)
    INDEX(普通索引)     ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) FULLTEXT(全文索引)      ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
    组合索引   ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` ) 

    Mysql各种索引区别:
    普通索引:最基本的索引,没有任何限制
    唯一索引:与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。
    主键索引:它 是一种特殊的唯一索引,不允许有空值。 
    全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文索引很耗时好空间。
    组合索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则。

    展开全文
  • 主键索引和唯一索引的区别

    千次阅读 2019-05-09 10:49:44
    主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 主键创建后一定包含一个唯一索引唯一索引并不一定就是主键唯一索引列允许空值,而主键列不允许为空值。 主键列在创建时,已经默认为空值 + ...

    主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。

    主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。

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

    主键列在创建时,已经默认为空值 + 唯一索引了。

    主键可以被其他表引用为外键,而唯一索引不能。

    一个表最多只能创建一个主键,但可以创建多个唯一索引。

    主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。

    约束有哪些?

    主键约束、外键约束、非空约束、检查约束(bentwen and  ,大于、小于、等于、不等于)、唯一约束、默认约束。

    展开全文
  • 总结,对于主键唯一索引约束: • 执行insertupdate时,会触发约束检查 • InnoDB违反约束时,会回滚对应SQL • MyISAM违反约束时,会中断对应的SQL,可能造成不符合预期的结果集 • 可以使用 insert … on ...
  • 主键索引和唯一索引的区别 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 唯一性索引列允许空值,而主键列不允许为空值。 主键...

    只有不断学习,才能进步,才能高薪!

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

    主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。
    
    主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。
    
    唯一性索引列允许空值,而主键列不允许为空值。
    
    主键列在创建时,已经默认为空值 + 唯一索引了。
    
    主键可以被其他表引用为外键,而唯一索引不能。
    
    一个表最多只能创建一个主键,但可以创建多个唯一索引。
    
    主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。
    
    在 RBO 模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。
    
     
    
    -- 创建一张仅包含主键和唯一索引的表
    
    CREATE TABLE test
    
    (PrimaryKey VARCHAR2(20),
    
      UniqueKey  VARCHAR2(20)
    
    );
    
    -- 分别创建主键和唯一索引,语法不同
    
    ALTER TABLE test ADD CONSTRAINT test_PrimaryKey PRIMARY KEY (PrimaryKey);
    
    CREATE UNIQUE INDEX test_UniqueKey ON test (UniqueKey);
    
    -- 在 USER_INDEXES 中可以看到两个索引名称
    
    SELECT table_name,table_type,index_name,index_type,uniqueness
    
      FROM USER_INDEXES
    
      WHERE TABLE_NAME='TEST';
    
     
    
     
    
    -- 在 USER_IND_COLUMNS 中可以看到两个索引字段名称
    
    SELECT table_name,index_name,column_name,column_position
    
      FROM USER_IND_COLUMNS
    
      WHERE TABLE_NAME='TEST';
    
     
    
    -- 在 USER_CONSTRAINTS 仅可以看到主键约束名称
    
    SELECT table_name,constraint_name,constraint_type
    
      FROM USER_CONSTRAINTS
    
      WHERE TABLE_NAME='TEST';
    
     
    
     
    
    -- 在 USER_CONS_COLUMNS 仅可以看到主键约束字段名称
    
    SELECT table_name,constraint_name,column_name,position
    
      FROM USER_CONS_COLUMNS
    
      WHERE CONSTRAINT_NAME IN (SELECT CONSTRAINT_NAME
    
                                 FROM USER_CONSTRAINTS
    
                                 WHERE TABLE_NAME='TEST');
    
     
    
     
    
    -- 为唯一索引增加一个非空约束
    
    ALTER TABLE test MODIFY UniqueKey NOT NULL;
    
     
    
    -- 在 USER_CONSTRAINTS 仅可以看到主键约束名称和非空约束名称
    
    SELECT table_name,constraint_name,constraint_type
    
      FROM USER_CONSTRAINTS
    
      WHERE TABLE_NAME='TEST'
    
     
    
    -- 在 USER_CONS_COLUMNS 仅可以看到主键约束字段名称和非空约束字段名称
    
    SELECT table_name,constraint_name,column_name,position
    
      FROM USER_CONS_COLUMNS
    
      WHERE CONSTRAINT_NAME IN (SELECT CONSTRAINT_NAME
    
                                 FROM USER_CONSTRAINTS
    
                                WHERE TABLE_NAME='TEST')
    
    展开全文
  • MySQL索引之主键索引

    2020-12-15 16:43:01
    主键索引,简称主键,原文是PRIMARY KEY,由一个或多个列组成,用于唯一性标识数据表中的某一条记录。一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。 在MySQL中,InnoDB数据表的主键设计我们...
  • 主键和唯一索引的区别

    千次阅读 2021-01-18 19:21:09
    前言:作为一个非开发出身的DBA刚开始对数据库的主键、外键等一系列的词很是困惑,到后面对主键(primary key)和唯一索引(Unique Index)又迷糊了很久,后面终于陆续整理清楚了,总结和大家分享下;一、相似之处创建...

    前言: 作为一个非开发出身的DBA刚开始对数据库的主键、外键等一系列的词很是困惑,到后面对主键(primary key)和唯一索引(Unique Index)又迷糊了很久,后面终于陆续整理清楚了,总结和大家分享下;

    一、相似之处创建主键的同时会创建一个唯一索引;

    二、区别主键是一种约束,目的是对这个表的某一列进行限制;

    唯一索引是一种索引,索引是数据库表的一个冗余结构,目的是为了更好的查询;

    主键列不允许为空值,而唯一性索引列允许空值;

    一个表最多只能一个主键,但是可以包含多个唯一索引;

    三、测试

    测试步骤:

    3.1 创建一个表

    脚本:create table john as select * from dba_objects where 1=0;(拷贝表的结构)

    3.2 创建主键,检查是否产生唯一索引和约束

    脚本:ALTER TABLE john ADD CONSTRAINT john_PrimaryKey PRIMARY KEY (object_id);   CREATE UNIQUE INDEX john_UniqueKey ON john  (owner);

    查找语句:

    SELECT table_name,table_type,index_name,index_type,uniqueness

    FROM DBA_INDEXES

    WHERE TABLE_NAME='JOHN';

    43dc03dcdf25fc83bb79904c5283028b.png

    3.3 测试再创建唯一索引和主键

    ALTER TABLE john ADD CONSTRAINT john_PrimaryKey_2 PRIMARY KEY (namespace); ---会报错误ORA-02260: 表只能具有一个主键

    CREATE UNIQUE INDEX john_UniqueKey_2 ON john  (timestamp); -----可以创建

    d3dd70a99a77ea08f4fc395fa62d9a29.png

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    本文作者:JOHN

    ORACLE技术博客:ORACLE 猎人笔记               数据库技术群:367875324 (请备注ORACLE管理 )

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    展开全文
  • 主键和复合主键 一个表中可以存在一个主键或者多个主键,都...主键索引和唯一索引 相同点:都起到了约束数据记录唯一性的作用 不同点: 主键是一种约束,而唯一索引是索引,他们本质不一样 主键创建之后一定包含着...
  • 主键索引 主键索引就是聚簇索引,每张表有且只能有一个主键,可以由一个或多个字段组成。 主键索引的三个条件:1.主键键值必须是唯一2.不能含有null值3.保证主键是自增的 自增列作主键可以使写入的顺序也是自增的,...
  • 浅谈主键索引唯一索引

    千次阅读 2017-11-16 18:57:38
    主键索引唯一索引 一、主键索引定义 主键索引唯一索引的特殊类型。 数据库表通常有一列或列组合,其值用来唯一标识表中的每一行。该列称为表的主键。 在数据库关系图中为表定义一个主键将自动创建主键索引,...
  • 主键索引主键索引不可以为空 主键索引可以做外键 一张表中只能有一个主键索引 普通索引: 用来加速数据访问速度而建立的索引。多建立在经常出现在查询条件的字段经常用于排序的字段。 被索引的数据列允许...
  • mysql 主键和唯一索引的区别

    千次阅读 2019-10-23 21:02:02
    主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。...主键和唯一索引都可以有多列。 主键更适合那些不容易更改的唯一标识...
  • MySQL提供多种索引类型供选择:普通索引 、唯一性索引、主键索引 、全文索引等等。下面本篇文章就来给大家介绍一下主键索引和普通索引之间的区别 ,希望对你们有所帮助。普通索引普通索引是最基本的索引类型,而且它...
  • 普通索引:最基本的索引,没有任何限制 唯一索引:与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。 主键索引:它 是一种特殊...Mysql常见索引有:主键索引唯一索引、普通索引、全文...
  • 普通索引 最基本的索引,没有任何限制 mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) -- 在索引上添加mul mysql&...
  • Mysql索引概念: 说说Mysql索引,看到一个很少比如:索引就好比一本书的...Mysql索引主要有两种结构:B+树hash. hash:hsah索引在mysql比较少用,他以把数据的索引以hash形式组织起来,因此当查找某一条记录的时候,...
  • 索引分为聚簇索引和非聚簇索引两种,聚簇索引 是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。 根据数据库的功能,可以在数据库...
  • 简单描述MySQL中,索引主键唯一索引,联合索引 的区别,对数据库的性能有什么影响 索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们 包含着对数据表里所有记录的引用指针。 普通索引...
  • 下面分别介绍一下主键索引唯一索引,普通索引 2、主键索引 它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候指定了主键,就会创建主键索引, CREATE INDEX不能用来创建主键索引,使用 ALTER TABLE来代替...
  • 1、概念 1)、查看索引 show index from 数据库表名 2)、alter table 数据库表...1)、PRIMARY KEY(主键索引) ALTER TABLE table_name ADD PRIMARY KEY ( column ) 2)、UNIQUE(唯一索引) ALTER TABLE table...
  • Mysql主键索引唯一索引、普通索引、全文索引、组合索引的区别
  • 主键索引:唯一切不为null;聚合索引(可以通过索引找到需要的数据) 普通索引:不唯一也可为null;非聚合索引(可以查到记录对应的主键值,再使用主键的值通过索引找到需要的数据) 唯一索引:唯一可为null;唯一...
  • 主键和唯一索引都要求值唯一,但是它们还是有区别的: ①.主键是一种约束,唯一索引是一种索引; ②.一张表只能有一个主键,但可以创建多个唯一索引; ③.主键创建后一定包含一个唯一索引,唯一索引并一定是主键...
  • B树与红黑树最广泛的应用就是数据库索引,熟练使用索引是程序员最重要的基本功之一。索引的数据结构可以是树,也可以是哈希表。常用的数据库都是树结构的索引,本篇的背景也全部以树结构的索引为前提。本文旨在梳理...
  • 主键索引:指的就是主键,主键没有明确的概念定义,主键既是约束,也是索引,主键是索引的一种,是唯一索引的特殊类型。创建主键的时候,数据库默认会为主键创建一个唯一索引。自增主键:字段类型为数字、自增、并且...
  • 普通索引:index仅仅是加快查询速度主键索引:primary key不能重复,主键至多只有一个唯一索引:unique index行上的值不能重复全文索引:fulltext index建立索引alter table buy add index index1(sum);alter table ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 285,614
精华内容 114,245
关键字:

主键索引和唯一索引