mysql主键和唯一索引_主键和唯一索引的区别
前言: 作为一个非开发出身的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主键和唯一索引_主键和唯一索引的区别相关推荐
- mysql主键和唯一索引_主键和唯一索引的有什么区别
主键和唯一索引的区别 -- 区别 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的. 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键. 唯一性索引列允许空值,而主键列不允许为空值 ...
- mysql非主键索引_主键索引和非主键索引的区别
1. 什么是最左前缀原则? 以下回答全部是基于MySQL的InnoDB引擎 例如对于下面这一张表 如果我们按照 name 字段来建立索引的话,采用B+树的结构,大概的索引结构如下 如果我们要进行模糊查 ...
- mysql非主键索引_主键索引和非主键索引解析
1. 什么是最左前缀原则? 以下回答全部是基于MySQL的InnoDB引擎 例如对于下面这一张表 如果我们按照 name 字段来建立索引的话,采用B+树的结构,大概的索引结构如下 如果我们要进行模糊查 ...
- 主键主键外键和索引_主键和外键的目的/用途是什么?
主键主键外键和索引 Primary and foreign keys are a way in which to constrain related data together to ensure d ...
- mysql主键被强制定义_主键约束用来强制数据的( )完整性。_学小易找答案
[其它]上传excel实训3. [单选题]在一张表中可以创建_________个集聚索引. [单选题]日期时间型数据类型(datetime)的长度是( ). [其它]数据分析与函数练习表(控辍表).x ...
- mysql四种常用的索引_四种常见的索引类型
主键索引:数据记录里面不能有 null,数据内容不能重复,在一张表里面不能有 多个主键索引. 普通索引:使用字段关键字建立的索引,主要是提高查询速度 唯一索引:字段数据是唯一的,数据内容里面能否为 n ...
- mysql 有外键 怎么插入数据_外键约束的表怎么插入数据
有外键的情况应该先添加主表数据,再添加副表数据. 如:有以下两张表 班级表: CLASSID NAME 1 一班 2 二班 学生表: SID NAME CLASSID 1 张三 1 2 李四 1 3 ...
- mysql为什么添加索引_当我添加新索引时,为什么MySQL中索引的基数保持不变?
如果表中只有1行,则索引的基数当然应为1.它只是计算唯一值的数量. 如果您将索引视为基于存储桶的查找表(如散列),则基数是存储桶的数量. 以下是它的工作原理:当您在一组列(a,b,c,d)上构建索引时 ...
- 创建二级索引_技术分享 | InnoDB 排序索引的构建
原创: 管长龙 译 爱可生开源社区 3天前 作者:Satya Bodapati 从 MySQL 5.7 开始,开发人员改变了 InnoDB 构建二级索引的方式,采用自下而上的方法,而不是早期版本中自上 ...
- 怎样合理创建es索引_如何通过Elasticsearch创建索引库?
今天是刘小爱自学Java的第158天. 感谢你的观看,谢谢你. 学习计划安排如下:Elasticsearch作为一门全文检索技术,那它是如何使用的呢? 先学习Elasticsearch的一些语法,后续 ...
最新文章
- 顶刊发文奖励100万!不唯论文后,这所中科院研究院的激励机制引发争议
- 查看git是否安装_Java程序员的必备Linux运维技能-安装git
- linux c dns查询IP地址
- 今天一看,自己发的文章原来这么多了。openeim
- 字节流相关操作,基本字节流的Copy文件
- 百度在线编辑器 代码高亮
- android仿qq空间、微信朋友圈图片展示
- 区块链 以太坊 虚拟机 opcode是什么
- 与孩子一起学编程06章
- Sequencher_v4.1.4 DNA 序列分析的工业标准软件
- 招聘笔试行测题之图形推理题解题思路汇总
- 什么是 ID Token
- 如何用云计算搭建服务器,如何搭建一个云服务器
- UIView Animation 动画学习总结
- 人工智能架构图和产业链构成
- 很有意思的几个考验知识广度的问题
- python遥控汽车玩具_分享 | 撞坏遥控车后,有个技术大牛爸爸是种怎样的体验
- verilog 实现32位加法器(超前进位)
- golang 格式化占位符相关
- 关于服务物料、费用物料、非库存物料和其他费用物料的理解和应用