前言: 作为一个非开发出身的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';

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

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

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

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

本文作者:JOHN

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

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

mysql主键和唯一索引_主键和唯一索引的区别相关推荐

  1. mysql主键和唯一索引_主键和唯一索引的有什么区别

    主键和唯一索引的区别 -- 区别 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的. 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键. 唯一性索引列允许空值,而主键列不允许为空值 ...

  2. mysql非主键索引_主键索引和非主键索引的区别

    1. 什么是最左前缀原则? 以下回答全部是基于MySQL的InnoDB引擎 例如对于下面这一张表 如果我们按照 name 字段来建立索引的话,采用B+树的结构,大概的索引结构如下 如果我们要进行模糊查 ...

  3. mysql非主键索引_主键索引和非主键索引解析

    1. 什么是最左前缀原则? 以下回答全部是基于MySQL的InnoDB引擎 例如对于下面这一张表 如果我们按照 name 字段来建立索引的话,采用B+树的结构,大概的索引结构如下 如果我们要进行模糊查 ...

  4. 主键主键外键和索引_主键和外键的目的/用途是什么?

    主键主键外键和索引 Primary and foreign keys are a way in which to constrain related data together to ensure d ...

  5. mysql主键被强制定义_主键约束用来强制数据的( )完整性。_学小易找答案

    [其它]上传excel实训3. [单选题]在一张表中可以创建_________个集聚索引. [单选题]日期时间型数据类型(datetime)的长度是( ). [其它]数据分析与函数练习表(控辍表).x ...

  6. mysql四种常用的索引_四种常见的索引类型

    主键索引:数据记录里面不能有 null,数据内容不能重复,在一张表里面不能有 多个主键索引. 普通索引:使用字段关键字建立的索引,主要是提高查询速度 唯一索引:字段数据是唯一的,数据内容里面能否为 n ...

  7. mysql 有外键 怎么插入数据_外键约束的表怎么插入数据

    有外键的情况应该先添加主表数据,再添加副表数据. 如:有以下两张表 班级表: CLASSID NAME 1 一班 2 二班 学生表: SID NAME CLASSID 1 张三 1 2 李四 1 3 ...

  8. mysql为什么添加索引_当我添加新索引时,为什么MySQL中索引的基数保持不变?

    如果表中只有1行,则索引的基数当然应为1.它只是计算唯一值的数量. 如果您将索引视为基于存储桶的查找表(如散列),则基数是存储桶的数量. 以下是它的工作原理:当您在一组列(a,b,c,d)上构建索引时 ...

  9. 创建二级索引_技术分享 | InnoDB 排序索引的构建

    原创: 管长龙 译 爱可生开源社区 3天前 作者:Satya Bodapati 从 MySQL 5.7 开始,开发人员改变了 InnoDB 构建二级索引的方式,采用自下而上的方法,而不是早期版本中自上 ...

  10. 怎样合理创建es索引_如何通过Elasticsearch创建索引库?

    今天是刘小爱自学Java的第158天. 感谢你的观看,谢谢你. 学习计划安排如下:Elasticsearch作为一门全文检索技术,那它是如何使用的呢? 先学习Elasticsearch的一些语法,后续 ...

最新文章

  1. 顶刊发文奖励100万!不唯论文后,这所中科院研究院的激励机制引发争议
  2. 查看git是否安装_Java程序员的必备Linux运维技能-安装git
  3. linux c dns查询IP地址
  4. 今天一看,自己发的文章原来这么多了。openeim
  5. 字节流相关操作,基本字节流的Copy文件
  6. 百度在线编辑器 代码高亮
  7. android仿qq空间、微信朋友圈图片展示
  8. 区块链 以太坊 虚拟机 opcode是什么
  9. 与孩子一起学编程06章
  10. Sequencher_v4.1.4 DNA 序列分析的工业标准软件
  11. 招聘笔试行测题之图形推理题解题思路汇总
  12. 什么是 ID Token
  13. 如何用云计算搭建服务器,如何搭建一个云服务器
  14. UIView Animation 动画学习总结
  15. 人工智能架构图和产业链构成
  16. 很有意思的几个考验知识广度的问题
  17. python遥控汽车玩具_分享 | 撞坏遥控车后,有个技术大牛爸爸是种怎样的体验
  18. verilog 实现32位加法器(超前进位)
  19. golang 格式化占位符相关
  20. 关于服务物料、费用物料、非库存物料和其他费用物料的理解和应用

热门文章

  1. Linux各个发行版镜像下载
  2. docker和k8s的常见命令
  3. 操作系统期末复习题库
  4. 里诺合同管理合同上传步骤_客户关系管理:合同
  5. 任何共享软件作者都能挣到一年10万美金以上的收入,只要他想的话
  6. linux设置双屏拼接_双屏、3屏拼接——A卡、N卡——Windows、Linux
  7. 用户界面之工具栏详解-AutoRunner自动化测试工具
  8. 计算机网络技术ui设计,UI设计小白到大神的进阶之路—入门基础篇
  9. HIKSDK/大华SDK协议视频融合平台EasyCVR移动侦测录像功能无法在后台显示优化过程
  10. 文本比较工具-文本去重复工具