精华内容
下载资源
问答
  • 主键和唯一索引的区别
    千次阅读
    2019-03-06 15:06:02

    1.主键为一种约束,唯一索引为一种索引,本质上就不同;

    2.主键创建后一定包含唯一性索引,而唯一索引不一定就是主键;

    3.主键不允许空值,唯一索引可以为空;

    4.主键可以被其他表引用,而唯一索引不可以;

    5.一个表最多只能创建一个主键,而可以创建多个唯一索引;

    6.主键和索引都是键,主键是逻辑键,索引为物理键,即主键不实际存在。

    更多相关内容
  • 主键和唯一索引都要求值唯一,但是它们还是有区别的: 主键是一种约束,唯一索引是一种索引 一张表只能有一个主键,但可以创建多个唯一索引 主键创建后一定包含一个唯一索引唯一索引并一定是主键 主键不能为...

    一、区别

    主键和唯一索引都要求值唯一,但是它们还是有区别的:

    1. 主键是一种约束,唯一索引是一种索引
    2. 一张表只能有一个主键,但可以创建多个唯一索引
    3. 主键创建后一定包含一个唯一索引,唯一索引并一定是主键
    4. 主键不能为null,唯一索引可以为null
    5. 主键可以做为外键,唯一索引不行

    二、创建示例

    mysql> CREATE TABLE tb_emp4
        -> (
        -> id INT(11),
        -> name VARCHAR(25),
        -> deptId INT(11),
        -> salary FLOAT,
        -> PRIMARY KEY(id)
        -> );
    CREATE TABLE IF NOT EXISTS contacts (
        id INT AUTO_INCREMENT PRIMARY KEY,
        first_name VARCHAR(50) NOT NULL,
        last_name VARCHAR(50) NOT NULL,
        phone VARCHAR(15) NOT NULL,
        email VARCHAR(100) NOT NULL,
        UNIQUE KEY unique_email (email)
    ); 

    展开全文
  • 一、唯一索引: 一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率; 二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,...

    一、唯一索引:

    一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;

    二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。

     

    CREATE TABLE `redpacket_monitoring` (
        `id` INT(11) NOT NULL AUTO_INCREMENT,
        `redpacket_number` INT(11) NOT NULL COMMENT '每天红包数量',
        `readeridauthor` INT(11) NOT NULL COMMENT '送红包作者的readerid',
        `paystartdate` DATE NOT NULL COMMENT '充值开始时间',
        PRIMARY KEY (`id`),
        UNIQUE INDEX `redpacket` (`readeridauthor`, `paystartdate`)
    )  
    COMMENT='签约作者通过非文下评论的方式发红包的每日监控'
    COLLATE='gbk_chinese_ci'
    ENGINE=MyISAM;

    唯一索引: $sql = "/* " . __FILE__ . ",Line:" . __LINE__ . "*/" . "REPLACE INTO redpacket_monitoring (readeridauthor, paystartdate, redpacket_number)  VALUES({$value['readerid']}, '{$value['paystartdate']}', {$value['counts']})";

    即:当readeridauthor,paystartdate值相同时,redpacket_number发生变化,需要改变它,就可以把这两字段建立唯一索引。

    扩展: replace into 插入时1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。

     

     

     

     

    二、主键和唯一索引都要求值唯一,它们区别:

    ①.主键是一种约束,唯一索引是一种索引;
    ②.一张表只能有一个主键,但可以创建多个唯一索引;
    ③.主键创建后一定包含一个唯一索引,唯一索引并一定是主键;
    ④.主键不能为null,唯一索引可以为null;
    ⑤.主键可以做为外键,唯一索引不行;

    主键唯一,可作为外表外键。唯一索引主要是查询索引作用。

    CREATE TABLE `series` (
        `authorid` INT(11) NOT NULL DEFAULT '0',
        `seriesid` INT(11) NOT NULL AUTO_INCREMENT,
        `seriesname` VARCHAR(50) NOT NULL DEFAULT '',
        `seriesindex` INT(11) NOT NULL DEFAULT '0',
        `identity` TINYINT(2) NULL DEFAULT '0' COMMENT '是否是作者,0为作者,1为译者',
        PRIMARY KEY (`seriesid`),
        UNIQUE INDEX `authorid` (`authorid`, `seriesname`),
        INDEX `authorid_seriesindex` (`authorid`, `seriesindex`)
    )
    COMMENT='authorid=0,series=0表示“无所属系列”,不要删除'
    COLLATE='utf8_general_ci'
    ENGINE=InnoDB
    AUTO_INCREMENT=1061
    ;

    展开全文
  • 总结,对于主键唯一索引约束: • 执行insertupdate时,会触发约束检查 • InnoDB违反约束时,会回滚对应SQL • MyISAM违反约束时,会中断对应的SQL,可能造成不符合预期的结果集 • 可以使用 insert … on ...
  • 主键和唯一索引区别

    千次阅读 2018-08-14 09:39:40
    一 主键和唯一索引都要求值唯一,但是它们还是有区别的: ①.主键是一种约束,唯一索引是一种索引; ②.一张表只能有一个主键,但可以创建多个唯一索引; ③.主键创建后一定包含一个唯一索引唯一索引并一定是主键...

    一      主键和唯一索引都要求值唯一,但是它们还是有区别的:

    ①.主键是一种约束,唯一索引是一种索引;
    ②.一张表只能有一个主键,但可以创建多个唯一索引;
    ③.主键创建后一定包含一个唯一索引,唯一索引并一定是主键;
    ④.主键不能为null,唯一索引可以为null;
    ⑤.主键可以做为外键,唯一索引不行;

     

    二  主键约束比唯一索引约束严格,当没有设定主键时,非空唯一索引自动称为主键。对于主键和唯一索引的一些区别主要如下:

    1.主键不允许空值,唯一索引允许空值
    2.主键只允许一个,唯一索引允许多个
    3.主键产生唯一的聚集索引,唯一索引产生唯一的非聚集索引

    注:聚集索引确定表中数据的物理顺序,所以是主键是唯一的(聚集就是整理数据的意思)

    展开全文
  • 1.主键是一种约束,唯一索引是一种索引,两者在本质上是不同的;2.一张表只能有一个主键,但可以创建多个唯一索引;3.主键创建后一定包含一个唯一索引唯一索引并一定是主键;4.主键不能为null,唯一索引可以为null...
  • 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。主键创建后一定包含一个唯一性索引,唯一性索引并不...主键和唯一索引都可以有多列。主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。...
  • MySQL主键索引和唯一索引区别 什么是最左前缀原则? 以下回答全部是基于MySQL的InnoDB引擎 例如对于下面这一张表 如果我们按照 name 字段来建立索引的话,采用B+树的结构,大概的索引结构如下 如果我们要进行...
  • 一般,我们看到术语“索引”“键”交换使用,但实际上这两个是不同的。...推荐阅读:接下来我们看看数据库中的主键约束、唯一键约束和唯一索引区别。SQL> select * from v$version;BANNER----------------...
  • 主键是一种约束,唯一索引是...主键和唯一索引都可以有多列。 主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。 在 RBO 模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。 ...
  • 主键和唯一约束都要求字段值唯一,除此外,它们还有如下区别: ·同一张表只能有一个主键,但能有多个唯一约束; ·主键字段值不能为NULL,唯一约束字段值可以为NULL; ·主键字段可以做为其他表的外键,唯一约束...
  • 主键和唯一索引都要求值唯一,但是它们还是有区别的: ①.主键是一种约束,唯一索引是一种索引; ②.一张表只能有一个主键,但可以创建多个唯一索引; ③.主键创建后一定包含一个唯一索引唯一索引并一定是主键...
  • 主键是一种约束; 唯一索引是一种索引 主键创建后一定包含一个唯一索引;但唯一索引不一定是主键 主键不允许空值;唯一索引允许
  • 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。主键索引:数据库表经常有一列或列组合,其值唯一标识表中的每一行。该列称为表的主键。在数据库关系图中为表定义主键将自动创建主键索引,主键索引是...
  • 数据库中主键和唯一索引区别

    千次阅读 2018-07-28 16:51:33
    1.主键为一种约束,唯一索引为一种索引,本质上就不同。 2.主键在表中只能有一个,唯一索引可以有多个。 3.主键创建后一定包含唯一性索引,而唯一索引不一定就是主键。 4.主键不能为null,唯一索引可以为null. 5....
  • 唯一约束和唯一索引区别: 唯一约束和唯一索引在 MySQL 数据库里区别: 概念上不同,约束是为了保证数据的完整性,索引是为了辅助查询; 创建唯一约束时,会自动的创建唯一索引;在理论上,不一样,在实际使用时,...
  • 主键和唯一索引

    2019-04-30 10:02:12
    主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 唯一性索引列允许空值,而主键列不允许为空值。 主键列在创建时,已经默认为空值 + ...
  • 索引是一种特殊的文件(InnoDB数据表上的...如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。也就是说,唯一索引可以保证数据记录的唯一...
  • 主键与索引的区别如下: 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 主键创建后一定包含一个...主键和唯一索引区别 二、区别 主键是一种约束,目的是对这个表的某一列进行限制; 唯一索引是一种
  • SQL索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录 开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个...
  • 下面是主键和索引的一些区别与联系。 1. 主键一定是唯一索引唯一索引并不一定就是主键。 所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一...
  • 简单描述MySQL中,索引,主键唯一索引,联合索引 的区别,对数据库的性能有什么影响 索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们 包含着对数据表里所有记录的引用指针。 普通索引...
  • 主键索引和唯一索引区别

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 191,103
精华内容 76,441
关键字:

主键和唯一索引的区别