唯一约束和唯一索引区别是什么_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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 什么是Load Average?

    什么是Load Average?运维工程师在日常运维中经常使用w、top、uptime等命令来查看系统当前运行的负载情况。那么作为运维工程师是如何通过以上命令来判断系统当前负载是否已经达到极限了呢?为此笔者总结了一下如何通过load

    2022年7月1日
    22
  • 安装tensorflow GPU版本–tensorflow-gpu版本与CUDA版本对应关系(持续更新,目前到TF2.7)「建议收藏」

    安装tensorflow GPU版本–tensorflow-gpu版本与CUDA版本对应关系(持续更新,目前到TF2.7)「建议收藏」一、WIndows安装GPU版本tensorflow注意一下几个问题一般就不会出错(1)确定自己要安装哪个版本的tensorflow-gpu;(1)根据自己要装的tensorflow-gpu版本确定要下载的CUDA版本;(2)根据要安装的CUDA版本确定要下载的Cudnn版本。二、tensorflow-gpu版本与CUDA版本对应关系不同版本的tensorflow-gpu与CUDA对应关…

    2022年5月16日
    556
  • c语言random函数在vc,C++ 中随机函数random函数的使用方法

    c语言random函数在vc,C++ 中随机函数random函数的使用方法C++中随机函数random函数的使用方法一、random函数不是ANSIC标准,不能在gcc,vc等编译器下编译通过。可改用C++下的rand函数来实现。1、C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。RAND_MAX必须至少为32767。rand()函数不接受参数,默认以1为种子(即起始值)。随机数生成器总是以相同的种子开始,所以形成…

    2022年6月4日
    44
  • azkaban配置依赖_azkaban安装

    azkaban配置依赖_azkaban安装1.下载Azkaban1.1登陆Azkaban的官网:https://azkaban.github.io/点击Downloads,如图示:1.2点击之后,在跳转的页面中选择Releases,进入页面选择相应的版本下载,这里选择的版本是3.70.0版本,点击“Sourcecode(tar.gz)”下载。1.3选择自己要下载的源码,下载2.环境准备2.1在安装之前要安装jdk,…

    2025年7月7日
    2
  • 启动hive出错,提示没有权限

    启动hive出错,提示没有权限

    2022年3月5日
    37
  • 使用FastJSON 对Map/JSON/String 进行互转[通俗易懂]

    使用FastJSON 对Map/JSON/String 进行互转[通俗易懂]Fastjson是一个Java语言编写的高性能功能完善的JSON库,由阿里巴巴公司团队开发的主要特性主要体现在以下几个方面:1.高性能fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocolbuf。2.功能强大支持各种JDK类型。包括基本类型、JavaBean、Collection、Ma

    2022年6月20日
    139

发表回复

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

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