唯一约束和唯一索引区别是什么_db2违反唯一索引的约束

唯一约束和唯一索引区别是什么_db2违反唯一索引的约束1.主键约束(PRIMARY KEY)1)主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。2)是不可能(或很难)更新.3)主键列上没有任何两行具有相同值(即重复值),不允许空(NULL).4)主健可作外健,唯一索引不可;2.唯一性约束(UNIQUE)1)唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1.主键约束(PRIMARY KEY)

   
   
   
  1. 1) 主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。
  2. 2) 是不可能(或很难)更新.
  3. 3) 主键列上没有任何两行具有相同值(即重复值),不允许空(NULL).
  4. 4) 主健可作外健,唯一索引不可;


2.唯一性约束(UNIQUE)

   
   
   
  1. 1) 唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,
  2. 一个表上可以放置多个唯一性约束.
  3. 2) 只要唯一就可以更新.
  4. 3) 即表中任意两行在 指定列上都不允许有相同的值,允许空(NULL).
  5. 4) 一个表上可以放置多个唯一性约束



3.唯一索引(INDEX)

   
   
   
  1. 创建唯一索引可以确保任何生成重复键值的尝试都会失败。
  2. 唯一性约束和主键约束的区别:
  3. (1).唯一性约束允许在该列上存在NULL值,而主键约束的限制更为严格,
  4. 不但不允许有重复,而且也不允许有空值。
  5. (2).在创建唯一性约束和主键约束时可以创建聚集索引和非聚集索引,
  6. 但在默认情况下主键约束产生聚集索引,而唯一性约束产生非聚集索引


   约束和索引, 前者是用来检查数据的正确性,后者用来实现数据查询的优化,目的不同。


   唯一性约束与唯一索引有所不同:

   
   
   
  1. (1).创建唯一约束会在Oracle中创建一个Constraint,同时也会创建一个该约束对应的唯一索引。
  2. (2).创建唯一索引只会创建一个唯一索引,不会创建Constraint。
  3. 也就是说其实唯一约束是通过创建唯一索引来实现的。

    
    
    
  1. 1. 建表时加上唯一性约束
  2.         
            
            
    1. CREATE TABLE `t_user` (
    2. `Id` int(11) NOT NULL AUTO_INCREMENT, -- 自增
    3. `username` varchar(18) NOT NULL unique, -- 唯一性约束
    4. `password` varchar(18) NOT NULL,
    5. PRIMARY KEY (`Id`)
    6. ) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=utf8;


  3. 2.给已经建好的表加上唯一性约束
  4.         
            
            
    1. ALTER TABLE `t_user` ADD unique(`username`);



 在删除时这两者也有一定的区别:

   
   
   
  1. 删除唯一约束时可以只删除约束而不删除对应的索引,所以对应的列还是必须唯一的,
  2. 而删除了唯一索引的话就可以插入不唯一的值。

    
    
    
  1. 索引是使用 create/drop index 创建和删除的
  2. 而约束是使用 alter table tb add constraint 建立, 使用 drop constraint 删除




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192688.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • goland 激活码 2021.8_在线激活

    (goland 激活码 2021.8)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S32PGH0SQB-eyJsaWNlbnNlSWQiOi…

    2022年3月25日
  • java http协议_java编写协议

    java http协议_java编写协议前面一篇博客里面已经介绍过SSDP协议原理,本篇博客将实现实现Android上的SSDP协议。关键技术分析:1、发送广播;须要发送送广播,所以须要使用MulticastSocket、SocketAddress、InetAddress,须要掌握。2、SSDP数据报格式;标准的SSDPServer解析的时候对于分段的字段选用的特征码是”\r\n”,须要特别注意。3、訪问权限;须要互联网,要在Main…

    2022年10月11日
  • IT牛人博客聚合 – Linode日本东京机房速度飞快 编程牛人 技术牛人

    IT牛人博客聚合 – Linode日本东京机房速度飞快 编程牛人 技术牛人为了应对亚太地域快速增加的需求,Linode起头把机房建在亚洲了!第一个Linode亚洲机房选择在日本东京.我测了下,速度比本来在美国加州快多了,应当首要得益于收集延时的削减.所以,我当即开了张SupportTicket将我的VPS迁到了日本.迁完以后,拜候速度飞快!和原来在国内某机房没有感受上的区分.大师可以反馈下你会见的速度是不是有晋升?注:Lino

    2022年7月12日
  • pytest parametrize fixture_reno参数

    pytest parametrize fixture_reno参数前言当某个接口中的一个字段,里面规定的范围为1-5,你5个数字都要单独写一条测试用例,就太麻烦了,这个时候可以使用pytest.mark.parametrize装饰器可以实现测试用例参数化。官方示

    2022年7月30日
  • Stm32的GPIO驱动继电器[通俗易懂]

    Stm32的GPIO驱动继电器[通俗易懂]三极管三极管S8050-D:直插的字体面向自己从左到右依次是发射极E,基极B,集电极C类型:NPN集电极耗散功率Pc:0.625W(贴片:0.3W)集电极电流Ic:0.5A集电极-基极电压Vcbo:40V集电极-发射极电压Vceo:25V集电极-发射极饱和电压Vce(sat):0.6V特征频率f:最小150MHz按三极管后缀号分为BCD档贴片为LH档放大倍数:B85-160C120-200D160-300L100-200H200-350上图中,左边的GPIO

    2022年6月24日
  • rammap使用_查看内存的命令

    rammap使用_查看内存的命令参考TechnetProcessPrivate:分配给单一Process专用的内存MappedFile:用来储放档案内容快取(Cache)的内存空间SharedMemory:标注给多个Process共用的内存分页(Page,内存管理单位)PageTable:用来描述虚拟内存位址的分页表(裡面是一笔一笔的PTE,PageTableEntries)PagedPool…

    2022年10月23日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号